Diskussion zum Artikel "Statistische Verteilungen in MQL5 - Nur das Beste aus R" - Seite 5

 
Renat Fatkhullin:
  1. Vorhandensein von MQL5-Bibliotheken im Quellcode, die es Ihnen ermöglichen, ihren Code direkt an der Aufrufstelle zu inlinen und die Nutzung der Konst-Umgebung der aufgerufenen Stelle zu maximieren.

Werden viele Standardfunktionen auch in Bibliotheken zum Inlinen enthalten sein?

 
Renat Fatkhullin:

Das ist nicht seriös.

Unter wyne, und sogar 32 Bits. Für die 32-Bit-Version von MT5 wird ein alter Compiler verwendet, der dem von MT4 ähnelt. Er ist ein paar Dutzend Mal langsamer als der 64-Bit-Code, der von einem neuen Compiler speziell für die 64-Bit-Version von MT5 erstellt wird. Wir haben einen Bericht veröffentlicht, in dem wir die Geschwindigkeit von 32- und 64-Bit-MQL5-Programmen vergleichen.

Jedes MQL5-Programm enthält eigentlich zwei Kopien des kompilierten Codes: 32-Bit für alte Systeme, um die Kompatibilität zu gewährleisten, und 64-Bit für neue Systeme.

Wir haben die Entwicklung von 32-Bit-Compilern vollständig aufgegeben, da sie keinen Sinn macht und keine Zukunft hat.

Aus diesem Grund sollten Sie nur 64-Bit-Versionen von MetaTrader 5 verwenden, wenn Sie die maximale Leistung erhalten möchten.


Übrigens, eine Information für diejenigen, die auf MT4 sitzen - auch dort ist die Geschwindigkeit der MQL4-Code-Ausführung ein paar Dutzend Mal langsamer als im 64-Bit-MetaTrader 5.

Unerwartet... Für mich ist das ein wirklich ernsthafter Grund, meine Gewohnheiten endlich zu überdenken und auf MT5 umzusteigen. Zuvor hatte ich keinen Sinn darin gesehen....
 
fxsaber:

Werden viele Standardfunktionen auch in Bibliotheken zum Inlinen abgelegt?

Ganz genau.

In den nächsten paar Builds werden wir dazu kommen. Wir werden den Programmen während der Kompilierung Funktionsquellen hinzufügen, so dass der Optimierer sein volles Potenzial entfalten kann.

Für uns ist es entscheidend, die Anzahl der Aufrufe an den Plattformkern zu minimieren.

 
Реter Konow:
Unerwartet... Für mich ist das wirklich ein ernsthafter Grund, meine Gewohnheiten endlich zu überdenken und auf MT5 umzusteigen. Zuvor sah ich keinen Sinn darin....

Wenn man sich mit der Latenz von MT4 und MT5 internen Prozessen, einschließlich des Handels, beschäftigt, wird man von MT4 weglaufen. Es gibt einen Abgrund in der Qualität und Sauberkeit der Prozesse.

Wir sind nicht ohne Grund so fanatisch, wenn es um die Leistung und Optimierung von MT5 geht. Das ist ein enormer technologischer Vorteil.

 
Renat Fatkhullin:

R hat die minimale Zeit über viele Starts hinweg gemessen, nicht den ersten Start und die maximale Zeit.

Also nein, "Kaltstart" erklärt es hier nicht. Und selbst wenn der gesamte Bibliothekscode als DLL vorliegt. Es gibt praktisch nichts zum Aufwärmen.

Was es aber erklärt:

  1. Fehlender Overhead bei dynamischen Objekten wie in R aufgrund der Arbeit mit rein typisierten Double-Daten
  2. Ein furchtbar effizienter Compiler in MQL5. Es ist wirklich beängstigend, sich den resultierenden asm-Code anzusehen.
  3. Das Vorhandensein von MQL5-Bibliotheken im Quellcode, was es Ihnen ermöglicht, deren Code direkt an der Aufrufstelle zu inlinen und die Nutzung der Konst-Umgebung der aufgerufenen Stelle zu maximieren.

    Hier hat der Compiler viel Spielraum im Vergleich zu nicht optimierten Implementierungen in DLLs, die keine Chance haben, die Umgebung zu erlernen und sich an sie anzupassen.

Was wird hier gemessen? Es erinnert mich an C++ vs. Lisp Holivars - es ist einfach eins zu eins, außer dass einer der "Vergleicher" fast ++ ist und der andere Schema :-)) Sie sind einfach grundlegend verschiedene Dinge....
 
Renat Fatkhullin:

Wenn Sie sich mit der Latenz von MT4- und MT5-internen Prozessen, einschließlich des Handels, befassen, werden Sie von MT4 weglaufen. Es gibt einen Abgrund in der Qualität und Sauberkeit der Prozesse.

Wir sind nicht ohne Grund so fanatisch, wenn es um die Leistung und Optimierung von MT5 geht. Es ist ein enormer technologischer Vorsprung.

