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

 
Eidechse_:
Nehmen Sie sich Zeit. Unabhängig von der Clustermethode. Machen Sie einen Durchgang. Trimmen Sie ein paar Beobachtungen. Wiederholen Sie es. Vergleichen Sie die Ergebnisse.

Ergebnisse. Entwickeln Sie eine Methode für das weitere Vorgehen. Andernfalls werden Sie "grails" machen und sich dann wundern, warum es nicht funktioniert))))


Ich dachte an eine Gesamtüberschreitung, wenn es anfangs 500 waren, dann kann es sich am Ende herausstellen, dass ein gutes Modell nur 5 berücksichtigt.

und das ist alles, was ich behalten werde...

 
Dr. Trader:

Wenn Sie als mytarmailS nach Mustern suchen, die nach Balken gleiten, enthält jedes Muster Informationen darüber, wie groß das Intervall zwischen den Werten in jedem Balken sein kann. Je mehr Muster - desto kleiner ist das Intervall, das jedem Takt zugewiesen wird.....................

Der Schiebefenster-Datenfeed ist nur meine Art von Datenfeed und nichts weiter, ob gut oder schlecht, weiß ich nicht, ich denke, es ist das Gleiche wie bei allen anderen...

Aber das hat nichts mit dem Ansatz zu tun, den ich erläutert habe...

Mit diesem Ansatz können Sie die wenigen Prozent nützlicher Daten clustern und extrahieren, die herkömmliche MOs nicht erfassen können...

Sie können Ihre Prädiktoren, die Sie in Ihr Netz eingespeist haben, in Gruppen zusammenfassen und sie durch den von mir beschriebenen Algorithmus laufen lassen.

 
Dr. Trader:

Grob gesagt, damit ein bestimmtes Fenster mit neuen Daten in ein zuvor gefundenes Muster passt, muss es in die jedem Muster innewohnenden veritalen Beschränkungen fallen.

Nun, es hängt davon ab, wie stark Sie das Modell unterrichten wollen. Wenn Sie es nur schwach unterrichten und nicht viele Cluster bilden wollen, dann werden die Figuren im Kopf des Modells geglättet und der Defekt, von dem Sie sprechen, sollte theoretisch verschwinden...

So sieht das Modell eine Preisreihe mit 50 Werten in 49 Clustern

й

Code...

price <- cumsum(rnorm(30000))+1000
plot(price,t="l")

# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
  do.call(cbind,
          lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)

# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))

# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал  
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)

# тренируем модель, с матрицей 7 х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)
 
mytarmailS:

Nun, es hängt davon ab, wie stark Sie das Modell trainieren wollen. Wenn Sie nur schwach trainieren, nicht viele Cluster bilden, dann werden die Formen im Kopf des Modells ziemlich geglättet sein und der Nachteil, den Sie theoretisch nennen, sollte verschwinden...

So sieht das Modell eine Preisreihe von 50 Werten, die in 49 Clustern zusammengefasst sind

Code...

price <- cumsum(rnorm(30000))+1000
plot(price,t="l")

