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

 
Alexey Burnakov:

Dies ist ein großes Problem. Es ist fast unmöglich, dieses Problem zu lösen, ohne das Lernen zu beeinträchtigen.
Je weiter man in die Vergangenheit blickt, desto mehr ist man von den Beobachtungen der Nachbarn abhängig.

Wenn Sie die Maschine mit nicht spezifizierten Beobachtungen füttern, verlieren Sie das Wichtigste - die Forderung nach Unabhängigkeit der Beobachtungen. Danach wird das Lernen drastisch unzureichend sein. Und die Statistik funktioniert nicht.

Um dies zu vermeiden, müssen Sie die Beobachtungen so ausdünnen, dass die Verzögerung der maximalen Rückschau kleiner oder gleich dem Schritt der Ausdünnung der Beobachtungen ist. Und wozu würde das führen? Hundertfache Reduktion des Umfangs der Trainingsstichprobe.

Hier gilt es, einen Kompromiss zu finden. Tiefe des Blicks im Vergleich zur Anzahl der Beispiele in der Stichprobe.

Ich stimme zu, dass es ein Problem ist, ich bin schon seit Wochen darüber ergraut...

Was bedeutet es, je weiter man zurückblickt, desto abhängiger sind die benachbarten Beobachtungen. ? das macht keinen Sinn...

Und das mit dem Aufschlitzen, bitte, das verstehe ich auch nicht ...

 
mytarmailS:

Ich stimme zu, dass es ein Problem ist, ich graue mir schon seit ein paar Wochen darüber...

Was bedeutet es, dass man , je weiter man in die Vergangenheit blickt, umso mehr von benachbarten Beobachtungen abhängig ist? ? es ist nicht klar...

Und das mit dem Aufschlitzen, bitte klären... Ich verstehe es auch nicht...

Gut. Nehmen Sie Ihr eigenes Beispiel.

Für zwei benachbarte Balken in der Zeit zeichnen Sie fast 100% identische Histogramme der vergangenen Preise. Das heißt, die beiden Trainingsbeispiele werden sich sehr ähnlich sein, nur weil sie zeitlich nebeneinander liegen. Dies widerspricht der grundlegenden Eigenschaft statistischer Prozesse, dass die Beobachtungen unabhängig sind. Die Maschine lernt keine zeitlich unveränderlichen Muster, sondern sich wiederholende (fast gleichbleibende). Stellen Sie sich vor, Sie haben Vasya 200 Mal in einer Meinungsumfrage befragt und versuchen, die Erkenntnisse, die Sie dabei gewonnen haben, an 1000 verschiedene Personen weiterzugeben.
 
Alexey Burnakov:
Gut. Zu Ihrem Beispiel.

Für zwei zeitlich benachbarte Balken werden Sie fast 100% identische Histogramme vergangener Preise zeichnen. Das heißt, die beiden Trainingsbeispiele werden sich sehr ähnlich sein, nur weil sie zeitlich nebeneinander liegen. Dies widerspricht der grundlegenden Eigenschaft statistischer Prozesse, dass die Beobachtungen unabhängig sind. Die Maschine lernt keine zeitlich unveränderlichen Muster, sondern sich wiederholende (fast gleichbleibende). Stellen Sie sich vor, Sie haben Vasya 200 Mal im Rahmen einer Meinungsumfrage befragt und versuchen, die Erkenntnisse, die Sie gewonnen haben, auf 1000 andere Menschen zu übertragen.

Oh!!! das ist anders, jetzt ist alles kristallklar :)

1) Sie können die Fenstergröße mehrmals verkleinern, dann werden die Abschnitte in jedem Slice weniger ähnlich sein

2) Sie können diePausen so weit wie möglich erhöhen, was auch ein wenigGlättung beseitigen würde

PRICE <- cumsum(rnorm(300))+1000
layout(1:2)
plot(PRICE,t="l",ylab = "цена" , xlab = "индексы",lwd=2)
Max <- max(PRICE)
Min <- min(PRICE)
range.vector <- seq(Min, Max, length.out=200)
H <- hist(PRICE, breaks = range.vector)
          

 
mytarmailS:

Oh!!! Das ist anders, jetzt macht das alles Sinn :)

1) Sie können die Fenstergröße um ein Vielfaches verkleinern, dann werden die Abschnitte in jedem Slice weniger ähnlich sein

2) Sie könnten diePausen maximieren, wodurch auch ein Teil derGlättung wegfallen würde.

Ich mache es so. Pseudocode:

Beispiel1 = p[0]
Schritt = 720
random = [0;50]
Beispiel 2 = p[Schritt+Zufall]

mit einer maximalen Verzögerung bis zur Vergangenheit = 720

Das heißt, ich schneide so, dass sich die Beobachtungen nicht überschneiden.

Dasselbe Prinzip ist erforderlich, um die Abhängigkeit des Ziels vom Blick nach vorn zu vermeiden.
 

Als Erstes müssen Sie festlegen, welche Art von Prognosehorizont Sie benötigen. Daraus ergibt sich die Tiefe der Geschichte, die Sie untersuchen müssen.

Betrachten Sie Trendcharts mit einer Tiefe von 3000, 1000, 300 und 150 Balken (AUDUSD/H1).

