Ich versuche mir einen Hilfsindikator zu schreiben, der mir die Barnummern für sowohl Serial- als auch NonSerial Zählung angibt (im Anhang).
Das Problem, das ich nicht verstehe wieso es überhaupt auftauchen kann, ist folgendes:
Wenn ich den Indikator auf den Chart schmeiße, kriege ich eine Meldung
"EURUSD,M1: array out of range in 'BiSi-BAR-BarNos3.mq4' (158,17)".
Wenn ich dann aber die Indikator-Eigenschaften aufrufe - ich muß da noch nicht mal was ändern, sondern einfach nur OK drücken - dann wird alles angezeigt.
Besagte Meckerzeile ist hier:
Code:
void CalcSeries(int rat_tot=-1)
{
int limit=rat_tot; //CalledFromOnCalculate
if(rat_tot==-1) limit=Bars; //CalledFromAllOthers:MaxIs1LessThanAvailable
if(LOOKBACKBARS>0) limit=LOOKBACKBARS; //ObeyUserInput
if(limit>Bars) limit=Bars; //IfLessThanAvailableBars
for(int i=0; i<limit; i++)
{
//if(i==0 || i==limit) Print(__FUNCTION__," i=",(int)i);
SeriesBuff[i]=i;
}
}
Wir haben definitiv die Anzahl von "Bars" zur Verfügung, und da ich die "pur" (also keine Berechnungen mit i-1 mache), kann doch gar nichts außerhalb des Arrays sein. Und eine Bar, die vorhanden ist, hat auch automatisch alle dazugehörigen Werte (wie high/low/open/close usw.).
Wie kann es sein, daß das Ding erst nach dem Aufrufen der Indikatoreinstellungen funktioniert? Ich bin komplett ratlos. Wäre super, wenn jemand eine Idee hat.
AVT