MetaTrader 5 Strategy Tester: Bugs, Bugs, Verbesserungsvorschläge

 

Der MetaTrader 5-Strategietester wird derzeit vom MQ-Team einer gründlichen Überarbeitung unterzogen. Trotz der Tatsache, dass in den letzten zwei Jahren viel Arbeit geleistet wurde (dank des MetaQuotes-Teams), wirft dieser Tester eine Menge Fragen auf. Leider konzentrieren sich die jüngsten Änderungen eher auf das visuelle Erscheinungsbild des Testers, so dass Anfänger leichter damit arbeiten können, während die Mechanismen seiner Arbeit immer noch Fragen von erfahreneren Benutzern aufwerfen.

Ich schlage vor, diesen Thread der konstruktiven Kritik am MetaTrader 5-Tester zu widmen und ihn zu einem Ort zu machen, an dem Sie die Entwickler erreichen können.

Alle Aussagen/Diskussionen/Kritik/Widerlegungen sollten mit klaren Argumenten und reproduzierbaren Ergebnissen belegt werden. Die Diskussion sollte sich auf die Ausführungs- und Preisbildungsmechanismen konzentrieren. Die Wünsche nach Schnickschnack, Icons und sphärischen Pferden in einem Vakuum (ich möchte, dass alle Kerne geladen werden, ich möchte Multi-Threading für einen einzigen Lauf usw.) sind nicht willkommen, wenn auch nicht verboten.

Also, los geht's.


MetaTrader 5-Tester überspringt Ausführung von Limit-Orders

1. Da benutzerdefinierte Zecken als Array MqlTisk in einer binären Datei (an den Beitrag angehängt).

2. Die benutzerdefinierten Daten werden von einem speziellen Skript verarbeitet und in den Werkzeugverlauf geladen. Das Skript ist ebenfalls an die Nachricht angehängt.

3) Ein Expert Advisor wird auf dem sich ergebenden Diagramm gestartet und führt die Geschäfte gemäß seiner Logik durch. Der Expert Advisor arbeitet im Modus der echten Ticks.

4. Zum Zeitpunkt 00:11:05:085 wurde eine Limit-Order zum Kurs von 10422,5 platziert. Der aktuelle Kurs zum Zeitpunkt der Platzierung beträgt 10422,0.

5. Zum Zeitpunkt 00:11:06.179 lag der letzte Kurs bei 10424,0. Nach den Regeln der Preisbildung an der Börse sollte der SellLimit-Auftrag zum Preis von 10422,5 ausgeführt werden, was jedoch nicht geschieht. Der Limitauftrag scheint in der Luft zu hängen und zeigt die völlige Kapitulation: Die Geschäfte finden mit jemand anderem statt, der schlechtere Preise als wir anbietet!

6. Aber die Wunder beginnen sich zu entfalten. Der Kurs kehrt sich um und fällt von 1024,0 auf 10419. D.h. das Verkaufslimit wird von oben nach unten durchbrochen. Aber auch der Limitauftrag hängt in der Luft.

Leider habe ich keine Protokolle gefunden, die zeigen, was vor sich geht. Man hat das Gefühl, dass die Prüfprotokolle einfach ausgeschaltet sind und printf nicht funktioniert. Die Ausgabe in das Protokoll des Prüfgeräts ist ausgeschaltet:

Wie auch immer, es scheint ein weiteres Problem zu sein, das es vorher nicht gab.

In diesem Zusammenhang habe ich ein Video aufgenommen, in dem man deutlich sehen kann, was passiert (das Interessanteste beginnt ab etwa 30 Sekunden. Am oberen Rand des Bildschirms wird die aktuelle Zeit auf die Millisekunde genau angezeigt:)



Das Video zeigt deutlich, dass der Bereich des Balkens das Niveau der Limit-Order durchdringt, aber keine Ausführung stattfindet.

Es gibt noch weitere Fragen an den Prüfer. Aber im Moment halte ich es für notwendig, sich damit zu befassen.

Dateien:
 

MetaTrader 5 Tester baut Balken nicht korrekt auf

