L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 196

 
Vizard_:
Prenditi il tuo tempo. Indipendentemente dal metodo di clustering. Fare un solo passaggio. Rifinite alcune osservazioni. Fallo di nuovo. Confrontare i risultati.

risultati. Sviluppare un metodo per ulteriori azioni. Altrimenti farete "grails" e poi vi chiederete perché non funziona))))


Stavo pensando di fare un overshoot totale, se inizialmente ce ne fossero 500, poi alla fine potrebbe risultare che un buon modello ne terrà conto solo per 5

ed è tutto quello che terrò...

 
Dr.Trader:

Se cercate i modelli come mytarmailS, scorrendo per barra, ogni modello conterrà informazioni su quanto può essere l'intervallo dei valori su ogni barra. Più modelli - l'intervallo più piccolo sarà assegnato a ogni barra.....................

Il feed di dati a finestra scorrevole è solo il mio stile di feed di dati e niente di più, buono o cattivo, non so, penso che sia lo stesso di tutti gli altri...

Ma non ha niente a che vedere con l'approccio che ho spiegato...

Questo approccio permette di raggruppare ed estrarre quei pochi percento di dati utili che i MO convenzionali non possono...

potete tranquillamente prendere i vostri predittori come li alimentate nella vostra rete, raggrupparli (ciascuno) ed eseguirli attraverso l'algoritmo che ho descritto

 
Dr.Trader:

In parole povere, perché una particolare finestra con nuovi dati rientri in qualsiasi modello trovato in precedenza, deve rientrare in tali vincoli veritici inerenti a ciascun modello.

Beh, dipende da quanto vuoi insegnare al modello, se vuoi insegnare debolmente e non fare molti cluster allora le figure nella testa del modello saranno smussate e quel difetto che dici teoricamente dovrebbe scomparire...

Ecco come il modello vede una serie di prezzi di 50 valori raggruppati in 49 cluster

й

codice...

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:

Beh, dipende da quanto vuoi allenare il modello, se ti alleni debolmente, non fai molti cluster, allora le forme nella testa del modello saranno abbastanza smussate e l'inconveniente che dici teoricamente dovrebbe scomparire...

Ecco come il modello vede una serie di prezzi di 50 valori che sono raggruppati in 49 cluster

codice...

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. Ho fatto la stessa cosa molto tempo fa. Kohonen è roba interessante. Ma ricordate, chiamarlo algoritmo di clustering è sbagliato. È un algoritmo di convoluzione. E il clustering viene poi fatto sullo spazio bidimensionale risultante...
 
Alexey Burnakov:
Vo. L'ho fatto anche molto tempo fa. Kohonen è una cosa interessante. Ma ricordate che chiamarlo algoritmo di clustering non è corretto. È un algoritmo di convoluzione. E il clustering viene poi fatto sullo spazio bidimensionale risultante...

Grazie, non lo sapevo.

Ma è possibile usare il modello di uscita come un cluster, vero?

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:

Grazie, non lo sapevo.

Ma si può usare l'output di un modello come cluster, vero?

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

Sì, certo che puoi... È essenzialmente un'aggregazione di vettori simili in queste cellule.

Può essere così (l'ho fatto io stesso al lavoro e so quello che dico). Ho n milioni di voci. Il vettore degli input è lungo un paio di centinaia. Voglio fare dei cluster, ma non so prima quanti cluster ci sono. Nessun algoritmo può elaborare una tale matrice di dati su un computer ordinario. Quindi, prima collasso lo spazio di input e faccio una griglia di, per esempio, 50*50. Il risultato sono 2500 rappresentanti tipici della popolazione... Su un tale array, il mio computer tira agnes (clustering gerarchico). Costruisce una matrice di vicinanza di tutti a tutti...

E si scopre che io raggruppo questi 2500 in, diciamo, 10 cluster e la metrica di aggregazione è buona.

 
Alexey Burnakov:

Sì, certo che puoi... C'è essenzialmente un'aggregazione di vettori simili in quelle cellule.

Potrebbe essere il caso (l'ho fatto io stesso al lavoro e so quello che dico). Ho n milioni di voci. Il vettore degli input è lungo un paio di centinaia. Voglio fare dei cluster, ma non so prima quanti cluster ci sono. Nessun algoritmo può elaborare una tale matrice di dati su un computer ordinario. Quindi, prima collasso lo spazio di input e faccio una griglia di, per esempio, 50*50. Il risultato sono 2500 rappresentanti tipici della popolazione... Su un tale array, il mio computer tira agnes (clustering gerarchico). Costruisce una matrice di vicinanza di tutti a tutti...

E si scopre che io raggruppo questi 2500 in, diciamo, 10 cluster e la metrica di aggregazione è buona.

nel manualehttps://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html

sotto

Costruire super classi dalla SOM risultante

esattamente quello di cui stai parlando

 

Per coloro che vogliono sapere cosa è veramente il mercato...

guarda dai vecchi video a quelli nuovi....

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

non sembra difficile, ma programmarlo? per me non è ancora possibile...

Suggerisco di discutere come codificare tali approcci per MoD o semplicemente codificarli

 

Per informazioni sul linguaggio R e la nuova MetaTrader 5 build 1467:

  • È stata rilasciata una versione aggiornata delle librerie statistiche, simile a R:

    Distribuzioni statistiche in MQL5 - prendere il meglio da R e renderlo più veloce

  • I calcoli in MQL5 sono da 3 a 7 volte più veloci che in R (anche tenendo conto che le funzioni sono implementate in C++)
  • Alcune funzioni R hanno errori dovuti a vecchi metodi di ottimizzazione/semplificazione, che portano a risultati errati
  • È stata aggiunta una versione beta di librerie grafiche simili a R, che permette di visualizzare i dati come in R.
  • Aggiunta la comoda funzione ArrayPrint, che stampa sia array standard che strutture come in R


Puoi aggiornare alla 1467 dal server MetaQuotes-Demo.

Molte nuove funzioni matematiche e statistiche simili a R saranno aggiunte nelle prossime versioni. Questo permetterà più calcoli e visualizzazioni direttamente in MetaTrader 5.
 
Solo per curiosità - prendete solo i valori dei prezzi e diversi indicatori dai prezzi come predittori qui? e qualcuno usa i volumi reali e gli indicatori dai volumi?