> library("PolyTrend", lib.loc="K:/RRO/R-3.3.1/library")
> trend3000 <- PolyTrend(price[ ,4], alpha = 0.05)
> require(magrittr)
Loading required package: magrittr
> trend1000 <- PolyTrend(price[ ,4] %>% tail(., 1000), alpha = 0.05)
> trend300 <- PolyTrend(price[ ,4] %>% tail(., 300), alpha = 0.05)
> trend150 <- PolyTrend(price[ ,4] %>% tail(., 150), alpha = 0.05)
> plot(trend3000, t="l")
> plot(trend1000, t="l")
> plot(trend300, t="l")
> plot(trend150, t="l")


Ich habe die Bilder in umgekehrter Reihenfolge eingefügt.

Und bei 3000 Takten ist die Richtung "Aufwärts".

Trend type: 3 (cubic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Für kürzere

#  trend1000
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#  trend300
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#trend150
 PolyTrend classification:

Trend type: 3 (cubic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Wenn ich an einem Prognosehorizont von 24 Takten (einem Tag) interessiert bin, brauche ich nicht 3000 Takte rückwärts zu betrachten. 300 Balken würden ausreichen.

Viel Glück!






 

Ich halte die Idee, 24 Schritte im Voraus zu prognostizieren, für fragwürdig.

Sowohl bei der Klassifizierung als auch bei der Regression sollten Sie immer genau EINEN Schritt voraussagen, aber zum Beispiel auf H1, H4 und D1. Wenn wir auf H1 handeln, erhalten wir Vorhersagen für 4 und 24 Schritte vorwärts für H1.

Idealerweise sollte die TF künstlich aus dem zugrunde liegenden Quotienten gebildet werden. In meinem Beispiel laden wir H1 und nehmen keine anderen aus dem Terminal. Mit diesem Ansatz erhalten wir D1 nicht in Verbindung mit 00:00 Uhr, sondern genau 24 Stunden vor der aktuellen Stunde

 
SanSanych Fomenko:

Ich halte die Idee, 24 Schritte im Voraus zu prognostizieren, für fragwürdig.

Sowohl bei der Klassifizierung als auch bei der Regression sollten wir immer genau EINEN Schritt voraussagen, aber zum Beispiel auf H1, H4 und D1. Wenn wir auf H1 handeln, erhalten wir Vorhersagen für 4 und 24 Schritte vorwärts für H1.

Idealerweise sollte die TF künstlich aus dem zugrunde liegenden Quotienten gebildet werden. In meinem Beispiel laden wir H1 und nehmen keine anderen aus dem Terminal. Mit diesem Ansatz erhalten wir D1 nicht in Verbindung mit 00:00 Uhr, sondern genau 24 Stunden vor der aktuellen Stunde

Das hängt davon ab, was wir prognostizieren. Eine 24-Stunden-Trendvorhersage ist zum Beispiel recht zufriedenstellend (die Kurve ist sehr glatt). D.h. wenn Sie die FORM der Kurve sehen wollen , ohne besondere Anforderungen an die Genauigkeit.

Ansonsten ist Ihr Beispiel (prinzipiell) absolut korrekt. Und die Option des gleitenden Zeitfensters (24 Stunden) ist ebenfalls sehr praktikabel. Vieles hängt von den Details ab.

Viel Glück!

 

Kurze Frage...

Ich habe eine Preisverteilung, d. h. einen regelmäßigen Vektor, erstellt, und ich erhalte eine Art Marktprofil, aber kann ich ein echtes Volumenprofil erstellen, d. h. den Preis mit dem Volumen in der Verteilung verknüpfen?

 
mytarmailS:

Kurze Frage...

Ich habe eine Preisverteilung erstellt, d.h. einen regelmäßigen Vektor, und ich habe eine Art Marktprofil erhalten, aber ist es möglich, ein echtes Volumenprofil zu erstellen, d.h. den Preis mit dem Volumen in der Verteilung zu verbinden?

Es gibt Indikatoren, die aus Preis und Volumen ein allgemeines Diagramm erstellen. Und die Verteilung kann dafür berechnet werden. Zum Beispiel den Chaikin-Oszillator oder einige andere Indikatoren im Ordner Indikator/Volumen. Bei Devisen handelt es sich jedoch um Tick-Volumina und nicht um reale Volumina, die zwar miteinander korrelieren, aber dennoch schlecht sind; es ist besser, nach realen Börsenvolumina zu suchen.

 
Dr. Trader:

Es gibt Indikatoren, die aus Preis und Volumen ein allgemeines Diagramm erstellen. Und Sie können die Verteilung dafür lesen. Zum Beispiel der Chaikin-Oszillator oder einige andere Indikatoren im Ordner Indikator/Volumen. Aber im Devisenhandel sind es Tick-Volumina anstelle von realen Volumina. Obwohl sie korrelieren, ist es immer noch schlecht, es ist besser, nach realen Börsenvolumina zu suchen.

Ich handle nicht mit Devisen, ich bin nicht einmal mit Metatrader vertraut :)

Ich würde gerne mit verschiedenen Profilen in P experimentieren, ich verstehe nur nicht, wie man eine Verteilung von zwei Vektoren erstellt

Es muss nicht unbedingt das Volumen sein, es ist ein Anfang. Sie können alles in das Profil eingeben, aber es muss mit dem Preis verbunden sein, und das bedeutet zwei Vektoren