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

 

Danke, ich habe mir die Spalten angeschaut, im Prinzip habe ich das auch schon gemacht - Deltas, Min, Max, Zeit, etc.

Der Weg zur Erstellung eines Forex-Handelsmodells für mich wird immer komplizierter, einfache Wege führen nicht zu stabilen Ergebnissen. Ich sehe das jetzt folgendermaßen:

1) Entladen Sie die Daten von MT5: Ohlc, Zeit, Indikatoren. In diesem Stadium werde ich keine Deltas hinzufügen.

2) Laden von Daten in R, Hinzufügen einer großen Anzahl neuer Spalten durch Hinzufügen, Subtrahieren, Minimum, Maximum usw. der ursprünglichen Daten. Es ist einfacher, dies in R zu tun als in mt5.

3) irgendwie Teilmengen von Eingabedaten (nach Spalten) auswählen. Ich kann Alexeys Beispiel folgen und GenSA oder einfach genetische Optimierung mit dem GA-Paket verwenden. Da ich nur ein binäres Ergebnis pro Eingang (an/aus) benötige, hat GA meiner Meinung nach einen Vorteil, es hat eine binäre Arbeitsweise. Aber ich muss versuchen, beide Pakete zu vergleichen.

4) Analyse von Teilmengen von Eingaben. Dies ist auch in Alexejs Beispiel der Fall. Aber ich werde das Risiko eingehen, das Modell gleich auf einer Teilmenge von Eingaben zu trainieren und den Fehler der Validierungsdaten als Ergebnis zu verwenden. Solange die Lernzeit des Modells nicht mehr als ein paar Sekunden beträgt.

5) Gehen Sie zurück zu Schritt 2, fügen Sie neue gezählte Eingaben hinzu, führen Sie weitere Schritte durch und wiederholen Sie diese Zyklen, bis sich das Ergebnis nicht mehr verbessert.

Ich habe auch ein wenig mit dem Artikel über die Methode der Hauptkomponenten experimentiert. Das Beispiel aus dem Artikel enthält die Nuance, dass das Ergebnis genau aus den Eingabedaten berechnet werden kann. In meinem Fall, wenn die Eingabedaten offensichtlich nicht ausreichen, verwendet diese Methode Rauschen zum Lernen. Es stellt sich heraus, dass, wenn diese Methode ein Ergebnis (r-Quadrat) von 0,95 mit nur ein paar Komponenten erzielen kann, die im Modell verwendeten Prädiktoren höchstwahrscheinlich korrekt sind. Wenn das r-Quadrat selbst bei Verwendung aller Komponenten immer noch unter 0,95 liegt, enthält das Modell Rauschen in seinen Berechnungen. Es ist jedoch bemerkenswert, dass mit der Hinzufügung zusätzlicher Rauschprädiktoren das r-Quadrat allmählich abnimmt. Ich denke, dass man auf diese Weise Teilmengen von Prädiktoren miteinander vergleichen kann - wenn r-squared größer ist, dann ist die Teilmenge besser.

 
Dr.Trader:


Ich habe auch etwas mehr mit dem Artikel über die Hauptkomponentenmethode experimentiert. In dem Beispiel aus dem Artikel gibt es die Nuance, dass das Ergebnis aus den Eingabedaten genau berechnet werden kann. In meinem Fall, wenn die Eingabedaten offensichtlich nicht ausreichen, beginnt diese Methode, Rauschen zum Lernen zu verwenden. Es stellt sich heraus, dass, wenn diese Methode ein Ergebnis (r-Quadrat) von 0,95 mit nur ein paar Komponenten erzielen kann, die im Modell verwendeten Prädiktoren höchstwahrscheinlich korrekt sind. Wenn das r-Quadrat selbst bei Verwendung aller Komponenten immer noch unter 0,95 liegt, enthält das Modell Rauschen in seinen Berechnungen. Es ist jedoch bemerkenswert, dass mit der Hinzufügung zusätzlicher Rauschprädiktoren das r-Quadrat allmählich abnimmt. Ich denke, dass dies eine Möglichkeit ist, Teilmengen von Prädiktoren miteinander zu vergleichen - wenn r-squared größer ist, dann ist die Teilmenge besser.

