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

 
Ich warte darauf, dass CC klarstellt, wie er es machen will.

Noch einmal: Ich denke, dass die Vorhersage von Geschäften mit einem Ausstieg durch eine einfache Bedingung nicht optimal ist.

Wie wäre es, wenn wir eine weitere Maschine trainieren, die den Zeitpunkt des Abschlusses von bereits offenen Geschäften lernt? Lassen Sie mich das erklären. Ein Geschäft sollte innerhalb einer Stunde abgeschlossen sein - wir haben die Maschine darauf trainiert, Geschäfte auf diese Weise zu eröffnen.

Für jedes eröffnete Geschäft gibt es 60 Datensätze (Zeilen) mit Chips - für jede Minute, beginnend bei 31 Minuten und endend bei 90 Minuten. Etwa die Hälfte dieser Einträge wird um die 60. Minute als guter Ausstieg mit 1 markiert.

Das nenne ich eine detaillierte Erklärung, wie das Problem gelöst werden sollte.

Was meinen Sie dazu?
 
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.

Das heißt, es ist nicht ganz klar, was genau Sie tun werden.

Hier können Sie es in meinem Beitrag oben sehen:

Ich orientiere mich an der Reckstange. Aber wenn man sich die Zeit genau ansieht, gibt es vor allem bei den unteren Balken eine enorme Verzögerung. Wenn es sich also um D1 handelt, ich aber auf M5 handele, stellt sich heraus, dass ich fast die Daten von vorgestern für die Richtung nehme. Selbst die Vorhersage eines Schrittes nach vorn für D1 mit 30% Fehler radikal verbesserte Rentabilität des Expert Advisor, und vor allem erhöht das Vertrauen, dass es nicht ausverkaufen.

In meinem Fall werde ich verzögerte Daten von Indikatoren für eine geeignete R-Vorhersage verwenden.

 
SanSanych Fomenko:

Hier ist eine Anmerkung zu meinem obigen Beitrag:

Die allgemeine Richtung wird vom Reck übernommen. Aber wenn man sich die Zeit genau ansieht, gibt es vor allem bei den unteren Balken eine enorme Verzögerung. Wenn es sich also um D1 handelt, ich aber auf M5 handele, stellt sich heraus, dass ich fast die Daten von vorgestern für die Richtung nehme. Selbst die Vorhersage eines Schrittes nach vorn für D1 mit 30% Fehler radikal verbesserte Rentabilität des Expert Advisor, und vor allem erhöht das Vertrauen, dass es nicht ausverkaufen.

In meinem speziellen Fall gehe ich den Weg, verzögerte Daten von den Indikatoren auf die entsprechenden Vorhersagen von R zu verwenden.

Ok, ich verstehe die Idee ungefähr.
 

Ich habe gerade große Neuigkeiten.

Während einer Geschäftsreise ließ ich abends die Lernmaschinen auf meinen Daten laufen. Ich habe verschiedene Kombinationen von Ansätzen ausprobiert. Und es sieht so aus, als ob plötzlich eine Steinblume auftaucht.

Ich habe also meine Daten aus dem zitierten Link verwendet, um mehr und mehr zu trainieren und Dinge auszuprobieren, die bereits in meinem Blog beschrieben wurden. Aber ich habe noch ein paar Tricks hinzugefügt. Ich habe zum Beispiel die Trainingsparameter ausgewählt, bei denen die Kreuzvalidierung einen größeren Gewinn bringt als die abstrakte Schätzgenauigkeit.

Dazu musste ich natürlich meine Fitnessfunktion schreiben.

In der Grafik sind Paare von Erwartungswerten für Training und Validierung für verschiedene Vorhersagehorizonte und Trainingsparameter dargestellt. Ich habe auch die Idee einer "Grauzone" verwendet, d. h. eines Vorhersagebereichs, in dem nichts passiert.

Wie Sie sehen können, habe ich recht vernünftige MO-Werte für beide Trainings und korrelierte Werte für die Validierung! Beachten Sie, dass bei der Simulation eine Streuung von 0,00020 (zwanzig Picks) verwendet wurde.

