MT4-Tester VS MT5-Tester - Seite 6

 
Alain Verleyen:

Aber Ihre ursprüngliche Version mit Build 1596 ist viel langsamer, so dass Ihr ursprünglicher Vergleich mit MT4 aktualisiert werden muss.

Sie verwenden möglicherweise eine alte Version der Bibliothek. Die neueste Version finden Sie immer hier.


Ich habe Ihren Code über MT5Bridge in MT4 umgewandelt. MT4build1072

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:07.645 (total time 0:00:08.362)


Ursprünglicher Code

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.744 (total time 0:00:04.493)


Die Ergebnisse nach der Umstellung sind identisch! Die Geschwindigkeit ist um die Hälfte gesunken.

 
Yuriy Zaytsev:

macht es mehr Sinn, einen optimalen Algorithmus zu schreiben!

Wie?
 
-Aleks-:

Wie?
Holen Sie die erforderlichen Daten einmal pro Zyklus ab. Zyklus nur bei Bedarf, nicht bei jedem Tick.
 
-Aleks-:

Wie kann man das tun?
Holen Sie sich die Geschichte am Anfang, einmal und merken Sie sie sich.
Überwachen Sie dann nur die Aufträge, die in der Historie eingehen.
 
Artyom Trishkin:
Einmal pro Zyklus die erforderlichen Daten abrufen. Zyklus nur bei Bedarf, nicht bei jedem Tick.

Mein EA arbeitet nur mit Eröffnungskursen. Je größer die Geschichte, desto langsamer funktioniert sie - mal langsamer.

 
Yuriy Zaytsev:
Holen Sie sich die Geschichte, wenn Sie anfangen, einmal und merken Sie sie sich.
Überwachen Sie dann nur die Aufträge, die in der Historie eingehen.

Das Testgerät hat beim Start keine Historie...
 
-Aleks-:

Wenn Sie beginnen, hat das Prüfgerät keine Historie.

Wenn wir nur über den Prüfer sprechen, gibt es natürlich keinen.

Auf jeden Fall sollten Sie nicht bei jedem Tick oder sogar bei jedem Balken die gesamte Historie durchgehen.

Wenn der Test auf Basis von Ticks durchgeführt wird, genügt es, nur einen in die Historie eingetragenen Auftrag auszuwählen.

-Aleks-:

Mein Expert Advisor arbeitet nur mit Eröffnungskursen. Je größer die Geschichte, desto langsamer arbeitet sie.


Wenn der Test auf Balken erfolgt, können mehrere Aufträge in die Historie eingegangen sein, so dass nur diese Aufträge verfolgt werden müssen.

 
-Aleks-:

Mein EA arbeitet nur mit Eröffnungskursen. Je größer die Geschichte, desto langsamer funktioniert sie - mal langsamer.

In der Verlaufsliste gilt: je mehr geschlossene Positionen, desto länger der Zyklus. Beschränken Sie den Zyklus auf eine ausreichend kleine Tiefe der Geschichte.
 
Artyom Trishkin:
Je mehr geschlossene Positionen sich in der Historienliste befinden, desto länger ist der Zyklus. Beschränken Sie den Zyklus auf eine ausreichend kleine Tiefe der Geschichte.


Ich habe den Verdacht, dass der Tester nicht durch die Aufträge selbst, sondern durch deren Änderung verlangsamt wird - dieser Prozess findet bei jedem Takt statt.


Yuriy Zaytsev:

Wenn wir nur über den Prüfer sprechen, gibt es ihn natürlich nicht.

Auf jeden Fall sollten Sie nicht bei jedem Tick oder sogar bei jedem Balken den gesamten Verlauf durchgehen.

Wenn der Test auf Basis von Ticks durchgeführt wird, reicht es aus, nur einen Auftrag auszuwählen, der in die Historie eingetragen wird.


Wenn es sich um einen Test auf Balken handelt, können mehrere Aufträge in die Historie eingegangen sein, was bedeutet, dass nur diese Aufträge nachverfolgt werden müssen.


Ich gehe selten durch die Geschichte - die Verlangsamung entsteht durch die Anhäufung der Geschichte als solche - zu meinen Sinnen.

Wenn Sie Informationen über die Auftragsnummer anhand des Datums erhalten könnten (die erste Zahl in diesem Datum), könnte die große Überschreitung vermieden werden - gehen Sie die Aufträge nach der Anzahl durch, die in den Bereich fällt.

 
-Aleks-:


Ich habe den Verdacht, dass der Tester nicht wegen der Aufträge selbst, sondern wegen ihrer Änderung langsamer wird - dieser Prozess findet bei jedem Takt statt.



Ich gehe selten durch die Geschichte - die Verlangsamung ist auf die Anhäufung der Geschichte als solche zurückzuführen - zu meinen Sinnen.

Wenn es möglich wäre, Informationen über die Auftragsnummer anhand ihres Datums zu erhalten (die erste Nummer in diesem Datum), könnte die große Überschreitung vermieden werden - die Aufträge werden anhand der Nummer gesucht, die in den Bereich fällt.

bool  HistorySelect(datetime  from_date, // с даты 
                    datetime  to_date);  // по дату