Was wir bisher in Bezug auf die Vorauswahl von Prädiktoren, die für die Zielvariable "relevant" sind, haben, ist, dass Alexey eine Reihe von Techniken hat und ich auch. Es wäre keine schlechte Idee, eine weitere zu haben. PCA ist sehr attraktiv, da es weithin bekannt ist und es viel Literatur gibt: .... Es gibt jedoch eine große Anzahl von Algorithmen, die die "Wichtigkeit" der Prädiktoren berechnen, aber ich habe es nicht geschafft, sie zu verwenden. In Kombination mit meinem Algorithmus liefert jedoch fast jeder dieser Standardalgorithmen gute Ergebnisse - der Fehler wird um 5-7 % reduziert.

Und die Zahl der anfänglichen Prädiktoren sollte meiner Meinung nach einige Dutzend betragen, bei mehreren Tausend Beobachtungen. Wenn in der Statistik etwas nicht ausreicht, dann gibt es keine Statistik.

 
Dr. Trader:

Danke, ich habe mir die Spalten angeschaut, im Prinzip habe ich das auch schon gemacht - Deltas, Min, Max, Zeit, etc.



Bitte sehr. Du kannst auch an meinem Bausatz üben. Das Experiment ist qualitativ hochwertig gestaltet. Die Daten sind gut. Und ein positives Ergebnis bei der Validierung zu erhalten, ist gar nicht so einfach.

1) Entladen Sie die Daten von MT5: ohlc, Zeit, Indikatoren. Ich werde in diesem Stadium keine Deltas hinzufügen.

2) Laden von Daten in R, Hinzufügen einer großen Anzahl von neuen Spalten durch Hinzufügen, Subtrahieren, Min, Max, etc. der ursprünglichen Spalten. Es ist einfacher, dies in R zu tun als in mt5.

3) irgendwie Teilmengen von Eingabedaten (nach Spalten) auswählen. Ich kann Alexeys Beispiel folgen und GenSA oder einfach genetische Optimierung mit dem GA-Paket verwenden. Da ich nur ein binäres Ergebnis pro Eingang (an/aus) benötige, hat GA meiner Meinung nach einen Vorteil, es hat eine binäre Arbeitsweise. Aber Sie müssen versuchen, beide Pakete zu vergleichen.

Hier würde ich raten, zwei Punkte zu beachten: Erstens - die Eingaben sollten in Bezug auf ihren Durchschnitt allvdostationär sein. Zweitens - über den Mechanismus der Spaltenaufzählung; ja, GA hat einen binären Modus. GenSA tut das nicht, aber ich habe eine binäre Auswahl simuliert.

4) Analyse von Teilmengen von Eingaben. Dies ist auch in Alexejs Beispiel der Fall. Aber ich werde das Risiko eingehen, das Modell gleich auf einer Teilstichprobe der Eingaben zu trainieren und als Ergebnis die Fehler der Validierungsdaten zu verwenden. Solange die Lernzeit des Modells nicht mehr als ein paar Sekunden beträgt.

Gute Idee! Bedenken Sie jedoch, dass der gesamte Prozess sehr lange dauern kann, da in der Regel Tausende von Iterationen erforderlich sind. Diese Fitnessfunktion ist die komplexeste, da sie das gesamte Modell berechnet. Ich hingegen wende eine so genannte filternde Fitnessfunktion an, bei der es kein Lernen im eigentlichen Sinne gibt, sondern eine Heuristik, die bestimmt, wie stark die Eingaben die Ausgabe im weiteren Sinne beeinflussen. Die Berechnung kann schneller als zwei Sekunden sein. Aber nicht um eine Größenordnung.

Der Weg zur Erstellung eines Forex-Handelsmodells wird für mich immer komplizierter, einfache Wege führen nicht zu konsistenten Ergebnissen. Im Moment sehe ich das so:

