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

 
Alexey Burnakov:

Bleiben Sie dran. Ich werde Ihre Daten auch auf Abhängigkeiten überprüfen.

Eine Frage, bevor ich anfange. Umfassen Ihre Daten alle Balken in einer Reihe, oder wurden die Balken vor der Probenahme ausgedünnt?

R1, R2, R3 in einer Reihe und innerhalb dieser Reihen ebenfalls in einer Reihe sind Zeitreihen zu H1.
 
SanSanych Fomenko:
R1, R2, R3 in einer Reihe und darin ebenfalls in einer Reihe eine Zeitreihe zu H1.

Ich verstehe. Nun, mit Ihren Daten verstehe ich in etwa, wie es funktionieren soll.

Ich möchte auch Dr. Trader verstehen.

 

Ich habe auch H1, die Probe enthält Daten aus den letzten 4 Bars. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... usw., die Daten stammen aus den Strukturen MqlRates und MqlDateTime, dazu kommen ein paar Indikatoren und Schlusskurse aus höheren Zeitrahmen, alles ist im Intervall [0..1] normalisiert. Das Ergebnis von 1 oder 0 bedeutet einen Anstieg oder Rückgang des Preises auf dem nächsten Balken. Aber all das ist eindeutig nicht genug.

Das Problem ist, dass wir nicht wissen, wie viele Balken wir brauchen. Der Neuronka braucht nur 3 Takte, um auf einen Fehler von 0 % zu trainieren (und wird daher zu 50 % im Fronttest sein). Oder, wenn Sie es mit Kontrolle trainieren und rechtzeitig stoppen, wird der Fronttest-Fehler ein paar Prozent geringer sein. Es ist jedoch möglich, Hunderte von Balken zu nehmen und annähernd das gleiche Ergebnis zu erzielen, obwohl jeder neue Balken in der Stichprobe eine riesige Menge an Müll darstellt und folglich die Qualität des Modells verringert.

 
Dr. Trader:
Ich habe auch H1, die Stichprobe enthält Daten aus den letzten 4 Bars. open1-high1-close1-...-open2-high2-close2-... usw. Die Daten der Strukturen MqlRates und MqlDateTime. Das Ergebnis von 1 oder 0 bedeutet einen Anstieg oder Rückgang des Preises auf dem nächsten Balken.
Großartig. Gibt es so etwas wie open1 - open2? Rückgabe
 

Eine kleine Ergänzung zum vorherigen Beitrag. Nein, es gibt keine Deltas. Ich werde es ausprobieren müssen.

 
Dr. Trader:

Ich habe auch H1, die Probe enthält Daten aus den letzten 4 Bars. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... usw., die Daten stammen aus den Strukturen MqlRates und MqlDateTime, außerdem gibt es einige Indikatoren und Schlusskurse aus höheren Zeitrahmen, alle normalisiert im Intervall [0..1]. Das Ergebnis von 1 oder 0 bedeutet einen Anstieg oder Rückgang des Preises auf dem nächsten Balken. Aber all das ist eindeutig nicht genug.

Das Problem ist, dass wir nicht wissen, wie viele Balken wir brauchen. Der Neuronka braucht nur 3 Takte, um auf einen Fehler von 0 % zu trainieren (und wird daher zu 50 % im Fronttest sein). Oder, wenn Sie es mit Kontrolle trainieren und rechtzeitig stoppen, wird der Fronttest-Fehler ein paar Prozent geringer sein. Es ist jedoch möglich, Hunderte von Balken zu nehmen und das gleiche Ergebnis zu erzielen, obwohl jeder neue Balken in der Stichprobe eine riesige Menge an Müll und eine entsprechende Verringerung der Qualität des Modells bedeutet.

Nun, Sie müssen die Funktionen entwickeln. Es geht nicht unbedingt um die Verwendung von Standardindikatoren. Sie brauchen Vorstellungskraft und Verständnis für den Prozess. Es reicht nicht aus, nur die Daten der Blackbox-Balken anzugeben. Und die Tiefe, aus der die Informationen entnommen werden, ist wichtig. Ich habe zum Beispiel bei meinen Recherchen festgestellt, dass man am Eingang eine symmetrische Tiefe im Verhältnis zur Tiefe am Ausgang einspeisen muss. Vorhersage für 3 Stunden im Voraus - Angabe von Daten für 3 Stunden zurück und später.