Jetzt werde ich es wissen. Natürlich wird die Portierung des gesamten Codes auch bei ausreichender Sprachkompatibilität nicht einfach sein, aber ich glaube, das Ergebnis wird es wert sein. Ich bin immer auf größere Effizienz bedacht, und die Frage des Leistungs- und Geschwindigkeitsunterschieds war für mich schon immer von großem Interesse. Wenn ich diesen Unterschied früher gekannt hätte, hätte ich die weniger schnelle Plattform schon längst vergessen. Vielen Dank für die Informationen.
 
Maxim Kuznetsov:
Was wird hier gemessen? Es erinnert mich an C++ vs. Lisp-Holivars - genau dasselbe, nur dass das eine fast ++ "vergleicht" und das andere Schema-überwuchert ist :-) Es sind einfach grundlegend verschiedene Dinge.....

Dies ist nur ein reiner praktischer und theoretischer Beweis für die Falschheit der Position, die von einigen Händlern im Thema https://www.mql5.com/ru/forum/96176/page10 geäußert wurde (es gab irgendwo eine Erwähnung):

  • in R sind alle Bibliotheken optimiert und so schnell wie möglich
  • es gibt viele Optimierungen in R, einschließlich der Intel Threading Building Blocks, usw.


Es stellte sich heraus, dass dies nicht stimmt. Bei der einfachsten Funktion stellte sich heraus, dass es sich um einen Abfluss handelt und MQL5 effizienter ist. Außerdem habe ich begründet, warum es theoretisch schneller ist. Zusätzlich zu den praktischen Ergebnissen.

Используете ли вы CExpert при создании роботов?
Используете ли вы CExpert при создании роботов?
  • www.mql5.com
Да Нет, пишу класс робота с нуля Нет, у меня есть свой базовый класс робота Нет, я не использую ООП Хочу посмотреть результат...
 
Renat Fatkhullin:

Wenn Sie sich mit der Latenz von MT4- und MT5-internen Prozessen, einschließlich des Handels, befassen, werden Sie von MT4 weglaufen. Es gibt einen Abgrund in der Qualität und Sauberkeit der Prozesse.

Der Handel wird irgendwie vergessen

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Fehler, Bugs, Fragen

fxsaber, 2016.10.09 09:39 pm

MT5-OrderSend ist NICHT vollständig synchronisiert - es findet keine Synchronisation mit der Handelsumgebung statt. Das bedeutet, dass die Historienwerte nicht dem realen Stand der Dinge entsprechen.

Eine Zeitüberschreitung kommt nicht in Frage. Es gibt keine zuverlässige Lösung für dieses Problem, da Synchronisationsprobleme auf der Ebene des Terminals und nicht auf der Ebene des Servers gelöst werden müssen.

In der Tat sind die MT5-Benutzer mit dem konfrontiert, was auch die Entwickler der MT4-Bridge erlebt haben.

Wenn ein OrderSend gesendet wird, sollte man sich ERINNERN (hier liegt eine potenzielle Schwachstelle), dass dies geschehen ist. Dann sollte man die aktuelle Historie (Handelsumgebung) ignorieren, bis die entsprechende Nachricht in OnTrade eintrifft. Sobald sie eintrifft, muss das NICHTS VERGESSEN werden.

Wenn es keine FORGOTTEN Daten gibt, können Sie der Historie wie in MT4 vertrauen.

MT4-OrderSend ist VOLLSTÄNDIG synchronisiert.

Ja und mit dem Rest, viel einfacher, wie es sich herausstellt, Probleme

 
fxsaber:

Irgendwie wird der Handel vergessen

Sie verwechseln asynchrone Prozesse mit dem Wunsch nach Synchronisation.

Die Aufgabe von OrderSend ist es, so schnell wie möglich eine Anfrage zu stellen und eine Bestätigung zu erhalten. Und das System bewältigt diese Aufgabe perfekt.

Aber eine abgeschlossene Transaktion/ein abgeschlossenes Geschäft zu erhalten, es in die Historie aufzunehmen und es Ihnen dann auf Anfrage zu geben - das ist ein anderer Prozess, und er hat kein Recht, die Arbeit von OrderSend zu verlangsamen.

Deshalb ist alles richtig - Sie führen die Transaktion schnell aus, und dann bekommen Sie in einer Millisekunde (eigentlich früher) im Nachbarpaket ein Ticket-Update und arbeiten damit.


Und mit dem Rest, der, wie sich herausstellte, viel einfacher ist, gibt es auch Probleme

Einen Compiler zu schreiben und vor allem böse C++ Templates zu implementieren sind einfache Dinge????

Wie auch immer, vielen Dank für A100s Geduld - er war sehr hilfreich beim Aufspüren von Fehlern.


Aber das ist offtopic, wenn ihr diese Fragen diskutieren wollt, dann macht das in eigenen Threads. Hier über R.
 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden in den Bereich "Richtiges Arbeiten im MT5 mit OrderSend" verschoben.