Ich habe auch den gesamten Handel einschließlich des Spreads berechnet. Die Werte sind auch sehr schön. Der maximale Gewinn wird bei einem bestimmten Verhältnis zwischen der Anzahl der Trades und dem MO des Trades erreicht, und das alles bei einem Planungshorizont von 12 Stunden. Auf dem Diagramm ist ein Durchlauf aller Planungshorizonte, aller Grauzonenwerte und der besten Lernparameter des Modells zu sehen. Siehe unten:


Nun, und um dieses Wissen zu verbreiten, füge ich eine Datei mit allen Ergebnissen bei, einschließlich der Trainingsparameter für das Gerüst. Aber ohne die Eingaben. Die Eingaben aus meinen Daten sind ausgewählt. Dies wird ein kleines Geheimnis bleiben. Ich werde über den vollständigen Code des Experiments nachdenken oder nicht. Ich möchte nun die Integration mit MT dieser Maschine durchführen, da mir das Ergebnis schon recht gut zu funktionieren scheint.

Alexej

 
Alexey Burnakov:

Ich habe gerade große Neuigkeiten.

Während einer Geschäftsreise ließ ich abends die Lernmaschinen auf meinen Daten laufen. Ich habe verschiedene Kombinationen von Ansätzen ausprobiert. Und es sieht so aus, als ob plötzlich eine Steinblume auftaucht.

Jedenfalls habe ich mit den Daten aus dem Link, den ich angegeben habe, das Training wieder und wieder durchgeführt und dabei Dinge ausprobiert, die bereits in meinem Blog beschrieben wurden. Aber ich habe noch ein paar Tricks hinzugefügt. Zum Beispiel die Auswahl derjenigen Trainingsparameter, bei denen die Kreuzvalidierung mehr Gewinn bringt, als die abstrakte Genauigkeit des Ratens.

Dazu musste ich natürlich meine Fitnessfunktion schreiben.

In der Grafik sind Paare von Erwartungswerten für Training und Validierung für verschiedene Vorhersagehorizonte und Trainingsparameter dargestellt. Ich habe auch die Idee einer "Grauzone" verwendet, d. h. eines Vorhersagebereichs, in dem nichts passiert.

Wie Sie sehen können, habe ich recht vernünftige MO-Werte für beide Trainings und korrelierte Werte für die Validierung! Beachten Sie, dass bei der Simulation eine Streuung von 0,00020 (zwanzig Picks) verwendet wurde.

Ich habe auch den gesamten Handel einschließlich des Spreads berechnet. Die Werte sind auch sehr schön. Der maximale Gewinn wird bei einem bestimmten Verhältnis zwischen der Anzahl der Trades und dem MO des Trades erreicht, und das alles bei einem Planungshorizont von 12 Stunden. Auf dem Diagramm ist ein Durchlauf aller Planungshorizonte, aller Grauzonenwerte und der besten Lernparameter des Modells zu sehen. Siehe unten:


Nun, und um dieses Wissen zu verbreiten, füge ich eine Datei mit allen Ergebnissen bei, einschließlich der Trainingsparameter für das Gerüst. Aber ohne die Eingaben. Die Eingaben aus meinen Daten sind ausgewählt. Dies wird ein kleines Geheimnis bleiben. Ich werde über den vollständigen Code des Experiments nachdenken oder nicht. Nun möchte ich die Integration mit MT dieser Maschine vornehmen, denn das Ergebnis scheint mir schon ganz gut zu funktionieren.

Alexej

Der Gesamtgewinn in Pips ist kein Indikator. Das Verhältnis dieses Gesamtgewinns zur Anzahl der Takte der Geschichte, in der er erzielt wurde, ist der Qualitätsfaktor, der als Indikator dient. Das sage ich schon seit langem, und ich verwende es nur zur Modelloptimierung und -schätzung.

Harte Arbeit führt zu Ergebnissen.

Viel Glück!

 
Vladimir Perervenko:

Der Gesamtgewinn in Pips ist nicht der Indikator. Das Verhältnis zwischen diesem Gesamtgewinn und der Anzahl der Takte der Geschichte, in der er erzielt wurde, ist der Qualitätsfaktor, der ausschlaggebend ist. Das sage ich schon seit langem, und ich verwende es nur zur Modelloptimierung und -schätzung.

