Analog zu iBarShift - Seite 13

 
Nikolai Semko:

Indikator, der die Leistung der iBars-Funktion im Vergleich zu den eingebauten Bars und der iBarShift-Funktion von @Alain Verleyen zeigt
Ausführungszeit der Funktion in Mikrosekunden.


Dies ist nicht der richtige Ort - gehen Sie zur kodobase. Sowohl iBars() als auch iBarShift()

 
Nikolai Semko:

Die iBars-Funktion ist zwar etwas umständlich, aber ich empfehle sie dennoch anstelle der regulären Balken zu verwenden, bis MQ den Hängefehler behoben hat.

Sie können es dennoch beschleunigen, indem Sie Folgendes tun.

start_time -= start_time % PeriodSeconds(timeframe);
TimeCur -= TimeCur % PeriodSeconds(timeframe);

Der iBar bleibt hängen, obwohl er logischerweise 0 zurückgeben sollte. In der Regel wird sie für mehr als 10 Sekunden zurückgegeben. Dieser Fehler existiert nicht in MQL4.

Dieser Aufruf

SeriesInfoInteger(symbol_name,timeframe,SERIES_LASTBAR_DATE)

Sie funktioniert nicht richtig - sie führt dazu, dass die Historie geladen wird, obwohl sie nicht existieren sollte. Daher die Verzögerungen (siehe Aussehen der hcc-Dateien).

 
Nikolai Semko:

Ein Indikator, der die Leistung der iBars-Funktion im Vergleich zu den eingebauten Bars und der iBarShift-Funktion von @Alain Verleyen zeigt
Ausführungszeit der Funktion in Mikrosekunden.

Auch hier sollte die Leistung dort gemessen werden, wo sie gebraucht wird - beim Optimierer.

 
Artyom Trishkin:

Nicht hier - in der kodobase. Sowohl iBars() als auch iBarShift()

Ja, das habe ich vor. Lassen Sie uns das erst einmal testen.

 
fxsaber:

Sie können den Vorgang auch durch folgende Maßnahmen beschleunigen

Start_time ist dort bereits von Anfang an implementiert, aber mitTimeCur kann man es ein wenig beschleunigen. Wird gemacht. Danke.

Übrigens gilt sie nur für M1 bis D1. W1 muss um drei Tage verschoben werden, da der 01.01.1970 ein Donnerstag ist. Und bei MN1 muss man mit Diamanten spielen, weil ein Monat 28, 29, 30, 31 Tage haben kann.

Dieser Aufruf

Dieser Aufruf funktioniert nicht korrekt - er führt dazu, dass die Historie ausgelagert wird, obwohl sie nicht ausgelagert werden sollte. Daher die Verzögerungen (Sie können das Aussehen der hcc-Dateien sehen).

Seltsam, ein solches Verhalten habe ich noch nie gesehen.

fxsaber:

Auch hier sollte die Leistung dort gemessen werden, wo sie gebraucht wird - im Optimizer.

Was meinen Sie mit Optimierer?

 
Nikolai Semko:

Beistart_time ist bereits von Anfang an implementiert

Mit einem Fehler implementiert. Zum Beispiel: M1 starttime == D'12:00:05'. Auch die Stoppzeit muss eingehalten werden.

Was meinen Sie mit Optimierer?

Optimierungsmodus im Prüfgerät.

 
fxsaber:

Mit einem Fehler implementiert. Zum Beispiel: M1 starttime == D'12:00:05'. Auch die Nachspielzeit muss eingehalten werden.

Erklären Sie, worin der Fehler besteht? Und warum nur die Uhrzeit und wo ist das Datum?

Bars und iBars ergeben 0 für dieses Format.

 
Nikolai Semko:

Erklären Sie, worin der Fehler besteht? Und warum nur die Uhrzeit und wo ist das Datum?

Ich war zu faul, das Datum zu schreiben.

t=start_time-(start_time-1)%PerSec;

Ersetzen Sie start_time in dieser Zeile durch eine von Null verschiedene Anzahl von Sekunden in einer Minute.

 
fxsaber:

Ich war zu faul, das Datum zu schreiben.

In dieser Zeile ersetzen Sie start_time durch eine von Null verschiedene Anzahl von Sekunden in einer Minute.

Es ist alles in Ordnung. Das ist kein Irrtum. So sollte es sein.

Versuchen Sie, den Code wie folgt auszuführen:

   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:00',UINT_MAX));
   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:01',UINT_MAX)); //результат на единицу меньше
 
Nikolai Semko:

Es ist alles in Ordnung. Das ist kein Irrtum. So sollte es sein.

Versuchen Sie, einen Code wie diesen auszuführen:

Dann verstehe ich nicht, warum Bars denkt, dass 18:00:01 zu M1-Takt 18:01 und nicht 18:00 gehört.


Übrigens: TimeCurrent sollte durch SYMBOL_TIME ersetzt werden.