Hier ein Beispiel für ein Schema zur Entwicklung von Prädiktoren, das sich teilweise auch in meiner Forschung widerspiegelt. Diese Daten geben der Maschine bereits eine Menge Informationen darüber, was war:

http://blog.kaggle.com/2016/02/12/winton-stock-market-challenge-winners-interview-3rd-place-mendrika-ramarlina/comment-page-1/

Winton Stock Market Challenge, Winner's Interview: 3rd place, Mendrika Ramarlina
Winton Stock Market Challenge, Winner's Interview: 3rd place, Mendrika Ramarlina
  • 2016.12.02
  • blog.kaggle.com
The Stock Market Challenge, Winton's second recruiting competition on Kaggle, asked participants to predict intra and end of day stock returns. The competition was crafted by research scientist at Winton to mimic the type of problem that they work on everyday. Mendrika Ramarlina finished third in the competition with a combination of simple...
 
Dr. Trader:

Eine kleine Ergänzung zum vorherigen Beitrag. Nein, es gibt keine Deltas. Ich werde es ausprobieren müssen.

Das ist ein Muss.

Wissen Sie, was gut funktioniert? Die Differenz zwischen dem letzten bekannten Kurs und dem gleitenden Durchschnitt. Das Fenster des Durchschnitts sollte anders sein.

 
Hier lese ich, lesen.... und ich kann nicht verstehen, was die Zielvariable aus formaler Sicht zuerst ist: eine reelle Zahl (Regression) oder ein Nominalwert (Klassifizierung). Wenn es um die Frage geht, inwieweit die Prädiktoren die Zielvariable beeinflussen, ist es außerdem sinnvoll, die Bedeutung der Zielvariable selbst zu kennen.
 

Ich betrachte die Zielvariable als Kauf-/Verkaufskriterium, ohne zu wissen, wie lange ich den Handel offen halten oder auf welches Kursniveau ich warten soll. Der EA eröffnet einen Handel zu Beginn eines Balkens und wartet auf den nächsten Balken, um die nächste Entscheidung zu treffen.

Es ist schwieriger mit einem logischen Sinn :)

Ich wollte Neuronics trainieren, Muster und Formen auf einer Karte zu finden (Kopf und Schultern usw.). Und es musste lernen, einige Figuren ohne mein Zutun selbst zu finden; ich habe die Zickzack-Richtung als Zielvariable verwendet. Die Bedeutung der Zielvariable hätte nach meinem Plan "Muster gefunden, Trend geht nach oben, ich sollte kaufen" (mit Ergebnis=1) sein sollen. Gleichzeitig würde das Ergebnis=0 bedeuten, dass der Trend nach oben geht und ich verkaufen sollte. Ich habe versucht, die Signalstärke zu berücksichtigen und nicht zu handeln, wenn das Ergebnis nahe bei 0,5 liegt.

Meine Gedanken laut, ich habe nicht darüber nachgedacht, bevor: es scheint, dass mein Modell war falsch, ich hatte zu lehren 3 Klassen zu kaufen / verkaufen / close_all_deals_and_not_trade. Und machen Sie entweder 3 Ausgaben von einem Netz, oder trainieren Sie 3 separate Netze. Nicht ein Netz mit einem Ausgang.

Dann habe ich durch Experimentieren festgestellt, dass ich nur 5 statt 200 Takte nehmen kann und sich nichts ändert, das Ergebnis bleibt dasselbe. Ich glaube nicht, dass das Modell lernt, Muster in einer solchen Konfiguration zu finden, sondern es findet eher einige Regelmäßigkeiten im Laufe der Zeit. Ich habe allmählich beschlossen, das Modell nicht auf einem Zickzackkurs zu unterrichten, sondern einfach auf dem Schlusskurs des nächsten Balkens. In diesem Fall brauche ich das Ergebnis der Neuronen nicht zu filtern, weniger Probleme mit dem gleichen Ergebnis, es ist nicht so schlimm. Hier ist die logische Bedeutung schon einfacher - Zielvariable 0/1 - Preis fällt/steigt in 1 Bar.