# делаем скользящее окно (50 знач) через матрицу хенкеля
hankel <- function(data, r=50) {
  do.call(cbind,
          lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
price <- hankel(price)

# скалирую, центрирую, в общем нормализирую каждую строчку в матрице
price <- t(apply(price,1,function(x){scale(x,center = T,scale = T)}))

# запускаем пакет с кластеризацыей, в дан. случ с кохоненом
# хорошый мануал  
#https://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html
install.packages("SOMbrero")
library(SOMbrero)

# тренируем модель, с матрицей 7 х7 те 49 кластеров
model <- trainSOM(price, dimension=c(7,7), verbose=T)
plot(model,what="prototypes",type="lines",print.title=T)


Vo. Ich habe vor langer Zeit das Gleiche getan. Kohonen ist eine interessante Sache. Aber denken Sie daran, es einen Clustering-Algorithmus zu nennen, ist falsch. Es ist ein Faltungsalgorithmus. In dem sich ergebenden zweidimensionalen Raum wird dann ein Clustering durchgeführt...
 
Alexey Burnakov:
Vo. Ich habe es auch vor langer Zeit getan. Kohonen ist eine interessante Sache. Aber denken Sie daran, dass es nicht richtig ist, ihn einen Clustering-Algorithmus zu nennen. Es handelt sich um einen Faltungsalgorithmus. In dem sich ergebenden zweidimensionalen Raum wird dann ein Clustering durchgeführt...

Danke, das wusste ich nicht.

Aber es ist doch möglich, Modellausgänge als Cluster zu verwenden, oder?

head(model$clustering , 100)
  [1]  7  7  7  7  7  7  7  7  6  6  6  5  5  4  4  3  3  2  2  1  1  1  1  1  8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14  7  7  7  7  7  7  7  6  5  4  3  3  2  1  1  1  1  1  1
[94]  8  8 15 22 22 29 36
 
mytarmailS:

Danke, das wusste ich nicht.

Aber man kann doch den Output eines Modells als Cluster verwenden, oder nicht?

head(model$clustering , 100)
  [1]  7  7  7  7  7  7  7  7  6  6  6  5  5  4  4  3  3  2  2  1  1  1  1  1  8 15 15 22 22 29 36
[32] 43 43 43 43 43 43 43 44 44 45 45 45 46 46 46 46 47 47 47 47 48 48 48 49 42 35 35 28 28 21 21
[63] 21 21 21 21 21 21 21 21 21 14 14 14  7  7  7  7  7  7  7  6  5  4  3  3  2  1  1  1  1  1  1
[94]  8  8 15 22 22 29 36

Ja, natürlich können Sie das... Es handelt sich im Wesentlichen um eine Anhäufung von ähnlichen Vektoren in diesen Zellen.

Es kann nur so sein (ich habe es selbst bei der Arbeit gemacht und weiß, was ich sage). Ich habe n Millionen Einträge. Der Vektor der Eingaben ist ein paar hundert lang. Ich möchte sie clustern, aber ich weiß vorher nicht, wie viele Cluster es gibt. Kein Algorithmus kann eine solche Datenmenge auf einem normalen Computer verarbeiten. Deshalb verkleinere ich zunächst den Eingabebereich und erstelle ein Raster von z. B. 50*50. Das Ergebnis sind 2500 typische Vertreter der Bevölkerung... Auf einem solchen Array zieht mein Computer Agnes (hierarchisches Clustering). Sie bildet eine Matrix der Nähe von allen zu allen...

Und es stellt sich heraus, dass ich diese 2500 in, sagen wir, 10 Clustern zusammenfasse und die Aggregationsmetrik gut ist.

 
Alexey Burnakov:

Ja, natürlich können Sie das... In diesen Zellen gibt es im Wesentlichen eine Anhäufung von ähnlichen Vektoren.

Das kann durchaus der Fall sein (ich habe es selbst bei der Arbeit gemacht und weiß, was ich sage). Ich habe n Millionen Einträge. Der Vektor der Eingaben ist ein paar hundert lang. Ich möchte sie clustern, aber ich weiß vorher nicht, wie viele Cluster es gibt. Kein Algorithmus kann eine solche Datenmenge auf einem normalen Computer verarbeiten. Deshalb verkleinere ich zunächst den Eingabebereich und erstelle ein Raster von z. B. 50*50. Das Ergebnis sind 2500 typische Vertreter der Bevölkerung... Auf einem solchen Array zieht mein Computer Agnes (hierarchisches Clustering). Sie bildet eine Matrix der Nähe von allen zu allen...

Und es stellt sich heraus, dass ich diese 2500 in, sagen wir, 10 Clustern zusammenfasse und die Aggregationsmetrik gut ist.

im Handbuchhttps://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html

unter

Aufbau von Superklassen aus der resultierenden SOM

genau das, wovon du sprichst

 

Für diejenigen, die wissen wollen, was der Markt wirklich ist...

von alten Videos zu neuen Videos....

https://www.youtube.com/channel/UCsdK6s9i_I0NEMvis6wXhnQ/featured

Es scheint nicht schwierig zu sein, aber es zu programmieren? für mich ist es definitiv noch nicht möglich...

Ich schlage vor, dass wir darüber diskutieren, wie solche Ansätze für MoD kodiert werden können oder sie einfach kodieren

 

Für Informationen über die Sprache R und den neuen MetaTrader 5 Build 1467:

  • Eine aktualisierte Version der statistischen Bibliotheken, ähnlich wie R, wurde veröffentlicht:

    Statistische Verteilungen in MQL5 - nehmen Sie das Beste aus R und machen Sie es schneller

  • Berechnungen in MQL5 sind 3 bis 7 Mal schneller als in R (selbst wenn man berücksichtigt, dass die Funktionen dort in C++ implementiert sind)
  • Einige R-Funktionen weisen aufgrund alter Optimierungs-/Vereinfachungsmethoden Fehler auf, die zu fehlerhaften Ergebnissen führen
  • Eine Beta-Version von grafischen Bibliotheken ähnlich wie in R wurde hinzugefügt, was die Visualisierung von Daten wie in R ermöglicht.
  • Bequeme Funktion ArrayPrint hinzugefügt, die sowohl Standard-Arrays als auch Strukturen wie in R ausgibt


Sie können vom MetaQuotes-Demo-Server auf 1467 aktualisieren.

Viele neue mathematische und statistische Funktionen, die denen von R ähneln, werden in den kommenden Versionen hinzukommen. Dies wird mehr Berechnungen und Visualisierungen direkt im MetaTrader 5 ermöglichen.
 
Nur aus Neugier - nehmen Sie hier nur Preiswerte und verschiedene Indikatoren aus Preisen als Prädiktoren? und verwendet jemand reale Volumen und Indikatoren aus Volumen?