Ich habe es bisher aufgegeben, neue Prädiktoren hinzuzufügen und alle möglichen kleinen Verbesserungen an der Versuchsanordnung vorzunehmen.

Ich habe eine Idee im Kopf, die ich noch nicht umgesetzt habe. Die Sache ist die, dass wir, Sie und alle anderen in der Regel eine bestimmte Bedingung des Geschäftsabschlusses vorhersagen, zum Beispiel 3 Stunden im Voraus oder wenn der Preis ein Take- oder Stop-Level erreicht.

Und Sie erhalten lausige Ergebnisse. Und wenn ich mehrere gleichzeitige Bedingungen in MT4 eingebe, um einen Handel zu schließen, die durch den OR-Operator bearbeitet werden, gelingt es mir, ein positives OM auch außerhalb des Beispiels zu erhalten.

Ich habe mich also gefragt, wie ich in R simulieren könnte, um das Ergebnis eines Handels auf der Grundlage mehrerer Bedingungen gleichzeitig vorherzusagen. Erreicht der Kurs zum Beispiel innerhalb von 3 Stunden den TP, dann schließen Sie ihn. Der 3-Stunden-Parameter sollte jedoch nicht starr festgelegt werden, da er optimal gewählt werden sollte. Und wenn wir noch eine Bedingung hinzufügen, die besagt, dass wir, wenn der Kurs innerhalb von 3 Stunden positiv ist, aber den TP nicht erreicht hat, den STOP auf Breakeven ziehen sollten.

In diesem Fall wird die Eingabe einer Position ebenfalls von der Maschine vorhergesagt.

Das ist die Aufgabe, die uns vorschwebt.

 
Alexey Burnakov:

Ich habe mich also gefragt, wie ich in R simulieren könnte, um das Ergebnis eines Handels auf der Grundlage mehrerer Bedingungen gleichzeitig vorherzusagen. Erreicht der Kurs zum Beispiel innerhalb von 3 Stunden den TP, dann schließen Sie ihn. Der 3-Stunden-Parameter sollte jedoch nicht starr festgelegt werden, da er optimal gewählt werden sollte. Wenn wir außerdem eine Bedingung hinzufügen, die besagt, dass wir den STOPP auf Breakeven ziehen müssen, wenn der Kurs innerhalb von 3 Stunden gewinnt, aber den TP noch nicht erreicht hat.

Aus der Erfahrung des Handels mit EAs mag ich TP und SL nicht. Wenn das Handelssystem richtig konstruiert ist, dann sind seine eigenen Ausstiege aus den Geschäften effektiver als Ausstiege, die auf TP und SL basieren.

Die optimalen Werte von SL und TP ändern sich mit der Zeit, es gibt keinen konstanten Wert. Wir können einige Werte finden, die die Effizienz des Handelssystems in einem bestimmten Zeitraum verbessern, aber in diesem Fall wird die Effizienz der Strategie nach diesem Zeitraum abnehmen. Es ist besser, den SL nicht zu verschieben, sondern ihn im Abstand von "etwas ist schief gelaufen" zu halten und den Handel generell zu stoppen, wenn der Kurs den SL erreicht, um Fehler zu analysieren und die Handelsstrategie zu optimieren.

Aber es gibt einige intelligente selbstoptimierende EAs, die TP verwenden. Ich verstehe, dass wir bereits in der Trainingsmenge eine konstante TP einführen sollten. In meinem Fall zum Beispiel ist das Ergebnis des TP-Trainings 0/1 - der Preis ist im nächsten Takt gestiegen/gesunken. Aber wenn der Preis gestiegen ist und das TP-Niveau erreicht hat, dann ist er am Ende des Balkens unter das ursprüngliche Niveau gefallen - im Training wird das Ergebnis "1", nicht "0" (weil das Geschäft mit einem Gewinn auf TP geschlossen wird, und es wird keine weiteren Geschäfte bis zum Ende des Balkens geben). Der TP ist in der Regel klein, weniger als 50 Punkte (5 Pips auf vier Ziffern). SL ist dutzendfach größer, nur für den Fall, dass "alles schief geht". Der TP für Fronttest oder Trade kann nicht optimiert werden, sondern nur derjenige, der bei der Erstellung einer Trainingsstichprobe verwendet wurde. Ich habe so erfolgreiche Strategien gesehen, dass ich glaube, dass es sich lohnt, in diese Richtung zu gehen.

 
Dr. Trader:

