Diskussion zum Artikel "Entwicklung eines Roboters in Python und MQL5 (Teil 1): Vorverarbeitung der Daten" - Seite 6

 
Über stationäre Zeichen, durch die Art und Weise, eine weitere Beobachtung.

Das XGBoost-Modell auf Tests, egal wie oft ich es laufen, auf verschiedenen Daten, zeigt eine nach der anderen profitable vorwärts, Dutzende Male auf verschiedenen Daten mit aktuellen Zeichen. Obwohl ich ein Anfänger bin, aber kein Idiot, habe ich das Training für 2007-2016 abgeschnitten, und dann reine Forward-Test. Die Genauigkeit der Tags mit Risiko-Belohnungs-Trades 1:8 - 66% auf Termingeschäfte ist durchschnittlich, manchmal wirft XGB 72-74% raus. Alle anderen Modelle, neuronale Netze, alle anderen Bousting, Random Forests - schütten göttlich.

Ich würde nicht einmal den ersten Artikel eines Zyklus mit aktuellen Merkmalen veröffentlichen, wenn sie seit mehr als 10 Jahren ein gebrauchtes Modell für die Vorwärtsbewegung einsetzen.

Es gibt einen Grund, warum das XGB-Modell viele Prognosen und Data-Science-Wettbewerbe schlägt. Offenbar weiß es, wie man mit Rohdaten umgeht. Und die Kreuzvalidierung ist eingebaut. Ich wurde von einem Bekannten Wissenschaftler, Doktor der Wissenschaften, er verwendet es für die Vorhersage, gut, und Trades zu, warf er mir einen Handelsbericht mit Profit-Faktor von 55, aber er verschwand aus dem Internet, er hatte eine Menge von Entwicklungen, es ist nicht klar, was mit ihm passiert sein könnte. Eigentlich war er es und auch super Artikel von Maxim Dmitrievsky, die mich vor ein paar Jahren zu MO gebracht haben.

Aber XGB braucht sehr viel Zeit zum Lernen. Das letzte Modell wurde zwei Tage lang trainiert, ich bin das Warten schon leid, während ein normales Boolesches Modell normalerweise in ein paar Minuten auf dem Server lernt. Aber für mich ist dies in gewisser Weise ein Indikator für die Komplexität und Effizienz des Algorithmus. Ich werde einen leistungsfähigeren Server für die Forschung mieten.

Ich hoffe, dass die ONNX-Version nicht zu viel wiegt und zu viele Zeilen hat. In MQL5 gibt es eine Begrenzung für die Anzahl der Zeilen der ONNX-Modelldaten. Ich habe einmal ein Modell mit 100 Millionen Zeilen trainiert und war sehr verärgert darüber, mcl lässt mich es nicht benutzen) Ich denke, es wird viel wiegen, und in Erwartung dessen habe ich ein Modell für den Online-Handel direkt durch Python gemacht, es wird in den nächsten Artikeln des Zyklus erscheinen, am Montag werde ich es testen. Der Entwurf der Serie ist bereits fertig. Ich wollte zuerst alles in einem Blatt veröffentlichen, aber die Verwaltung hat mich nicht gelassen, und das ist wahrscheinlich richtig, es wäre langweilig, so ein Durcheinander zu lesen).

Die Idee eines Scalpers für Sber in Finam MT 5 ist aufgetaucht, der Punkt ist, dass es eine Funktion in der Python-Bibliothek von mcl gibt, um die Geschichte des Preisstapels zu erhalten, was, wenn wir ein Modell darauf trainieren, und lassen Sie es scalpit, Jungs in den Propahs sind auf dem Stapel Handel, und ziemlich erfolgreich. Nach den Erfahrungen der Prop-Trader zu urteilen, bin ich nicht der Erste, der eine solche Idee hat, und es gibt schon seit langem eine Menge solcher Scalping-Algorithmen auf MO. Scalping ist attraktiv, weil die Rentabilität tagein, tagaus gedeckt werden kann. Ich habe ein Finam-Konto als ausländischer Investor in Russland, wenn auch ein kleines. Vielleicht wird der letzte Artikel der Serie also einem solchen Scalper an der Moskauer Börse oder der CME über Finam oder AMP Futures Europe gewidmet sein.

Ich habe auch einen Entwurf für Computer Vision auf Python, ich werde einen Artikel darüber nach dem aktuellen Zyklus machen.

Es gibt viele Ideen, wirklich viele, jeden Tag kommt eine neue Idee und ich setze mich an den Code. Obwohl meine Frau sagt, lasst uns schon Geld verdienen, nehmt die US Prop USA mit dem was ihr habt, macht Geld. Es gibt schon Dutzende von ausgebildeten Modellen. Aber ich bin mehr an der Forschung interessiert. Ich schätze, es ist wahr, ich sollte ein Konto eröffnen und mich beruhigen. Ich habe im Februar ein Konto eröffnet, und wie es der Zufall will, gab es Probleme mit den Requisiten mit Meta-Quoten, ich verstehe, dass die Requisiten keine Lizenzen kaufen wollten und betrogen haben. Wie es der Zufall wollte, entfernte meine Requisite MT 5, ich handelte mit meinen Händen über ein anderes Terminal, das sie anstelle von MT 5 einsetzten, und ich verlor am Ende. Ich werde ein neues Konto bei einem anderen Anbieter mit MT 5 eröffnen und darüber berichten, wie der Handel läuft.

Über die Tatsache, dass die Auswahl der besten Prädiktoren auf das VORHERIGE Datum beschränkt sein sollte, ist es eine sehr gute Idee, ich habe diesen Punkt irgendwie übersehen).
 

Vorwärtsprobe von 2010, Training vor 2010.

Ich habe zum Beispiel auch die EXAMWARD-Stichprobe implementiert, um das Modell daran separat zu testen, hier ist das Ergebnis. ALLE anderen Modelle und neuronalen Netze haben sich seit dem ersten Tag auf diese Merkmale gestürzt.

 

Und das ist der Unterschied zwischen einem einfachen Forward:

Und ein Forward mit Chips wie Kreuzvalidierung, Modell-Bagging (ja, das ist alles standardmäßig in XGB integriert, aber ich habe beschlossen, es zu implementieren), Grid-Hyperparameter-Aufzählung, etc:


 
Yevgeniy Koshtenko #:
Wenn die Klassenbezeichnungen nicht zurückgesetzt werden, dann sind die Bezeichnungen selbst das beste Merkmal für die Vorhersage von Bezeichnungen, oder?

Man setzt die Bezeichnungen nicht zurück (was als Synonym "zurücksetzen - löschen" bedeutet), sondern schließt Spalten aus, die Bezeichnungen enthalten, und speist die Bezeichnungen selbst separat als Ziele in das Modell ein, d. h. die Informationen über sie werden nicht zurückgesetzt und verschwinden nicht unwiderruflich, sondern werden beim Training des Modells verwendet.

 
Yevgeniy Koshtenko #:
Das XGBoost-Modell auf Tests, egal wie oft ich es laufen, auf verschiedenen Daten, zeigt eine nach der anderen profitable vorwärts, Dutzende Male auf verschiedenen Daten mit aktuellen Zeichen. Obwohl ich ein Anfänger, aber kein Idiot bin, habe ich das Training für 2007-2016 abgeschnitten, und dann reine Forward-Test. Die Genauigkeit der Tags mit Risiko-Belohnungs-Trades 1:8 - 66% auf Termingeschäfte ist durchschnittlich, manchmal wirft XGB 72-74% raus. Alle anderen Modelle, neuronale Netze, alle anderen Bousting, Random Forests - gießen ungöttlich.

Es gibt eine Menge Anfängerfehler in dem Artikel - ich schrieb früher, wenn Sie den gleichen Code verwenden - es kann Wunder geben.

Versuchen Sie, Ihre Lösung für einen Monat auf einer Demo zu handeln, dann vergleichen Sie Einstiegspunkte, indem Sie eine Probe, um das Modell zu testen.

Es ist sicherlich interessant, über die Wunder von XGB zu lesen, vor allem, wie Sie Hyperparameter gefunden haben - ich habe gelesen, dass es sehr empfindlich auf sie reagiert.

 
Rashid Umarov #:

Ich wollte Ihnen nicht zu nahe treten, um Sie nicht zu beleidigen :)

Überprüfen Sie in Zukunft Ihre Quelle, bevor Sie einen Vorwurf erheben.

Ich habe das Terminal im portablen Modus installiert, muss ich den Schlüssel "portable" auf irgendeine Weise schreiben?

Wenn das Terminal läuft, funktioniert der Code nicht, und wenn man es ausschaltet, versucht es, ohne den Schlüssel zu starten, aber auch das funktioniert nicht.

 
Aleksey Vyazmikin #:

Ich habe das Terminal im portablen Modus installiert. Muss ich den Schlüssel "portable" auf irgendeine Weise schreiben?

Wenn das Terminal läuft, funktioniert der Code nicht, und wenn ich es ausschalte, versucht es, ohne den Schlüssel zu booten, aber auch das funktioniert nicht.

Versuchen Sie, das Skript direkt über das Terminal auszuführen. Geben Sie das Skript einfach in das Diagramm ein, und die Ergebnisse werden auf der Registerkarte "Experten" ausgegeben.

Vielleicht müssen Sie den Pfad zum Python-Ordner im Meta-Editor angeben.

Bei mir funktioniert es so. Aber nach einer Menge Tanz))))

 
Aleksandr Slavskii #:

Versuchen Sie, das Skript direkt über das Terminal auszuführen. Werfen Sie das Skript einfach auf das Diagramm, und die Ergebnisse werden auf der Registerkarte "Experten" ausgedruckt

Vielleicht müssen Sie den Pfad zum Python-Ordner im Meta-Editor angeben.

Bei mir funktioniert es so. Aber nach einer Menge Tanz))))

Verwendest du Terminal im portablen Modus?

In ME ist der Pfad vorgegeben (erschien automatisch).

 
Aleksey Vyazmikin #:

Sind Sie mit dem Terminal im portablen Modus?

In ME ist der Pfad vorgegeben (erscheint automatisch).

Ich habe es in der portablen Version überprüft, alles funktioniert.

Wenn zwei Terminals laufen und der Pfad zum Terminal nicht im Skript angegeben ist, tritt in einem der Terminals ein Fehler auf, wenn man versucht zu kompilieren.

 
Aleksandr Slavskii #:

In der portablen Version funktioniert alles.

Wenn zwei Terminals laufen und der Pfad zum Terminal nicht im Skript angegeben ist, tritt in einem der Terminals ein Fehler auf, wenn versucht wird, zu kompilieren.

Ich habe es von einem Terminal aus gestartet

2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 1)
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 2)
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 3)
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 4)
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 5)

Der Pfad wurde auf beiden Wegen zum Terminal angegeben.

terminal_path = "C:/FX/MT5_02/terminal64.exe"
#terminal_path = "C:\\FX\\MT5_02\\terminal64.exe"

Irgendwo wird an der falschen Stelle gesucht - es gibt eine Historie im Terminal.