Ich habe in den letzten Tagen den Wald und die Beispiele aus diesem Forum studiert. Nimmt man dieselben 5 Takte, dann lernt der Wald nicht irgendwelche abstrakten Dinge wie die Neuronalität, sondern er leitet ganz konkrete Regeln ab. Zum Beispiel könnte der Wald eine Regel "Kreuzung von zwei MAs" oder so etwas ableiten. Es scheint mir, dass mit einem solchen Datensatz der Wald viel vielversprechender ist, werde ich lernen, es zu benutzen. Die Bedeutung der Zielvariable ist die gleiche - 0/1 - Preis wird nach unten / oben in 1 bar gehen.

Ich weiß nicht so viel über die Auswirkungen der Prädiktoren, wie ich gerne möchte. Die Uhrzeit sollte auf jeden Fall verwendet werden, Stunde/Minute/Wochentag, wahrscheinlich eine davon (Stunde?). Sie können keine Prädiktoren mit einer kleinen Reihe von Werten verwenden, ohne eine Schleife zu durchlaufen. Wenn die Trainingsstichprobe zum Beispiel Daten für ein Jahr enthält, können Sie keinen "Monats"-Prädiktor verwenden. Das Modell kann einfach alle Daten nach Monaten in 12 Chunks aufteilen und für jeden Chunk eine andere Logik trainieren. Und die Logik vom Januar 2015 wird sicherlich nicht in ein Jahr für die Logik vom Januar 2016 passen. Aber wenn die Trainingsdaten 5 Jahre umfassen, dann könnte "Monat" schon passen. Auch bin ich nicht sicher, dass die Verwendung von Indikatoren gerechtfertigt ist, EAs auf Standard-Indikatoren sind Geld verlieren, wäre es seltsam, wenn das trainierte Modell extrahiert etwas Nützliches aus diesen Daten. Außerdem verstehe ich, dass der Wald selbst auch einige Berechnungen durchführt und seine eigenen internen Indikatoren während des Trainings erstellen kann. Der Preis sollte auch verwendet werden, obwohl ich den Eröffnungs- und Schlusskursen nicht traue, ich bevorzuge Hoch und Tief.

Alle diese Prädiktoren zeigen eine Art von aktueller Marktbedingung an, und der Zweck des Modells besteht darin, dieselben Bedingungen mit Hilfe der Prädiktoren zu definieren und festzustellen, wohin sich der Preis in solchen Fällen bewegt. Ein Modell sollte so wenig Eingabedaten wie möglich verwenden, wie Occam's Rasiermesser, dann besteht die Chance, dass es einige Abhängigkeiten beschreibt und nicht zu den Beispielen passt.

 
Dr. Trader:

Ich betrachte die Zielvariable als ein Kauf-/Verkaufsmerkmal, ohne zu wissen, wie lange ich den Handel offen halten oder auf welches Kursniveau ich warten soll. Der EA eröffnet einen Handel zu Beginn eines Balkens und wartet auf den nächsten Balken, um die nächste Entscheidung zu treffen.

Es ist schwieriger mit einem logischen Sinn :)

Ich wollte Neuronics trainieren, Muster und Formen auf einer Karte zu finden (Kopf und Schultern usw.). Und es musste lernen, einige Figuren ohne mein Zutun selbst zu finden; ich habe die Zickzack-Richtung als Zielvariable verwendet. Die Bedeutung der Zielvariable hätte nach meinem Plan "Muster gefunden, Trend geht nach oben, ich sollte kaufen" (mit Ergebnis=1) sein sollen. Gleichzeitig würde das Ergebnis=0 bedeuten, dass der Trend nach oben geht und ich verkaufen sollte. Ich habe versucht, die Signalstärke zu berücksichtigen und nicht zu handeln, wenn das Ergebnis nahe bei 0,5 liegt.

Meine Gedanken laut, ich habe nicht darüber nachgedacht, bevor: es scheint, dass mein Modell war falsch, ich hatte zu lehren 3 Klassen zu kaufen / verkaufen / close_all_deals_and_not_trade. Und machen Sie entweder 3 Ausgaben von einem Netz, oder trainieren Sie 3 separate Netze. Nicht ein Netz mit einem Ausgang.

Dann habe ich durch Experimentieren festgestellt, dass ich nur 5 statt 200 Takte nehmen kann und sich nichts ändert, das Ergebnis bleibt dasselbe. Ich glaube nicht, dass das Modell lernt, Muster in einer solchen Konfiguration zu finden, sondern es findet eher einige Regelmäßigkeiten im Laufe der Zeit. Ich habe allmählich beschlossen, das Modell nicht auf einem Zickzackkurs, sondern einfach auf dem Schlusskurs des nächsten Balkens zu unterrichten. In diesem Fall brauche ich das Ergebnis der Neuronen nicht zu filtern, weniger Probleme mit dem gleichen Ergebnis, es ist nicht so schlimm. Hier ist die logische Bedeutung schon einfacher - Zielvariable 0/1 - Preis fällt/steigt in 1 Bar.

Ich habe in den letzten Tagen den Wald und die Beispiele aus diesem Forum studiert. Nimmt man dieselben 5 Takte, dann lernt der Wald nicht irgendwelche abstrakten Dinge wie die Neuronalität, sondern er leitet ganz konkrete Regeln ab. Die Bedeutung der Zielvariable ist dieselbe - 0/1 - der Preis steigt oder fällt in einem Takt.

Ich weiß nicht so viel über die Auswirkungen der Prädiktoren, wie ich gerne möchte. Die Uhrzeit sollte auf jeden Fall verwendet werden, Stunde/Minute/Wochentag, wahrscheinlich eine davon (Stunde?). Sie können keine Prädiktoren mit einer kleinen Reihe von Werten verwenden, ohne eine Schleife zu durchlaufen. Wenn die Trainingsstichprobe zum Beispiel Daten für ein Jahr enthält, können Sie keinen "Monats"-Prädiktor verwenden. Das Modell kann einfach alle Daten nach Monaten in 12 Chunks aufteilen und für jeden Chunk eine andere Logik trainieren. Und die Logik vom Januar 2015 wird sicherlich nicht in einem Jahr für die Logik vom Januar 2016 passen. Aber wenn die Trainingsdaten 5 Jahre umfassen, dann könnte "Monat" schon passen. Auch bin ich nicht sicher, dass die Verwendung von Indikatoren gerechtfertigt ist, EAs auf Standard-Indikatoren sind Geld verlieren, wäre es seltsam, wenn das trainierte Modell extrahiert etwas Nützliches aus diesen Daten. Außerdem verstehe ich, dass der Wald selbst auch einige Berechnungen durchführt und seine eigenen internen Indikatoren während des Trainings erstellen kann. Der Preis sollte auch verwendet werden, obwohl ich den Eröffnungs- und Schlusskursen nicht traue, ich bevorzuge Hoch und Tief.

Alle diese Prädiktoren zeigen eine Art von aktueller Marktbedingung an, und der Zweck des Modells besteht darin, dieselben Bedingungen mit Hilfe der Prädiktoren zu definieren und festzustellen, wohin sich der Preis in solchen Fällen bewegt. Ein Modell sollte nach dem Occam'schen Klingenprinzip so wenig Eingabedaten wie möglich verwenden, dann besteht die Chance, dass es einige Abhängigkeiten beschreibt und nicht zu den Beispielen passt.

In vielerlei Hinsicht überschneiden sich unsere Gedanken.

Aber am Ende bleibe ich bei den Rauschprädiktoren hängen. Das Vorhandensein von Rauschprädiktoren führt dazu, dass das Modell überlernt und alle anderen Überlegungen bedeutungslos werden.