Dies ist das benutzerdefinierte Symbol aus dem vorherigen Beitrag (gleiche Daten). DieBalken werden zum letzten Preis gezeichnet, der in den Symboleinstellungen angegeben ist.

Auf der linken Seite sind die im Prüfgerät gezeichneten Balken zu sehen. Auf der rechten Seite sehen Sie die ersten Balken.

Sie können sehen, dass die Diagramme nicht vollständig übereinstimmen. Auf der linken Seite ist ein bisschen Mist.

S.w. Dachte, es sei nach Bid aufgebaut, aber ein Blick auf die Angebotsliste zeigt, dass solche Preise weder in Bid noch in Last noch in Ask enthalten waren. Ich füge den Deal-Feed in Textform unten an.

Dateien:
deribit_csv.zip  735 kb
 

Welche Build-Nummer verwenden Sie?

Sehr seltsame Zeit im Protokoll 0000.00.00 00:00:00.000

Welches Betriebssystem haben Sie?

Werden Dateien mit einer Log-Erweiterung im Datenordner des Testers gespeichert?

 

1. Sie haben die Datei "deribit1.out.bin" nicht angegeben. Im beigefügten Archiv "deribit1.out".

2. Sie haben keine benutzerdefinierten Charaktereinstellungen angegeben

 
Ich baue Bars nach Geboten. Die Ausführung der Limits erfolgt durch Bid/Ask. Alles funktioniert (2093 um genau zu sein, ich habe es nicht weiter überprüft) korrekt.
 
Vasiliy Sokolov:

Eine gute Funktion, die Sie ignorieren

MqlTick tiks[];

if (FileLoad("deribit1.out.bin", ticks))
{
// ....
 
Slava:

1. Sie haben die Datei "deribit1.out.bin" nicht angegeben. Im beigefügten Archiv "deribit1.out".

2. Sie haben die benutzerdefinierte Charaktereinstellung nicht angegeben

Entschuldigen Sie bitte.

 
fxsaber:

Eine gute Funktion, die Sie ignorieren.

Gut zu wissen.

 
Slava:

Welche Build-Nummer verwenden Sie?

Sehr seltsame Zeit im Protokoll 0000.00.00 00:00:00.000

Welches Betriebssystem haben Sie?

Werden Dateien mit einer Log-Erweiterung im Datenordner des Testers gespeichert?

Der Build ist der aktuellste. 2136. Ich verwende immer die neueste Version.

Windows 7 SP1

Protokolle werden gespeichert. Es werden Protokolle im Strategietesterprotokoll angezeigt. Im Visualisierungsprotokoll des Strategietesters wird jedoch nichts angezeigt.


 
Vasiliy Sokolov:

Entschuldigen Sie bitte.

Danke. (lacht) Wir werden uns darum kümmern.

 

Der wichtigste Vorschlag ist zweifelsohne die Automatisierung von Tests.

Machen Sie eine Walk-Forward-Optimierung oder etwas Ähnliches. Die Tests sollten sich auf mehrere Zeiträume und Instrumente erstrecken.

Und wenn Sie das nicht wollen, dann lassen Sie Leute, die keinen Abschluss in Programmiertechnik (oder einen Abschluss?) haben, dies mit MQL-Tools tun.

Dazu benötigen wir die Möglichkeit, den Beginn und das Ende des Testzeitraums zu lesen und zu schreiben (Get__ \Set__), den Beginn des Vorwärtszeitraums und die Möglichkeit, den Tester mit einem neuen Testzeitraum neu zu starten.

Außerdem funktionieren die vorhandenen Möglichkeiten der Bildbearbeitung nicht richtig. Darüber ist hier schon genug geschrieben worden.

Ein weiterer Fehler: Wenn der Tester mit aktivierter Vorwärtsperiode und den vorherigen Parametern neu gestartet wird, bleibt er hängen. Wir müssen die Instanzen, den Zeitrahmen und das Instrument ändern oder den Expert Advisor neu kompilieren.

Der letzte öffentlich verfügbare Build ist immer noch 2085.