Aus der Erfahrung von Experten mag ich TP und SL nicht. Wenn das Handelssystem richtig aufgebaut ist, sind seine eigenen Ausstiege aus Geschäften effektiver als Ausstiege auf der Grundlage von TPs und SLs.


Und wie werden die eigenen Ausgänge formuliert? Nur nach Zeit?

Wenn Sie sagen, dass in einer Stunde geschlossen werden soll, aber wenn innerhalb einer Stunde der TP durchbrochen wird, dann wäre das das Ergebnis 1, dann werden bereits komplexe Schließungsbedingungen verwendet.

Über TP von 5 pts und SL von Dutzenden von Zeiten mehr - als eine Option, aber solche TP wird der Gewinn zu essen.

 

Ich bin diese Woche bei Ihnen und letzte Woche durch Zeitzonen getrennt, so dass ich kein Live-Dialgo bekomme. Ich bin aus beruflichen Gründen in Kalifornien, also...

Wie auch immer, ich denke, ich (vielleicht auch Sie) kann das Experiment bereits gut planen, trainieren und die Ergebnisse validieren. Sie können Prädiktoren auch redundant rekrutieren.

Der Haken an der Sache ist, dass die Vorhersage eines Handels auf der Grundlage eines festen Ziels, z. B. dem Abschluss in einer Stunde, nicht optimal ist und die Ergebnisse schwach sind.

Im MT-Tester optimiere ich auf der Grundlage von Gleichgewicht und Erholungsfaktor. In R optimiere ich die Genauigkeit des Erratens von Richtungen oder der Vorhersage von Preisunterschieden. Das sind ganz unterschiedliche Dinge, egal wie man es betrachtet.

Versuchen Sie vielleicht, in R eine eigene Verlustfunktion für die Lernmethode zu schreiben, bei der z. B. der Gewinn maximiert wird. Diese Funktion kann in einigen Lernmethoden ersetzt werden.

 
Alexey Burnakov:

Ich bin diese Woche bei Ihnen und letzte Woche durch Zeitzonen getrennt, so dass ich kein Live-Dialgo bekomme. Ich bin aus beruflichen Gründen in Kalifornien, also...

Wie auch immer, ich denke, ich (vielleicht auch Sie) kann das Experiment bereits gut planen, trainieren und die Ergebnisse validieren. Sie können Prädiktoren auch redundant rekrutieren.

Der Haken an der Sache ist, dass die Vorhersage eines Handels auf der Grundlage eines festen Ziels, z. B. dem Abschluss in einer Stunde, nicht optimal ist und die Ergebnisse schwach sind.

Im MT-Tester optimiere ich auf der Grundlage von Gleichgewicht und Erholungsfaktor. In R optimiere ich die Genauigkeit des Erratens von Richtungen oder der Vorhersage von Preisunterschieden. Das sind ganz unterschiedliche Dinge, egal wie man es betrachtet.

Versuchen Sie vielleicht, in R eine eigene Verlustfunktion für die Lernmethode zu schreiben, bei der z. B. der Gewinn maximiert wird. Diese Funktion kann in einige Lernmethoden integriert werden.

In letzter Zeit habe ich den folgenden Plan umgesetzt.

Ich habe meinen alten Trendindikator-basierten EA implementiert. Es handelt sich um einen soliden Expert Advisor, der auf einem echten Konto gehandelt wird.

Nächste.

Ich suche nach den Nachteilen und versuche, sie mit R zu verbessern.

Zum Beispiel.

