Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   letzten RSI werten überprüfen (http://www.expert-advisor.com/forum/showthread.php?t=6874)

Gaydon 29.12.20 21:50

letzten RSI werten überprüfen
 
Hallo, da ich mir jetzt schon eine Weile meinen Kopfzerbreche und keine Lösung finde und auf dem Holzweg bin und anscheinend niemand ein ähnliches Problem hatte, bin ich nun hier.
Mein Problem ist, ich möchte wissen war der RSI in der 5Minuten Periode in den letzten 120, 5minuten Kerzen, über 70 oder unter 30. Ich dachte das geht über den shift wert der mir ja diese Info gibt aber Folgendes.

void OnTick()
{
double RSI0 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,0);
double RSI1 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,1);
double RSI2 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,2);
double RSI3 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,3);
double RSI4 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,4);
double RSI5 = iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,5);
Comment("RSI 0=",RSI0, "\n",
"RSI 1=",RSI1, "\n",
"RSI 2=",RSI2, "\n",
"RSI 3=",RSI3, "\n",
"RSI 4=",RSI4, "\n",
"RSI 5=",RSI5);
}

so habe ich mir das gedacht aber das muss doch auch einfacher gehen und nicht das ich 120 abfragen dieser Art mache.?
Ich dachte es würde mit einem Array gehen aber das habe ich nicht hinbekommen.

Vielen Dank für eure Hilfe

traderdoc 30.12.20 10:38

Code:

bool flag = false;
for (int i = 1; i <= 120; i++) {
  if (iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,i)  > 70 ||
      iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,i)  < 30)) {
      flag = true;
      break;
  }
}
if (flag) {
  //action!
}

traderdoc

Gaydon 30.12.20 20:22

Ohh, mein Gott wie einfach, vielen Dank für die Antwort.
Ich hatte mich total daran fest gemacht, dass ich mir auch den Passenden Shiftwert anzeigen lassen wollte, obwohl das ich überhaupt nicht nötig ist.
vielen Dank.

Gaydon 04.01.21 20:58

Kannst du mir auch Sagen warum das im Testmodus einzeln funktioniert aber so zusammen eben nicht?

void OnTick()
{
for (int i5=0; i5 <= 36; i5++)
for (int i1=0; i1 <=180; i1++)
{
if (iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,i5)>=70&&iR SI(_Symbol,PERIOD_M1,14,PRICE_CLOSE,i1)>=70)
Comment("RSI ist größer 70");
}

traderdoc 05.01.21 10:30

Zitat:

Zitat von Gaydon (Beitrag 44913)
Kannst du mir auch Sagen warum das im Testmodus einzeln funktioniert aber so zusammen eben nicht?

void OnTick()
{
for (int i5=0; i5 <= 36; i5++)
for (int i1=0; i1 <=180; i1++)
{
if (iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,i5)>=70&&iR SI(_Symbol,PERIOD_M1,14,PRICE_CLOSE,i1)>=70)
Comment("RSI ist größer 70");
}

Als erstes mal bitte angewöhnen, den Code über das Icon # zu schreiben.
Das ist einfach dann viel übersichtlicher.
Also
Code:

for (int i5=0; i5 <= 36; i5++) {
  for (int i1=0; i1 <=180; i1++) {
      if (iRSI(_Symbol,PERIOD_M5,14,PRICE_CLOSE,i5)>=70 && iRSI(_Symbol,PERIOD_M1,14,PRICE_CLOSE,i1)>=70)
        Comment("RSI ist größer 70");
  }
}

Was soll an dieser verschachtelten Schleife nicht funktionieren?
Wichtig ist immer nur, dass in den jeweiligen TimeFrames auch, wie in dem Fall, 36 bzw. 180 Kerzen-Werte in der Historie vorhanden sind.

traderdoc

Gaydon 24.01.21 11:57

Tut mir leid das ich so lange nicht geantwortet habe, es war ein Einstellungsfehler im Tester.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:23 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum