Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 1174

 
Maxim Dmitrievsky:

Das ist es, was so ärgerlich ist, die ewigen Integrationen, die mehr Zeit in Anspruch nehmen als die TK-Entwicklung. Ich würde auch gerne etwas Python lernen, aber mir fehlt die Zeit dazu.

Leider gibt es keine Lösung für dieses Problem:

1. Entweder schreiben Sie in einer Fremdsprache (Plattform) für den TS, aber Sie bekommen Probleme:

a) keine historischen Daten

b) kein Prüfgerät

c) kein Test auf einem Demokonto

-) es kann einige Probleme mit der Plattformunterstützung geben, z.B. habe ich Alglib gegoogelt, es gibt sehr wenig Informationen darüber, alles nur auf der Website des Entwicklers, es gibt keinen Support

All diese Dinge müssen Sie mit .dll, Integrationen und anderen Krücken beheben.

2) Entweder Sie schreiben alles in MQL und Sie haben keine Probleme a.b.c. Sie werden entweder nach fertigen Lösungen und mathematischen Apparaten in der Codebasis suchen oder die gesamte Logik (des mathematischen Apparates) mit Hilfe der MQL-Fähigkeiten von Grund auf neu schreiben.

3. die universelle Variante ist eine fertige .dll, die im MQL-Code verwendet werden kann. Wenn Sie den Code selbst schreiben, ist dies die praktischste Lösung, Sie können die .dll nicht für Market verwenden.

Viele Entwicklungs- und Analysesysteme erlauben es, eine .dll zu erstellen, z.B. Matlab


ZS: MQL passt zu 90 % zu mir, das Einzige, was ich tun muss, ist, die Ergebnisse fast von Grund auf zu visualisieren. In Matlab ist der Output immer zur Hand, eine Zeile Code und man hat ein fertiges Diagramm, alle Variablen sind sichtbar, man kann die Variablen ändern... mit einem Wort, Matlab ist eine fertige Entwicklungsumgebung für eine Matrix.

 
Igor Makanu:

Ich meine, dass die Forschung in Bezug auf MO ein ziemlich spezifischer Prozess ist, bei dem man hauptsächlich mit Matrizen arbeitet, und dass es ein Alptraum ist, mit ihnen in Low-Level-Sprachen zu arbeiten. Der Rest kann irgendwie überlebt werden :)

 
Maxim Dmitrievsky:

alle MoD-Bibliotheken entwickelt haben, da diese nur auf den Profis aufbaut

sich nicht wohlfühlen und lange mit MO in einfachen Sprachen arbeiten, insbesondere in der Forschung

Ich habe einfach nicht die Wahl. Und im Allgemeinen wird alles angewandt - mein Schwerpunkt liegt auf Prädiktoren und ein wenig Targeting, und ich verbringe mehr Zeit damit, neue Prädiktoren vom Papier zum Code zu entwickeln. Die erste Frage, die ich mir stelle, ist also, ob es eine gute Idee war, neue Prädiktoren hinzuzufügen oder nicht! Und mit klarer Antwort auf diese Frage kann ich schließlich für andere Implementierungen / Ansätze der Integration in den endgültigen Code zu suchen, aber jetzt bin ich weit davon entfernt.

 
Igor Makanu:

Leider gibt es keine Lösung für dieses Problem:

1. oder in einer Fremdsprache (Plattform) TC schreiben, aber Sie bekommen Probleme:

a) keine historischen Daten

b) kein Prüfgerät

c) kein Test auf einem Demokonto

Was ist in einer Fremdsprache wert?

1. Laden Sie den Verlauf im CSV-Format hoch,

2. Erstellen Sie einen Tester (dies ist nur eine Schleife und nicht mehr),

3. auf einem Demokonto können Sie z.B. über den Dateiaustausch mit dem Terminal testen. Wenn Sie dies über die RAM-Disk tun, ist die Leistung wie beim Austausch durch den Speicher - Gigabytes pro Sekunde.

Wenn das System erfolgreich ist, was beim ersten Mal nicht der Fall sein wird, wird es eine Menge Zeit für die Modellierung sparen. Und später ist es eine überschaubare Angelegenheit, wie man es in das Terminal packt.

 
Maxim Dmitrievsky:

Ich meine die Forschung in Bezug auf MO, es ist ein ziemlich spezifischer Prozess, bei dem man hauptsächlich mit Matrizen arbeitet, es ist ein Alptraum, mit ihnen in Low-Level-Sprachen zu arbeiten. Der Rest ist noch irgendwie überlebensfähig :)

Ich verstehe - ich bin selbst in der gleichen Situation, deshalb ziehe ich nach dem Studium der Literatur oder des Mathe-Tools zunächst alles in Matlab, dann beginne ich zu experimentieren und portiere es teilweise in MQL. Die gleichen Matrizen und Vektoren in Matlab sind zunächst mit allen Variablen verknüpft, man muss nichts beschreiben oder analysieren, man arbeitet einfach, man multipliziert einen Vektor mit einer Matrix oder transponiert ihn, es ist schwer vorstellbar, was Matlab in Bezug auf mathematische Operationen nicht tun kann

SZY: Mit MO ist es noch eine lange Zeit, um in MQL zu sortieren, MATlAB scheint in der Lage zu sein, zu helfen, aber ich erinnere mich, als ich es installiert habe, war alles klar da und das Netzwerk wurde gezeichnet und der Zustand jedes Netzwerkelements konnte Schritt für Schritt betrachtet werden, wie NeuroSolutions, vielleicht komme ich später dazu

 
Aleksey Vyazmikin:

Ich habe einfach nicht die Wahl. Und im Allgemeinen wird alles angewandt - mein Schwerpunkt liegt auf Prädiktoren und ein wenig Targeting, und ich verbringe mehr Zeit damit, neue Prädiktoren vom Papier zum Code zu entwickeln. Die erste Frage, die ich mir stelle, ist also, ob es eine gute Idee war, neue Prädiktoren hinzuzufügen oder nicht! Und es wird eine klarere Antwort auf diese Frage geben, dann können wir schließlich nach anderen Implementierungen/Ansätzen suchen, um sie in den endgültigen Code zu integrieren, und davon bin ich im Moment noch weit entfernt.

Ehrlich gesagt, weiß ich nicht, was Ihre Gralsproduktionsphilosophie ist, da Sie maschinelles Lernen nur zur Auswahl von Prädiktoren verwenden... und was dann mit ihnen zu tun ist? )

 
Yuriy Asaulenko:

Was ist in einer Fremdsprache wert?

1. Laden Sie den Verlauf im CSV-Format hoch,

2. Erstellen Sie einen Tester (dies ist nur eine Schleife und nicht mehr),

3. auf einem Demokonto können Sie z.B. über den Dateiaustausch mit dem Terminal testen. Wenn Sie dies über die RAM-Disk tun, ist die Leistung wie beim Austausch durch den Speicher - Gigabytes pro Sekunde.

Wenn das System erfolgreich ist, was beim ersten Mal nicht der Fall sein wird, wird es eine Menge Zeit für die Modellierung sparen. Und danach ist es eine überschaubare Angelegenheit, wie man es in das Terminal hineinbekommt.

1. das ist, was ich in Matlab mache.

Ich habe vor langer Zeit versucht, es in Delphi zu tun, aber zum Glück ist es mir nicht gelungen. Ich bin zu MQL gewechselt, ich kann den Drawdown sehen und visualisieren, wie der EA gehandelt hat, ich kann vorgefertigte Indikatoren als zusätzliche Filter hinzufügen, ich kann Trailing-Bars hinzufügen, Mittelwertbildung... Ich kann alles im Tester sehen, alles in einer Drittanbieter-Software simulieren.Es ist einfacher, MQL in 3-4 Monaten von Grund auf zu studieren und zu lernen, EAs aus einer Vorlage zu schreiben, jetzt kann ich jeden grafischen Indikator im Tester in 15 Minuten überprüfen - ich schreibe meinen EA mit einer vorgefertigten Vorlage in Form von prozeduraler Programmierung, d.h. ich verbinde einfach vorgefertigte Funktionen

3. ich kann es tun, aber ich habe alles in MQL, was ich nicht habe, ich beende es oder verbinden die .dll


Aber dann wieder zum Thema Modellierung - wir leben in glücklichen Zeiten, fertige Lösungen gibt es im Web wie Sand am Meer, die Modellierungsumgebung und die Handelsplattform sollten getrennt werden, so dass sich herausstellt, dass eine Person ein Entwickler und ein Programmierer und ein Mathematiker sein muss, und ... und alles.

Entweder das oder wie 90% der "Händler" in Runet handeln mit primitiven TS)))

 
Maxim Dmitrievsky:

Ich weiß ehrlich gesagt nicht, was Ihre Gralsproduktionsmethodik ist, denn Sie verwenden maschinelles Lernen nur, um Prädiktoren auszuwählen... und was machen Sie dann mit ihnen? )

Ich wähle Prädiktoren aus, um fehlerhafte Prädiktoren zu beseitigen, die verrauscht sind und zum Überlernen beitragen...

Gleichzeitig untersuche ich Baumblätter für R, die sich ebenfalls als ziemlich gute Prädiktoren erweisen, und Catbust frisst sie mit Genuss.

Jetzt habe ich verlängerte Experiment auf R Baum Wurzel Splitting, d.h. nach dem Aufbau eines neuen Baumes (mit Genetik - ich weiß nicht, Details, fürDr. Trader-Skript), ich entfernen Wurzel Prädiktor und bauen Baum wieder - dieser Prozess ist nicht schnell - im Durchschnitt dauert es 3-4 Tage, so dass ich bereits auf 29 Splitting, und was ist interessant, auch jetzt neue und interessante Baum Blätter erscheinen, die in positive Gewinne in 2014-2018 (jedes Jahr Gewinne) arbeiten, und die Ausbildung ist auf 2015-2017. Daraus folgt, dass Algorithmen zur Baumbildung immer noch keine guten Ergebnisse liefern, da sie die offensichtlichen Dinge übersehen, wenn sie einen Überschuss an guten Prädiktoren haben, aber wenn sie anfangen zu hungern, entstehen neue Lösungen. Generell möchte ich aus dieser Erfahrung heraus versuchen, die Prädiktoren in Gruppen zu füttern, um zu sehen, wo die größte Empfindlichkeit besteht. Dann möchte ich verschiedene Bäume mit verschiedenen Gruppen bauen, ein kollektives Entscheidungsgremium aus ihnen bilden und zum Handel schicken...

 
Aleksey Vyazmikin:

Ich wähle Prädiktoren aus, um fehlerhafte Prädiktoren auszusortieren, die verrauscht sind und zum Überlernen beitragen...

Gleichzeitig entnehme ich Baumblätter für R, die sich ebenfalls als gute Prädiktoren erweisen und von Catbust eifrig gefressen werden.

Jetzt habe ich verlängerte Experiment auf R Baum Wurzel Splitting, d.h. nach dem Aufbau eines neuen Baumes (mit Genetik - ich weiß nicht, Details, fürDr. Trader's Skript), ich entfernen Wurzel Prädiktor und bauen Baum wieder - dieser Prozess ist nicht schnell - im Durchschnitt 3-4 Tage, so dass ich bereits auf 29 Splitting, und was ist interessant, neue und interessante Baum Blätter, die in positive Gewinne in 2014-2018 (jedes Jahr Gewinne), und das Lernen ist auf 2015-2017, erscheinen auch jetzt. Daraus folgt, dass Algorithmen zur Baumbildung immer noch keine guten Ergebnisse liefern, da sie die offensichtlichen Dinge übersehen, wenn sie einen Überschuss an guten Prädiktoren haben, aber wenn sie anfangen zu hungern, entstehen neue Lösungen. Generell möchte ich aus dieser Erfahrung heraus versuchen, die Prädiktoren in Gruppen zu füttern, um zu sehen, wo die größte Sensitivität zu finden ist. Dann baut man mit verschiedenen Gruppen verschiedene Bäume, macht ein kollegiales Entscheidungsgremium aus ihnen und schickt sie auf den Markt...

Ich verstehe nicht wirklich die Aufteilung der Wurzel des Baumes... wenn auch nur für das Schema :) und wie können die Blätter separat arbeiten, die Arbeitsstruktur ist der Baum als Ganzes...

ich werde morgen darüber nachdenken, ich bin müde :)

Übrigens verfügt mql5 über die Standardklassen ctree und cnode zum Aufbau von Binärbäumen. Wenn Sie wissen, wie man sie für Datamining verwendet ... aber ich weiß es nicht, aber es scheint, dass Sie so etwas haben

 
Maxim Dmitrievsky:

Ich verstehe nicht wirklich über die Aufteilung der Baumwurzel... eine schematische Darstellung wäre schön :) und wie die Blätter separat arbeiten können, die Arbeitsstruktur ist der Baum als Ganzes...

Ich werde morgen darüber nachdenken, ich bin müde :)

Übrigens verfügt mql5 über die Standardklassen ctree und cnode zum Aufbau von Binärbäumen. Wenn Sie wissen, wie man sie für Datamining verwendet... aber ich weiß es nicht, aber Sie scheinen so etwas zu haben

"Baumwurzel" ist in meiner Sprache der allererste Prädiktor, der den Baum in weitere Äste aufspaltet - normalerweise in zwei Teile (es gibt aber auch andere Varianten).

Unter "Aufspaltung des Baums" versteht man den Ausschluss des Wurzelprädiktors aus der Stichprobe vor der erneuten Verarbeitung der Daten.

Die Blätter sind nur ein Satz von Regeln, die nur selten angewendet werden, aber im Gegensatz zum gesamten Baum stabile Ergebnisse liefern können. Wenn der Algorithmus die Marktsituation nicht versteht, ist es besser, ihn warten zu lassen, bis die Karten gelegt sind und er eine Entscheidung treffen kann.

Für jetzt habe ich mehr als 20000 Blätter verarbeitet und ich habe gesehen, was Genetik verworfen hat - gute Blätter für Handelsentscheidungen etwa 200 von ihnen herausstellen - diejenigen mit Gewinn jedes Jahr und akzeptable Rentabilität (1,4 als Minimum), aber es gibt gute Filter mit "warten" Signal - ich habe sie nicht gezählt - jetzt bin ich meine Methode für ihre genaue Auswahl zu entwickeln.

Ich habe 3 Klassen, d.h. der Baum hat kaufen, verkaufen und warten Signal, es ist jetzt ich experimentieren mit catbust und vereinfacht die Ziele in eine Klasse komprimiert werden...

Ich weiß nichts über ctree und cnode Klassen, und über OOP im Allgemeinen - ich bin nicht sehr gut im Programmieren, so dass man kaum Klassencodes ohne einen Programmierer verstehen kann...