Die Funktion Balken gibt die Anzahl der Balken zurück. Wenn wir den Index eines Balkens mit dem Index 9 (entschuldigen Sie die Tautologie) abfragen wollen, wird 10 zurückgegeben, da der Index des ersten Balkens 0 ist.
Gut, danke. Alles in allem ist es ein guter Zusatzhinweis. Stimmt, ich kümmere mich nicht wirklich darum, ich weiß nur, dass es die Anzahl der Balken ist. Und wenn das Programm einen Index benötigt, ziehe ich nur dann einen ab.
Vasiliy Pushkaryov: Hier sind zwei Varianten der iBarShift()-Analogie: Beitrag #5 und Beitrag #7
Einfache Variante:
Bars(NULL, 0, t, 32000000000)-1;
die kürzeste und schnellste Lösung für iBarShift analog für aktuelles Symbol und Zeitrahmen und erfordert keine zusätzlichen Funktionen. Aber auch für die nicht-aktuellen müssen Sie nur die ersten beiden Parameter anstelle der Null-Parameter eingeben.
ist die kürzeste und schnellste Lösung zum Gegenstück iBarShift für das aktuelle Symbol und den aktuellen Zeitrahmen und erfordert keine zusätzlichen Funktionen.
Nur wird es nicht in allen Fällen korrekt funktionieren. GetBarShift() von fxsaber ist vielseitiger.
Versuchen Sie, TimeCurrent() anstelle von t in Ihre Funktion einzufügen, und Sie werden das Ergebnis sehen.
Nikolai Semko: Ich habe es schon viele Male getestet, also weiß ich es einfach. Aber Sie haben es nicht einmal selbst ausprobiert.
Hier ist das Drehbuch.
voidOnStart()
{
int idShort = Bars(NULL, 0, TimeCurrent(), 32000000000)-1;
int idUni = GetBarShift(_Symbol, 0, TimeCurrent());
Print("idShort = ", idShort, " idUni=", idUni);
}
//+------------------------------------------------------------------------------------------------------------------+//| //+------------------------------------------------------------------------------------------------------------------+int GetBarShift(conststring symbol_name, constENUM_TIMEFRAMES timeframe, constdatetime time)
{
int res=-1;
datetime last_bar;
// --- время открытия последнего бара по символу, периодуif(SeriesInfoInteger(symbol_name, timeframe, SERIES_LASTBAR_DATE, last_bar))
{
if(time > last_bar) res = 0;
else
{
constint shift = Bars(symbol_name, timeframe, time, last_bar);
if(shift > 0) res = shift-1;
}
}
return res;
}
Er bleibt einfach hängen. Das gewaltsame Entfernen aus dem Diagramm liefert das Ergebnis.
Also habe ich es ausprobiert, und deshalb habe ich Ihnen auch dazu geraten. Aber da du es benutzt hast und es dir passt, werde ich deine Meinung nicht ändern.
Die Funktion Balken gibt die Anzahl der Balken zurück. Wenn wir den Index eines Balkens mit dem Index 9 (entschuldigen Sie die Tautologie) abfragen wollen, wird 10 zurückgegeben, da der Index des ersten Balkens 0 ist.
Hier sind zwei Varianten der iBarShift()-Analogie: Beitrag #5 und Beitrag #7
Nur eine Variante:
Nur wird es nicht in allen Fällen korrekt funktionieren. GetBarShift() von fxsaber ist vielseitiger.
Versuchen Sie, TimeCurrent() anstelle von t in Ihre Funktion einzufügen, und Sie werden das Ergebnis sehen.
Nur wird es nicht in allen Fällen korrekt funktionieren. GetBarShift() von fxsaber ist universeller.
Versuchen Sie, TimeCurrent() anstelle von t in Ihre Funktion einzufügen, und Sie werden das Ergebnis sehen.
Das Ergebnis wird dasselbe sein.
Sie haben es nicht einmal überprüft.
Ich habe es schon viele Male getestet, also weiß ich es einfach. Aber Sie haben es nicht einmal selbst ausprobiert.
Hier ist das Drehbuch.
Er bleibt einfach hängen. Das gewaltsame Entfernen aus dem Diagramm liefert das Ergebnis.
Also habe ich es ausprobiert, und deshalb habe ich Ihnen auch dazu geraten. Aber da du es benutzt hast und es dir passt, werde ich deine Meinung nicht ändern.
Das ist auch in Ordnung