Harte Arbeit führt zu Ergebnissen.

Viel Glück!

So wie ich das sehe, schließt das eine das andere nicht aus.

Alexey hat den offensichtlichen Nachteil aller Auswertungen von Klassifizierungsvorhersagen überwunden: Es ist offensichtlich, dass der Wert einer korrekten Vorhersage für einen 1-Pips-Balken und der Wert einer Vorhersage für einen 10-Pips-Balken völlig unterschiedlich sind.

Herzlichen Glückwunsch an Sie, Alexey!

 
Vladimir Perervenko:

Der Gesamtgewinn in Pips ist kein Indikator. Der Qualitätskoeffizient ist das Verhältnis zwischen diesem Gesamtgewinn und der Anzahl der Takte der Vergangenheit, auf denen er erzielt wurde, und ist somit ein Indikator. Ich habe lange gesagt und verwende es nur für die Modelloptimierung und Schätzung.

Harte Arbeit führt zu Ergebnissen.

Viel Glück!

Lassen Sie mich das erklären.

Vorhersage 12 Stunden im Voraus (724 Minuten, um genau zu sein).

Die Anzahl der Trades liegt bei über 5000 für jede der Validierungsstichproben. Das Ergebnis wird über 49 Validierungsproben gemittelt. Der Handel innerhalb jeder Stichprobe erfolgt in Abständen von etwa 12 Stunden, d. h. es gibt keine offensichtliche Abhängigkeit und keine Überschneidung der Ergebnisse. Ich werde in Kürze weitere Diagramme der Handelssimulation veröffentlichen. Die Ergebnisse sind zu gut. Aber bis jetzt hat sich alles bestätigt.

 

Abschließende Daten zu meinem Experiment:

Simulation der Handelssignale einer trainierten Maschine auf 49 Validierungsmuster (in Pips):

Verteilung des Handelsergebnisses in Pips für 49 Stichproben:

Und die Durchführung eines Hypothesentests auf einen signifikanten Unterschied zwischen dem Mittelwert (Median) der MO jeder Validierungsstichprobe und Null:

Validierungsstichprobe
Shapiro-Test Normalität p-value
Test p-value für die Differenz zu Null
mittlere
Median
mittlerer Abstand oberer 99%-Schwanz
mittlerer Abstand unterer 99%-Schwanz
1
1.11E-65
0
0.000139
0.000095
0.000146
0.000133
2
8.55E-64
0
0.000139
0.000096
0.000145
0.000133
3
8.24E-63
0
0.000137
0.000096
0.000143
0.000131
4
3.31E-66
0
0.000139
0.000095
0.000146
0.000133
5
4.64E-66
0
0.000142
0.000097
0.000149
0.000136
6
7.08E-63
0
0.000141
0.000097
0.000147
0.000135
7
8.72E-65
0
0.000135
0.000096
0.000141
0.000129
8
4.52E-65
0
0.000139
0.000096
0.000145
0.000132
9
4.31E-64
0
0.000143
0.000102
0.000149
0.000137
10
4.53E-66
0
0.000141
0.000099
0.000147
0.000134
11
8.97E-67
0
0.000143
0.000098
0.000149
0.000136
12
2.21E-63
0
0.000139
0.000102
0.000145
0.000133
13
1.16E-63
0
0.000142
0.000099
0.000148
0.000135
14
7.82E-64
0
0.000138
0.000097
0.000144
0.000132
15
1.41E-65
0
0.000146
0.000103
0.000152
0.000140
16
8.17E-63
0
0.000135
0.000097
0.000140
0.000129
17
6.54E-65
0
0.000143
0.000099
0.000149
0.000136
18
6.70E-66
0
0.000138
0.000096
0.000144
0.000132
19
1.86E-65
0
0.000143
0.000099
0.000149
0.000136
20
1.79E-66
0
0.000142
0.000098
0.000148
0.000135
21
2.37E-62
0
0.000136
0.000099
0.000142
0.000131
22
5.51E-65
0
0.000141
0.000100
0.000147
0.000135
23
7.15E-67
0
0.000142
0.000097
0.000149
0.000136
24
1.06E-65
0
0.000144
0.000102
0.000150
0.000137
25
4.01E-65
0
0.000147
0.000101
0.000153
0.000140
26
2.33E-64
0
0.000141
0.000098
0.000147
0.000135
27
7.85E-65
0
0.000141
0.000100
0.000147
0.000134
28
2.07E-64
0
0.000141
0.000098
0.000147
0.000134
29
2.01E-63
0
0.000140
0.000098
0.000146
0.000134
30
2.77E-64
0
0.000139
0.000098
0.000145
0.000133
31
1.43E-66
0
0.000145
0.000098
0.000151
0.000138
32
1.08E-65
0
0.000141
0.000098
0.000147
0.000134
33
3.47E-62
0
0.000136
0.000099
0.000141
0.000130
34
6.04E-67
0
0.000140
0.000096
0.000147
0.000134
35
2.32E-65
0
0.000145
0.000100
0.000152
0.000139
36
6.39E-65
0
0.000143
0.000098
0.000149
0.000137
37
1.10E-61
0
0.000141
0.000103
0.000147
0.000135
38
6.74E-63
0
0.000142
0.000100
0.000148
0.000136
39
2.54E-64
0
0.000141
0.000098
0.000147
0.000135
40
2.45E-64
0
0.000139
0.000098
0.000145
0.000133
41
6.25E-66
0
0.000141
0.000099
0.000148
0.000135
42
3.99E-66
0
0.000141
0.000097
0.000147
0.000135
43
1.35E-66
0
0.000142
0.000098
0.000148
0.000135
44
1.01E-63
0
0.000134
0.000097
0.000140
0.000128
45
1.56E-64
0
0.000139
0.000097
0.000145
0.000133
46
3.11E-66
0
0.000145
0.000103
0.000152
0.000139
47
6.11E-66
0
0.000138
0.000099
0.000144
0.000131
48
2.99E-66
0
0.000146
0.000101
0.000152
0.000139
49
1.84E-63
0
0.000138
0.000098
0.000144
0.000131

