mql5 high[] in Variable übernehmen

 

Hallo Aktien-Freaks,

kann mir jemand helfen? Ich möchte in OnCalculate die Variable high[] in eine Variable "schieben". 

Folgendes funktioniert:

if (rates_total < 30) return(rates_total);
for(int i=pos;i<rates_total && !IsStopped();i++)

  {     
     int test;
     double diff;
     test = i;
     diff = high[test];
  }


Folgendes funktioniert NICHT:

if (rates_total < 30) return(rates_total);
for(int i=pos;i<rates_total && !IsStopped();i++)

  {     
     int test;
     double diff;
     test = i-1;
     diff = high[test];
  }

Folgende Fehlermeldung kommt: array out of range

Printf( "high: " + string(high[test] )       funktioniert!
Es gibt für high[test] einen Wert, nur wenn ich ihn in diff "schieben" will klappt es nicht.

Ich möchte den Inhalt von high[test] NICHT in einen Array "schieben".

Wie mache ich es richtig?

Vielen Dank für eine Antwort!

Welche Überprüfungen der Handelsroboter vor der Veröffentlichung in Market bestehen soll
Welche Überprüfungen der Handelsroboter vor der Veröffentlichung in Market bestehen soll
  • www.mql5.com
Alle Markets Produkte vor der Veröffentlichung bestehen eine obligatorische vorläufige Überprüfung, da ein kleiner Fehler in der Logik des EAs oder des Indikators zu den Verlusten auf dem Handelskonto führen kann. Gerade deshalb von uns wurde eine Serie der grundlegenden Überprüfungen entwickelt, die das notwendige Niveau der Qualität der...
 

array out of range heißt der Index größer oder kleiner als die Arraygröße ( 0..(size-1)).

Prüf die Werte für test mit dem Debugger.

Welche Überprüfungen der Handelsroboter vor der Veröffentlichung in Market bestehen soll
Welche Überprüfungen der Handelsroboter vor der Veröffentlichung in Market bestehen soll
  • www.mql5.com
Alle Markets Produkte vor der Veröffentlichung bestehen eine obligatorische vorläufige Überprüfung, da ein kleiner Fehler in der Logik des EAs oder des Indikators zu den Verlusten auf dem Handelskonto führen kann. Gerade deshalb von uns wurde eine Serie der grundlegenden Überprüfungen entwickelt, die das notwendige Niveau der Qualität der...
 

Danke für die Antwort, leider ist es nicht so einfach. Per Printf kann der Wert von high[test] erfolgreich und richtig ausgelesen werden. Das Problem entsteht, wenn man diesen Wert in eine Variable schreiben möchte.

Der Debugger hilft leider nicht. Der Wert = "test" im Array ist okay. 

funktioniert:test = i;

     diff = high[test];

 
arrakis303:

Danke für die Antwort, leider ist es nicht so einfach. Per Printf kann der Wert von high[test] erfolgreich und richtig ausgelesen werden. Das Problem entsteht, wenn man diesen Wert in eine Variable schreiben möchte.

Der Debugger hilft leider nicht. Der Wert = "test" im Array ist okay. 

funktioniert:test = i;

     diff = high[test];

I-1 ist irgendwann -1, spätestens bei 0, was soll er da tun?

 
arrakis303:

Danke für die Antwort, leider ist es nicht so einfach. Per Printf kann der Wert von high[test] erfolgreich und richtig ausgelesen werden. Das Problem entsteht, wenn man diesen Wert in eine Variable schreiben möchte.

Der Debugger hilft leider nicht. Der Wert = "test" im Array ist okay. 

funktioniert:test = i;

     diff = high[test];

Die Frage ist, bei welchem Wert i startet. Also was ist der Wert von pos? Falls dieser <= 0 ist, bzw. sein kann, wäre ein Laufzeitfehler vorprogrammiert.
 

arrakis303:


Der Debugger hilft leider nicht.

Da muss man schon schmunzeln.


Fehlermeldung = eindeutig

Tipp vom Carl = Ja, der weiß eine Kleinigkeit wird ignoriert

 

Ich gebe mich geschlagen, sorry, ich habe die Thematik "Ermittlung Wert Pos in Verbindung mit Durchlauf bis zum aktuellen Punkt und wie gehts dann Balken für Balken weiter" nicht komplett durchschaut.

Mein Problem hat sich gelöst. Danke für Eure Kommentare und Hilfe!

Natürlich ist der Debugger wichtig, keine Frage. Ich hatte den Eindruck, dass er in dieser Angelegenheit nicht hilft. Ich hatte mich "verrannt".

 
arrakis303:

Ich gebe mich geschlagen, sorry, ich habe die Thematik "Ermittlung Wert Pos in Verbindung mit Durchlauf bis zum aktuellen Punkt und wie gehts dann Balken für Balken weiter" nicht komplett durchschaut.

Mein Problem hat sich gelöst. Danke für Eure Kommentare und Hilfe!

Natürlich ist der Debugger wichtig, keine Frage. Ich hatte den Eindruck, dass er in dieser Angelegenheit nicht hilft. Ich hatte mich "verrannt".

So viel Ehrlichkeit sieht man hier  sehr selten.

👍

Grund der Beschwerde: