- Willst Du die Indices oder die Preise der high2 speichern? Was brauchst Du im Weiteren?
- Wenn es ein neues High gibt, das Du speichern willst, würde ich 'verschieben':
static double hi[3] = {0., 0., 0.}; .. if (/* new high*/ ) { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = bp[i-1]; }
ich möchte die Indizes speichern, die Preise sind nicht wichtig.
Gemäß deinem Ansatz:
if(bp[i-1] > bp[i] && bp[i-1] > bp[i-2]) // if new high? { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = 1 ; } if(isNewBar()) { hi[0]++; //first high hi[1]++; //second high hi[2]++; //third high }
habe ich
static double hi[3] = {0., 0., 0.};
global definiert. Leider wird das hi[] die ganze zeit mit dem Indice des neuesten Highs befüllt...
zwar entspricht das hi[0] tatsächlich dem 14. Index, aber die andern werden einfach mit demselben Wert gefüllt und ich kann mir das nicht erklären...
ich möchte die Indizes speichern, die Preise sind nicht wichtig.
Gemäß deinem Ansatz:
habe ich
global definiert. Leider wird das hi[] die ganze zeit mit dem Indice des neuesten Highs befüllt...
zwar entspricht das hi[0] tatsächlich dem 14. Index, aber die andern werden einfach mit demselben Wert gefüllt und ich kann mir das nicht erklären...
Die Indices ändern sich laufen, was ist wenn Du die Eröffnungszeit der Bar speicherst?
static datetime hi[3] = {0, 0, 0}; .. if (/* new high*/ ) { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = time[i-1]; }
Die Indices ändern sich laufen, was ist wenn Du die Eröffnungszeit der Bar speicherst?
ich dachte eben, dass ich die Änderungen der Indices mit der Funktion einbeziehen kann:
if(isNewBar()) { hi[0]++; //first high hi[1]++; //second high hi[2]++; //third high }Kannst du irgendwo meinen Denkfehler erkennen?
Wenn Du das machst:
if(bp[i-1] > bp[i] && bp[i-1] > bp[i-2]) // if new high? { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = 1 ; } if(isNewBar()) { hi[0]++; //first high hi[1]++; //second high hi[2]++; //third high }
müsste dann nicht der Index des hi, also i-1 zugewiesen werden?
if(bp[i-1] > bp[i] && bp[i-1] > bp[i-2]) // if new high? { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = i-1 ; } if(isNewBar()) { hi[0]++; //first high hi[1]++; //second high hi[2]++; //third high }
Aber das hätte man auch mit dem Debugger herausgefunden.
Wenn Du das machst:
müsste dann nicht der Index des hi, also i-1 zugewiesen werden?
Aber das hätte man auch mit dem Debugger herausgefunden.
Im Debgugger ist es etwas unhandlich. Habe in den einstellung zwar "Nür Öffnungspreise " eingestellt. trotzdem scheint es so, als würde er jeden Tick abfahren... Das wiederum führt dazu, dass die IsNewBar() nicht true ausgibt und ich somit überhaupt nichts nachvollzoiehen kann..

hab ich auch schon probiert. würde baer keinen unterschied machen, da ich das neueste high sowieso imm beim Index 1 feststelle. (0 wäre dann die neueste kerze)
Im Debgugger ist es etwas unhandlich. Habe in den einstellung zwar "Nür Öffnungspreise " eingestellt. trotzdem scheint es so, als würde er jeden Tick abfahren... Das wiederum führt dazu, dass die IsNewBar() nicht true ausgibt und ich somit überhaupt nichts nachvollzoiehen kann..
so müsste es richtig heißen:
if(isNewBar()) { if(bp[i-1] > bp[i] && bp[i-1] > bp[i-2]) // if new high? { hi[2] = hi[1]; hi[1] = hi[0]; hi[0] = 1 ; } { hi[0]++; //first high hi[1]++; //second high hi[2]++; //third high } }

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
der indikator is nichts besonderes. schwingt um 0 und ich würde gerne die letzten drei highs und lows in einem array speichern
Hier ist mein Ansatz:
Leider spuckt der Indikator im Tester folgendes aus:

das first High stimmt aufjedenfall. Das secondHigh und das thridHigh sind entweder ständig genauso groß wie das firstHigh, oder eine Zahl kleiner. Mir scheint, als verstünde ich eine Grundsätzliche arbeitsweise des Indikators oder von mql5 nicht...