Die Verteilung innerhalb der Stichproben ist nicht normal. Der Wilcoxon-Test zeigt, dass die MO signifikant von Null verschieden ist.

Übrigens ist die Veränderung im Wachstumsmuster der Punktsummenkurve in den letzten 3/5 Teilen der Validierungsstichproben erklärbar.

Ich habe etwa die gleiche Anzahl von Beobachtungen für die 5 Hauptfächer innerhalb der Stichproben und sie gehen in der folgenden Reihenfolge:

dat_eurusd 
dat_audusd 
dat_gbpusd 
dat_usdcad 
dat_usdchf

Ich bin sicher, dass bei den letzten drei Paaren die Volatilität höher ist und der Spread höher ist (wir sollten 25-30 Pips statt 20 Pips nehmen). Daher sind ihr Bruttoergebnis und der Prozentsatz der erratenen Richtungen besser. Aber die Eingabe einer erhöhten Spanne macht die Statistik nicht ungültig. Nur um zu verstehen, was vor sich geht.

PM.

 
SanSanych Fomenko:

So wie ich das sehe, schließt das eine das andere nicht aus.

Alexey hat den offensichtlichen Nachteil aller Auswertungen von Klassifizierungsvorhersagen überwunden: Der Wert einer korrekten Vorhersage für 1 Pip-Bar und der Wert einer Vorhersage für 10 Pip-Bar sind offensichtlich völlig unterschiedlich.

Herzlichen Glückwunsch an Sie, Alexey!

Vielen Dank, SanSanych. Alles funktioniert. Ich werde zunächst versuchen, es auf MT4 laufen zu lassen.
 

Warnung. Ich habe einen Fehler im Code gefunden, der zu großartigen Ergebnissen geführt hat. Alle meine Optimierungen werden bis zur detaillierten Analyse gestrichen!

Ich habe einen Expert Advisor auf MT4 in Verbindung mit Arom erstellt. Ich sah einige Unterschiede in den Ergebnissen, deshalb habe ich eine detaillierte Code-Überprüfung vorgenommen und einen groben Fehler gefunden. Ich habe noch nichts Rentables gefunden. Das Experiment geht weiter.