Testen des neuen MQL5-Compilers für x64-Plattformen - 2 bis 10 Mal schnellere Berechnungen!
Gut gemacht!
Hier finden Sie weitere frühere Tests und Diskussionen:
Fachleute auf ihrem Gebiet!
Ich danke Ihnen!
Außerdem wird die nächste Version bis zum 20. Mai höchstwahrscheinlich über einen Debugger für historische Daten verfügen.
Wir werden es auf der iFX Expo vom 26. bis 28. Mai zeigen.
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin:
- Der neue 64-Bit-MQL5-Compiler ist 2 bis 10 Mal schneller als der aktuelle MQL5-Compiler.
Die Entwicklung des neuen Compilers hat viel Zeit in Anspruch genommen, aber die Fortschritte sind erstaunlich. Es gibt einige Probleme mit der Optimierung von String-Operationen, aber wir werden versuchen, auch diese zu beschleunigen. - Der neue Compiler kommt der Qualität und Geschwindigkeit des Visual Studio 2012 x64 Compilers sehr nahe.
Wir haben noch nicht alle Optimierungsmethoden aktiviert, da wir sie noch testen. Daher werden sich die Ergebnisse weiter verbessern.
Darüber hinaus wird in der nächsten Version voraussichtlich ab dem 20. Mai ein Debugger für historische Daten verfügbar sein.
Wir werden es auf der iFX Expo vom 26. bis 28. Mai vorführen.
Der neue Compiler kommt der Qualität und Geschwindigkeit des Visual Studio 2012 x64 Compilers sehr nahe
Wir haben noch nicht alle Optimierungsmethoden aktiviert, da wir sie noch testen. Aus diesem Grund werden sich die Ergebnisse weiter verbessern.
Gute Nachrichten! Gut gemacht!
Renat Fatkhullin:
Sie können mehr Berechnungen gleichzeitig durchführen und denken weniger über den Wechsel zu DLL nach. Dies ist besonders wichtig für diejenigen, die viel rechnen.
Ja, ich kann mir wirklich keine weiteren Aufgaben vorstellen, für die externe DLLs benötigt werden.
Außerdem wird die nächste Version bis zum 20. Mai höchstwahrscheinlich über einen Debugger für historische Daten verfügen.
Dies ist wirklich die nützlichste Funktion. Ich danke Ihnen vielmals.
Persönlich habe ich nur eine Frage - Zeiger auf Arrays. Für private Arrays wird das Problem gelöst, indem man ein Array in eine Klasse einpackt.
Aber für Arrays, die an die OnCalculate()-Funktion übergeben werden, muss ich die Daten jedes Mal in interne Puffer kopieren und erst dann Zeiger an Analyzer-Objekte und Handler übergeben. Einmal habe ich versucht, Zeiger mit memcpy zu übergeben, aber irgendwie war die Geschwindigkeit fast die gleiche, und meiner Meinung nach, solche "Tricks" sollte nicht angewendet werden.
Vielleicht wäre die Möglichkeit, einen Referenztyp zu verwenden, akzeptabler. Im Allgemeinen besteht die Aufgabe darin, auf Array-Elemente zuzugreifen, ohne sie zu kopieren.
Ja, realistischerweise kann ich mir keine weiteren Aufgaben vorstellen, für die externe DLLs benötigt werden.
Es stellte sich heraus, dass die Zuweisung des Abweichungs-Eingabeparameters an das Abweichungsfeld der MqlTradeRequest-Strukturinstanz zu einem Fehler bei der Codegenerierung führt.
Hypothetisches Beispiel (alles andere wurde entfernt):
sinput ulong deviation = 100; int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }Ich erhalte"Codegenerierungsfehler 1 1".
Wenn Sie nur "100" zuweisen:
int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = 100; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }
...dann läuft die Kompilierung ohne Fehler ab. Hinweis: Ich habe einen AMD Athlon II X4 645, 3,1 GHz Prozessor. Vielleicht ist es wichtig (gerade diese Woche MQL4 mit servicedesk haben einige Fehler auf AMD gefangen).
Mein Compiler beschwert sich nicht über andere Dinge.

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wie wir bereits versprochen haben, veröffentlichen wir einen neuen MQL5-Compiler, der für die 64-Bit-Version von MetaTrader 5 optimiert ist.
Wir haben die volle Kompatibilität des generierten Codes sowohl für 32-Bit-Versionen des Terminals als auch für ältere Versionen der Terminals beibehalten.
Sie können bereits auf unserem MetaQuotes-Demo-Server ein Upgrade auf MetaTrader 5 Build 1108 mit seinen neuen Funktionen durchführen. Um den neuen optimierenden Compiler zu aktivieren, fügen Sie den Schlüssel Optimize=1 zu [Experts] in metaeditor.ini hinzu:
Um die Leistung von MQL4, MQL5 und C++-Compilern zu testen, haben wir Standard-Compilertests verwendet. Alle Quelldateien sind zusammen mit einer Excel-Tabelle beigefügt, damit jeder sie überprüfen kann.
Schauen wir uns nun die Testergebnisse in der folgenden Umgebung an:
Um die detaillierte Tabelle zu sehen, klicken Sie bitte auf sie.
Was sind die Schlussfolgerungen?
MQL5 ist um mehrere Dutzend Prozentpunkte schneller als MQL4. Der Grund liegt in der Ausführungsumgebung und den 32 Bit. MetaTrader 5 verfügt über eine wesentlich effizientere und sich ständig weiterentwickelnde Laufzeitumgebung.
Die Entwicklung des neuen Compilers hat viel Zeit in Anspruch genommen, aber der Gewinn war erstaunlich. Es gibt einige Probleme mit der Optimierung von String-Operationen, aber wir werden versuchen, auch diese zu beschleunigen.
Wir haben noch nicht alle Optimierungsmethoden aktiviert, da wir sie noch testen. Daher werden sich die Ergebnisse weiter verbessern.
Was bringt sie den Händlern?
Die Möglichkeit, mehr Berechnungen in der gleichen Zeit durchzuführen und weniger über den Wechsel zu einer DLL nachzudenken. Dies ist besonders wichtig für diejenigen, die viel rechnen.