ein Befehl und eine Liste von Parametern können als Zeichenkette, getrennt durch Trennzeichen, übergeben werden. Wenn der Expert Advisor die Nachricht entpackt, weiß er, was zu tun ist
Der Befehl OrderSend ?
Welches Format sollte die Zeichenkette haben? Zeichenfolge ? Im Socket-Beispiel wird der String vom mql5-Socketan result übergeben: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);. Ergebniszurückgeben;
Welches Format sollte die Zeichenkette haben? Zeichenfolge ? Im Socket-Beispiel wird der String vom mql5-Socket-Clientan result übergeben: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);. Ergebniszurückgeben;
nicht OrderSend(), sondern nur eine Zeichenkette mit den ersten 3 Buchstaben, z.B. "BUY", gefolgt von einer Liste von Argumenten: lot, take, sl. Der Expert Advisor liest die Zeichenkette, sieht die ersten 3 Buchstaben buy und stellt eine Trog-Anfrage
d.h. einfach ein einfaches Austauschprotokoll zwischen Anwendungen in freier Form entwerfen
nicht OrderSend(), sondern nur eine Zeichenkette mit den ersten 3 Buchstaben, z.B. "BUY", und dann eine Liste von Argumenten: lot, take, sl. Der Expert Advisor liest die Zeichenkette, sieht, dass die ersten 3 Buchstaben "buy" sind und stellt eine Trog-Anfrage
Denken Sie z.B. an ein einfaches Austauschprotokoll zwischen Anwendungen, in freier Form
Ein Beispiel von einem erfahrenen Entwickler wäre sehr hilfreich.
Wenn es nicht zu schwierig ist, wie lange dauert ein einziger Test in einem beliebigen Zeitrahmen?
Das heißt, uns interessiert die Frage, wie lang die Optimierungszeit im Tester ist und ob Fehlberechnungen möglich sind?
In früheren Kommentaren haben Sie geschrieben, dass ich Hintergrundwissen in JAVA brauche, um es zu verstehen.
Ich kenne auch einige C# und Python, ich kann in MQL4,5 programmieren, kann ich Ihre Bibliotheken ziemlich leicht zu meistern, wie viel schwieriger kann sie sein?
Ist es nicht schwierig zu schreiben, wie lange ein einzelner Test in einem beliebigen Zeitrahmen dauert?
Das heißt, ich bin in der Frage interessiert, wie lange die Optimierung in der Tester und ob es falsche Berechnungen?
In früheren Kommentaren haben Sie geschrieben, dass ich Hintergrundwissen in JAVA brauche, um es zu verstehen.
Ich weiß, einige C# und Python, ich kann in MQL4,5 programmieren, kann ich Ihre Bibliotheken ziemlich leicht zu meistern, wie viel schwieriger kann sie sein?
Die Optimierung im Strategy Tester ist die gleiche wie die übliche. Fehlerhafte Berechnungen aufgrund beschädigter Daten während der Übertragung zu Python und zurück sind ausgeschlossen, da die Übertragung über den Arbeitsspeicher und nicht über instabile Sockets oder Dateien erfolgt.
Ja, ich habe in meiner Bibliothek Code in MQL, Java und Python. Sie müssen jedoch nicht Java verwenden, wenn Sie Apache Spark usw. nicht benötigen.
Terminal: Добавлено API для запроса данных из терминала MetaTrader 5 через приложения, использующие язык Python.
Python ist eine moderne High-Level-Programmiersprache für die Entwicklung von Skripten und Anwendungen. Enthält zahlreiche Bibliotheken für maschinelles Lernen, Prozessautomatisierung, Datenanalyse und Visualisierung.
DasMetaTrader-Paket für Python wurde entwickelt, um einfach und schnell Börsendaten über Interprozesskommunikation direkt vom MetaTrader 5-Terminal zu erhalten. Die so gewonnenen Daten können für statistische Berechnungen und maschinelles Lernen weiterverwendet werden.
Aktivieren Sie bei der Installation von Python das Kontrollkästchen "Python X.X zu PATH% hinzufügen", damit Sie Skripte in Python von der Kommandozeile aus ausführen können.
Installieren Sie das MetaTrader 5 Modul von der Kommandozeile aus
pip install MetaTrader5
Hinzufügen der Pakete matplotlib und pytz
pip install matplotlib pip install pytz
Funktionen
MT5Initialize- stellt die Verbindung zum MetaTrader 5 Terminal her
MT5Shutdown- schließt die zuvor aufgebaute Verbindung zum MetaTrader 5 Terminal
MT5TerminalInfo- empfängt den Zustand und die Parameter des angeschlossenen MetaTrader 5 Terminals
MT5Version- liefert die Terminalversion MetaTrader 5
MT5WaitForTerminal- wartet, bis das Terminal MetaTrader 5 sich mit dem Handelsserver verbindet
MT5CopyRatesFrom- empfängt Balken vom MetaTrader 5 Terminal ab dem angegebenen Datum
MT5CopyRatesFromPos- empfängt Balken vom MetaTrader 5 Terminal ab dem angegebenen Index
MT5CopyRatesRange- empfängt Balken im angegebenen Datumsbereich vom MetaTrader 5 Terminal
MT5CopyTicksFrom- empfängt Ticks vom MetaTrader 5 Terminal ab dem angegebenen Datum
MT5CopyTicksRange- empfängt Ticks für einen bestimmten Datumsbereich vom MetaTrader 5 Terminal
Die Optimierung im Prüfgerät erfolgt wie gewohnt. Fehlerhafte Berechnungen aufgrund von Datenbeschädigungen während der Übertragung von und zu Python sind ausgeschlossen, da die Übertragung über den Arbeitsspeicher und nicht über instabile Sockets oder Dateien erfolgt.
Ja, ich habe in meiner Bibliothek Code in MQL, Java und Python. Sie müssen jedoch nicht Java verwenden, wenn Sie Apache Spark usw. nicht benötigen.
Ich stimme zu, daß es über den Speicher schneller geht, aber ich stimme nicht zu, daß Sockets oder Pips nicht stabil sind, und die verrückte Speichergeschwindigkeit bei der Organisation eines Connectors ist unnötig, weil es einen Latenzaustausch <--- (Zwischenserver ist möglich) ---> Terminal gibt, für den selbst Hunderte von aufeinanderfolgenden Sockets innerhalb einer Maschine übermäßig viel sind...
ein Befehl und eine Liste von Parametern können als Zeichenkette, getrennt durch Trennzeichen, übergeben werden. Wenn der Expert Advisor die Nachricht entpackt, weiß er, was zu tun ist
Der Befehl OrderSend ?
Welches Format sollte die Zeichenkette haben? Zeichenfolge ? Im Socket-Beispiel wird der String vom mql5-Socketan result übergeben: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);. Ergebniszurückgeben;
Befehl OrderSend ?
Welches Format sollte die Zeichenkette haben? Zeichenfolge ? Im Socket-Beispiel wird der String vom mql5-Socket-Clientan result übergeben: socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len);. Ergebniszurückgeben;
nicht OrderSend(), sondern nur eine Zeichenkette mit den ersten 3 Buchstaben, z.B. "BUY", gefolgt von einer Liste von Argumenten: lot, take, sl. Der Expert Advisor liest die Zeichenkette, sieht die ersten 3 Buchstaben buy und stellt eine Trog-Anfrage
d.h. einfach ein einfaches Austauschprotokoll zwischen Anwendungen in freier Form entwerfennicht OrderSend(), sondern nur eine Zeichenkette mit den ersten 3 Buchstaben, z.B. "BUY", und dann eine Liste von Argumenten: lot, take, sl. Der Expert Advisor liest die Zeichenkette, sieht, dass die ersten 3 Buchstaben "buy" sind und stellt eine Trog-Anfrage
Denken Sie z.B. an ein einfaches Austauschprotokoll zwischen Anwendungen, in freier Form
Ein Beispiel von einem erfahrenen Entwickler wäre sehr hilfreich.
Ich habe bereits ein vollwertiges Python an das Terminal angeschlossen, und Sie verwenden immer noch langsam laufende Sockets und Pipes, um den Austausch vorzunehmen.
Wenn es nicht zu schwierig ist, wie lange dauert ein einziger Test in einem beliebigen Zeitrahmen?
Das heißt, uns interessiert die Frage, wie lang die Optimierungszeit im Tester ist und ob Fehlberechnungen möglich sind?
In früheren Kommentaren haben Sie geschrieben, dass ich Hintergrundwissen in JAVA brauche, um es zu verstehen.
Ich kenne auch einige C# und Python, ich kann in MQL4,5 programmieren, kann ich Ihre Bibliotheken ziemlich leicht zu meistern, wie viel schwieriger kann sie sein?
Ein Beispiel von einem erfahrenen Entwickler wäre sehr hilfreich.
es bleibt keine Zeit für Erklärungen, es sei denn, es gibt später einen Artikel mit Beispielen
Ist es nicht schwierig zu schreiben, wie lange ein einzelner Test in einem beliebigen Zeitrahmen dauert?
Das heißt, ich bin in der Frage interessiert, wie lange die Optimierung in der Tester und ob es falsche Berechnungen?
In früheren Kommentaren haben Sie geschrieben, dass ich Hintergrundwissen in JAVA brauche, um es zu verstehen.
Ich weiß, einige C# und Python, ich kann in MQL4,5 programmieren, kann ich Ihre Bibliotheken ziemlich leicht zu meistern, wie viel schwieriger kann sie sein?
Die Optimierung im Strategy Tester ist die gleiche wie die übliche. Fehlerhafte Berechnungen aufgrund beschädigter Daten während der Übertragung zu Python und zurück sind ausgeschlossen, da die Übertragung über den Arbeitsspeicher und nicht über instabile Sockets oder Dateien erfolgt.
Ja, ich habe in meiner Bibliothek Code in MQL, Java und Python. Sie müssen jedoch nicht Java verwenden, wenn Sie Apache Spark usw. nicht benötigen.
MetaTrader 5 build 2055 beta: Integration mit Python, C++-ähnlicher Umfang und massive Verbesserungen im Strategie-Tester
Terminal: Добавлено API для запроса данных из терминала MetaTrader 5 через приложения, использующие язык Python.
Python ist eine moderne High-Level-Programmiersprache für die Entwicklung von Skripten und Anwendungen. Enthält zahlreiche Bibliotheken für maschinelles Lernen, Prozessautomatisierung, Datenanalyse und Visualisierung.
DasMetaTrader-Paket für Python wurde entwickelt, um einfach und schnell Börsendaten über Interprozesskommunikation direkt vom MetaTrader 5-Terminal zu erhalten. Die so gewonnenen Daten können für statistische Berechnungen und maschinelles Lernen weiterverwendet werden.
Verbinden Sie
pip install pytz
Funktionen
Und? Arbeitet jemand in dieser Richtung? Sie scheint nicht begeistert zu sein.
Viel Glück!
Und? Arbeitet jemand in dieser Richtung? Er scheint nicht begeistert zu sein.
Viel Glück!
Die Optimierung im Prüfgerät erfolgt wie gewohnt. Fehlerhafte Berechnungen aufgrund von Datenbeschädigungen während der Übertragung von und zu Python sind ausgeschlossen, da die Übertragung über den Arbeitsspeicher und nicht über instabile Sockets oder Dateien erfolgt.
Ja, ich habe in meiner Bibliothek Code in MQL, Java und Python. Sie müssen jedoch nicht Java verwenden, wenn Sie Apache Spark usw. nicht benötigen.
Ich stimme zu, daß es über den Speicher schneller geht, aber ich stimme nicht zu, daß Sockets oder Pips nicht stabil sind, und die verrückte Speichergeschwindigkeit bei der Organisation eines Connectors ist unnötig, weil es einen Latenzaustausch <--- (Zwischenserver ist möglich) ---> Terminal gibt, für den selbst Hunderte von aufeinanderfolgenden Sockets innerhalb einer Maschine übermäßig viel sind...