Ich orientiere mich an der Reckstange. Wenn ich mir die Zeit jedoch genau ansehe, gibt es eine enorme Verzögerung bei den unteren Balken, insbesondere bei den Balken. Wenn es sich also um D1 handelt und ich auf M5 handle, stellt sich heraus, dass ich fast die Daten von vorgestern für die Richtung nehme. Selbst die Vorhersage eines Schritts nach vorn für D1 mit einem Fehler von 30 % hat die Rentabilität von EA radikal verbessert und, was noch wichtiger ist, das Vertrauen in den Ausverkauf des Unternehmens gestärkt.

Wie wäre es damit, in R einige Elemente eines vorgefertigten, sogar schlechten EA vorherzusagen, um ihn zu verbessern?

Wie kommt man auf eine solche Idee?

 

Kürzlich schrieb ich einen Artikel für smart-lab. Eine schwache Gemeinschaft, aber sie hat etwas Nützliches:

http://smart-lab.ru/search/topics/?q=%D0%B4%D0%BB%D1%8F+%D0%BB%D1%8E%D0%B1%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9+fx

 
SanSanych Fomenko:

Ich habe in letzter Zeit den folgenden Plan umgesetzt.

Ich habe meinen alten Trendberater für Indikatoren genommen. Es handelt sich um einen vollwertigen Expert Advisor, der auf einem echten Konto handelt.

Jetzt bin ich auf der Suche nach den Nachteilen und versuche, diese mit Hilfe von R zu verringern.

Ich suche nach den Nachteilen und versuche, sie mit R zu verbessern.

Zum Beispiel.

Ich orientiere mich an der Reckstange. Wenn ich mir die Zeit jedoch genau ansehe, gibt es eine große Verzögerung bei den unteren Balken, insbesondere bei den Balken. Wenn es sich also um D1 handelt und ich auf M5 handle, stellt sich heraus, dass ich fast die Daten von vorgestern für die Richtung nehme. Selbst die Vorhersage eines Schritts nach vorn für D1 mit einem Fehler von 30 % hat die Rentabilität von EA radikal verbessert und, was noch wichtiger ist, das Vertrauen in den Ausverkauf des Unternehmens gestärkt.

Wie wäre es damit, in R einige Elemente eines vorgefertigten, sogar schlechten EA vorherzusagen, um ihn zu verbessern?

Wie kommt man auf eine solche Idee?

Die Idee ist interessant, ich habe auch einige funktionierende EAs. Vielleicht werde ich darüber nachdenken, wie ich sie verbessern kann. Aber ich verstehe nicht, was genau verbessert werden muss? Was muss die Maschine lernen?

Der Expert Advisor hat eine feste Logik für das Öffnen und Schließen von Positionen. Beim maschinellen Lernen wird die Entscheidung auf eine etwas andere Weise getroffen.

Es ist also nicht ganz klar, was genau Sie tun werden.

 
Alexey Burnakov:

Das ist eine interessante Idee, ich habe auch EAs am Laufen. Vielleicht werde ich darüber nachdenken, wie ich sie verbessern kann. Aber es ist mir nicht klar, was genau verbessert werden muss? Was müssen Sie der Maschine beibringen?

Der Expert Advisor hat eine feste Logik für das Öffnen und Schließen von Positionen. Beim maschinellen Lernen wird die Entscheidung auf eine etwas andere Weise getroffen.

Es ist also nicht ganz klar, was genau Sie tun werden.

Was Sie tun werden, ist klar. Was nicht klar ist, ist, warum wir sie brauchen. Erstens, wenn es ein System gibt, das die Korrektheit des anderen Systems analysiert und/oder die Parameter kontrolliert, wird das kontrollierte System überflüssig, denn wenn man beide Systeme zusammen verwendet, sinkt die Gesamteffizienz beider Systeme auf einmal und ist geringer als wenn man sie getrennt verwendet. Wenn es beispielsweise ein System gibt, das 70 % korrekte Entscheidungen trifft, und ein System, das einen oder mehrere Parameter mit 99 % Genauigkeit steuern kann, dann ist die endgültige Effizienz gleich:

0,7*0,99=0,693

was niedriger ist als bei den Systemen allein.

Amen. Es ist besser zu versuchen, das ursprüngliche System ohne "Kontrolleure" zu verbessern.

Grund der Beschwerde: