Diskussion zum Artikel "Selbstoptimierende Expert Advisors in MQL5 erstellen"

 

Neuer Artikel Selbstoptimierende Expert Advisors in MQL5 erstellen :

Bauen wir Expert Advisor, die in die Zukunft blicken und sich an jeden Markt anpassen können.

Die Entwicklung eines Handelsroboters, der sich an die aktuellen Marktbedingungen anpassen kann, ist der Schlüssel zu stabilen algorithmischen Handelsstrategien. Unser Ziel ist es, mehr als nur auf einige wenige Symbole beschränkte Bots zu schaffen. Wir beabsichtigen, Systeme zu entwickeln, die lernfähig sind und sich an jedes Handelssymbol anpassen können. Dieser Leitfaden konzentriert sich auf die Verwendung von MQL5 zur Entwicklung von Bots, die sich selbst für jede Handelsumgebung optimieren können.

Entgegen mancher Meinung ist MQL5 ideal für diese Aufgabe geeignet. Seine API bietet umfangreiche Matrix- und Vektorfunktionen, die die Erstellung kompakter Modelle für maschinelles Lernen ermöglichen. Diese Einführung legt den Schwerpunkt auf die Verwendung von MQL5 zur Erstellung selbstoptimierender Bots. Ein objektorientierter Programmieransatz reduziert die sich wiederholende Codierung und verbessert die Anpassungsfähigkeit über verschiedene Zeitrahmen und Marktbedingungen hinweg.

Die Entscheidung für die Matrix- und Vektorfähigkeiten von MQL5 gegenüber Alternativen wie ONNX und Python hat erhebliche Vorteile. Die Verwendung eines ONNX-Modells würde separate Modellinstanzen für jedes Handelssymbol und neue Modelle für jede geringfügige Parameteränderung, wie z. B. Zeitrahmenanpassungen, erfordern. MQL5 hingegen bietet Anpassungsfähigkeit, ohne dass zahlreiche Modelle für unterschiedliche Bedingungen verwaltet werden müssen.

Autor: Gamuchirai Zororo Ndawana

 

Vielen Dank für die Weitergabe dieser Informationen und dafür, dass Sie sich die Zeit genommen haben, sie auf sehr angenehme und lesbare Weise zu erklären. Ausgezeichnet.

Mit freundlichen Grüßen,

Antonio

 
Antonio Simon Del Vecchio #:

Vielen Dank für die Weitergabe dieser Informationen und dafür, dass Sie sich die Zeit genommen haben, sie auf sehr angenehme und lesbare Weise zu erklären. Ausgezeichnet.

Mit freundlichen Grüßen,

Antonio

Sie sind zu freundlich, Antonio, vielen Dank für Ihre freundlichen Worte.
 
Vielen Dank, Gamuchirai, das ist erstaunlich, gut getimt und relevant in unserem EA-Handel Alter.

Du bist der Beste :-)
 
Douglas I #:
Vielen Dank, Gamuchirai, das ist erstaunlich, gut getimed und relevant in unserem EA-Handel Zeitalter.

Du bist der Beste :-)
Danke Douglas, ich bin froh, zu helfen.

Los geht's.🔥
 

Vielen Dank für die Veröffentlichung, wieder einmal ein sehr einzigartiger Ansatz. Ich bin aufgeregt, interessiert zu verstehen und umzusetzen die appraoch. Ich komme mit solchen und informativen Erklärungen, es ist ein Vergnügen zu lesen und verbessert mein Verständnis stark. Ich schätze Ihre Zeit, die Sie in die Erstellung dieses Artikels investiert haben.

Mit freundlichen Grüßen Neil

 
linfo2 #:

Vielen Dank für die Veröffentlichung, wieder einmal ein sehr einzigartiger Ansatz. Ich bin begeistert, interessiert zu verstehen und umzusetzen die appraoch. Ich komme mit solchen und informativen Erklärungen, es ist ein Vergnügen zu lesen und verbessert mein Verständnis stark. Vielen Dank für die Zeit, die Sie in die Erstellung dieses Artikels investiert haben.

Mit freundlichen Grüßen Neil

Vielen Dank, Neil, es gibt so viele Menschen, die hinter den Kulissen helfen, wie Rashid und andere Moderatoren, die all dies möglich machen, wir können unmöglich allen danken. Ich bin froh, dass ich einen Mehrwert geschaffen habe, das ist immer das Ziel. Eigentlich ist es das einzige Ziel.

 
Wenn ich die LinearRegressionEA an einem Wochenende ausprobiere, erhalte ich undefinierte Werte für die Werte m[0] und b[0] in der LinearRegression,mqh, Klasse Predict() metod gibt also undefiniert zurück -nan, beim Backtesting im Strategy Tester.
Methode Trained() hat zu diesem Zeitpunkt true zurückgegeben.
Könnte es etwas damit zu tun haben, dass wir außerhalb der Handelszeiten sind?

UPDATE: Es handelt sich wahrscheinlich um ein Problem mit historischen Daten. Ich arbeite im Modus 'echte Ticks'. Wenn ich einen Backtest mit Daten von einem Monat später durchführe, funktioniert es. Ich werde sehen, ob ich einen Code hinzufügen kann, der die undefinierten Daten nicht unerkannt durchrutschen lässt. Ich sehe, dass es einige Überprüfungen für undefinierte m[0] und d[0] gibt, aber ich brauche vielleicht mehr davon. Ich werde das morgen überprüfen.



 
Gunnar Forsgren Strategy Tester.
Methode Trained() hat zu diesem Zeitpunkt true zurückgegeben.
Könnte es etwas damit zu tun haben, dass wir außerhalb der Handelszeiten sind?

UPDATE: Es handelt sich wahrscheinlich um ein Problem mit historischen Daten. Ich arbeite im Modus 'echte Ticks'. Wenn ich einen Backtest mit Daten von einem Monat später durchführe, funktioniert es. Ich werde sehen, ob ich einen Code hinzufügen kann, der die undefinierten Daten nicht unerkannt durchrutschen lässt. Ich sehe, dass es einige Überprüfungen für undefinierte m[0] und d[0] gibt, aber ich brauche vielleicht mehr davon. Ich werde das morgen überprüfen.



Meine Beobachtung, dass die Backtests bei jedem Tick durchgeführt werden, konnte durch den expliziten Export von Tick- und Bar-Historiendateien aus der Symbolliste und das Speichern in einem Dateipfad, in dem der Tester auf sie verweist, gelöst werden.
Die Dateien müssen den Bereich der Tage abdecken, für den die Tests durchgeführt werden. Dies kann für einen Anwendungsfall nützlich sein, bei dem ein Zeitraum in der Vergangenheit wiederholt für die Verbesserung einer Strategie verwendet wird.
Standardmäßig lädt der Tester diese Daten bei jedem Testlauf aus dem Netz herunter, und offenbar ist dies manchmal nicht zuverlässig. Es scheint besser zu funktionieren, diese Daten lokal zu halten.
Normalerweise gibt es beim ersten Versuch, sie lokal zu referenzieren, etwas Dateipfad-Akrobatik, bis man den richtigen Pfad herausfindet,
zur Veranschaulichung in meinem Fall ist der Windows-Pfad "C:\Benutzer\<Benutzername>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Dieser Beitrag enthält Hinweise: https://www.mql5.com/en/forum/367098#comment_21816898

Where to locate files for Strategy tester to find them
Where to locate files for Strategy tester to find them
  • 2021.04.12
  • Anthony Eric Gillon Dawson
  • www.mql5.com
MT5 has a very bizarre way of handling files...
 
Gunnar Forsgren Strategy Tester.
Methode Trained() hat zu diesem Zeitpunkt true zurückgegeben.
Könnte es etwas damit zu tun haben, dass ich außerhalb der Handelszeiten bin?

UPDATE: Es handelt sich wahrscheinlich um ein Problem mit historischen Daten. Ich arbeite im Modus 'echte Ticks'. Wenn ich einen Backtest mit Daten von einem Monat später durchführe, funktioniert es. Ich werde sehen, ob ich einen Code hinzufügen kann, der die undefinierten Daten nicht unerkannt durchrutschen lässt. Ich sehe, dass es einige Überprüfungen für undefinierte m[0] und d[0] gibt, aber ich brauche vielleicht mehr davon. Ich werde das morgen überprüfen.



Ihr proaktiver Ansatz gefällt mir. Sie haben recht, es gibt mehrere Ausnahmen, die beim Abrufen historischer Daten ausgelöst werden können. Wenn Sie zum Beispiel versuchen, mitten in einer Handelssitzung den Zeitrahmen zu wechseln, kann das "-nan"-Problem erneut auftreten.


Es gab einen Kompromiss zwischen der Verständlichkeit der Nachricht und der Behebung aller Fehler, die ich beobachtet habe. Hätte ich mich für Letzteres entschieden, wäre der Code zwangsläufig komplexer und nicht so einfach zu verstehen gewesen, wie er jetzt ist. Daher habe ich mich für einen leicht verständlichen Code entschieden, mit der Absicht, dass Sie ihn schnell erweitern können.

Ihre Lösung klingt sehr vielversprechend, wie entwickelt sie sich?

 
Gunnar Forsgren #:

Meine Backtest-Beobachtung "jeder Tick" wurde dadurch gelöst, dass ich explizit Tick- und Balkenverlaufsdateien aus der Symbolliste exportierte und sie in einem Dateipfad speicherte, in dem der Tester auf sie verweist.
Die Dateien müssen den Bereich der Tage abdecken, für den die Tests durchgeführt werden. Dies kann für einen Anwendungsfall nützlich sein, bei dem ein Zeitraum in der Vergangenheit wiederholt für die Verbesserung einer Strategie verwendet wird.
Standardmäßig lädt der Tester diese Daten bei jedem Testlauf aus dem Netz herunter, und offenbar ist dies manchmal nicht zuverlässig. Es scheint besser zu funktionieren, diese Daten lokal zu halten.
Normalerweise gibt es beim ersten Versuch, sie lokal zu referenzieren, etwas Dateipfad-Akrobatik, bis man den richtigen Pfad herausfindet,
zur Veranschaulichung, in meinem Fall ist der Windows-Pfad "C:\Benutzer\<Benutzername>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Dieser Beitrag liefert Hinweise: https://www.mql5.com/en/forum/367098#comment_21816898

In der Tat ist es eine große Verbesserung, die Daten lokal zu haben. Wenn wir die Daten lokal haben, sind wir in der Lage, nicht nur die Koeffizienten unserer linearen Regression zu ändern, sondern auch die Parameter unserer technischen Indikatoren zu optimieren. Sie haben den Nagel auf den Kopf getroffen.

Vielen Dank für die Bereitstellung des Links. Ich werde die Zeit finden, ihn durchzugehen.