L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 196

 
Vizard_:
Prenez votre temps. Quelle que soit la méthode de clustering. Faites un passage. Ajoutez quelques observations. Refaites-le. Comparez les résultats.

les résultats. Élaborer une méthode pour la suite des opérations. Sinon, vous ferez des "grails" et vous vous demanderez ensuite pourquoi cela ne fonctionne pas)))).


Je pensais faire un dépassement total, si au départ il y en avait 500, alors à la fin il peut s'avérer qu'un bon modèle n'en prendra en compte que 5.

et c'est tout ce que je vais garder...

 
Dr. Trader:

Si vous recherchez des motifs comme mytarmailS, en glissant par barre, chaque motif contiendra des informations sur l'intervalle que peuvent représenter les valeurs de chaque barre. Plus le nombre de motifs est élevé, plus l'intervalle alloué à chaque barre est petit. .....................

Le flux de données à fenêtre coulissante est juste mon style de flux de données et rien de plus, bon ou mauvais, je ne sais pas, je pense que c'est le même que celui de tout le monde...

Mais cela n'a rien à voir avec l'approche que j'ai expliquée...

Cette approche vous permet de regrouper et d'extraire ces quelques pour cent de données utiles que les modes opératoires classiques ne peuvent pas...

vous pouvez sans risque prendre vos prédicteurs tels que vous les introduisez dans votre réseau, les regrouper (chacun) et les faire passer par l'algorithme que j'ai décrit

 
Dr. Trader:

En gros, pour qu'une fenêtre particulière contenant de nouvelles données s'inscrive dans l'un des schémas trouvés précédemment, elle doit respecter les contraintes verticales inhérentes à chaque schéma.

Eh bien, cela dépend de la façon dont vous voulez enseigner le modèle, si vous voulez l'enseigner faiblement et ne pas faire beaucoup de clusters, alors les figures dans la tête du modèle seront lissées et ce défaut que vous dites théoriquement devrait disparaître...

Voici comment le modèle perçoit une série de prix de 50 valeurs regroupées en 49 clusters

й

le 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:

Eh bien, cela dépend de l'ampleur de l'entraînement du modèle, si vous vous entraînez faiblement, en ne faisant pas beaucoup de clusters, alors les formes dans la tête du modèle seront assez lissées et l'inconvénient que vous dites théoriquement devrait disparaître...

Voici comment le modèle perçoit une série de prix de 50 valeurs regroupées en 49 clusters

le 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. J'ai fait la même chose il y a longtemps. Kohonen est intéressant. Mais n'oubliez pas qu'il est faux de l'appeler un algorithme de regroupement. C'est un algorithme de convolution. Et le regroupement est ensuite effectué sur l'espace bidimensionnel résultant...
 
Alexey Burnakov:
Vo. Je l'ai aussi fait il y a longtemps. Kohonen est une chose intéressante. Mais n'oubliez pas qu'il n'est pas correct de l'appeler un algorithme de regroupement. Il s'agit d'un algorithme de convolution. Et le regroupement est ensuite effectué sur l'espace bidimensionnel résultant...

Merci ! Je ne le savais pas.

Mais il est possible d'utiliser la sortie du modèle comme un cluster, n'est-ce pas ?

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:

Merci ! Je ne le savais pas.

Mais vous pouvez utiliser la sortie d'un modèle comme un cluster, n'est-ce pas ?

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

Oui, bien sûr, vous pouvez... C'est essentiellement une agrégation de vecteurs similaires dans ces cellules.

Il se peut que ce soit le cas (je l'ai fait moi-même au travail et je sais ce que je dis). J'ai n millions d'entrées. Le vecteur d'entrées est long de quelques centaines. Je veux le mettre en grappes, mais je ne sais pas à l'avance combien de grappes il y a. Aucun algorithme ne peut traiter un tel ensemble de données sur un ordinateur ordinaire. Par conséquent, je commence par réduire l'espace de saisie et faire une grille de, par exemple, 50*50. Le résultat est de 2500 représentants typiques de la population... Sur un tel tableau, mon ordinateur tire des agnes (clustering hiérarchique). Elle construit une matrice de proximité de tous à tous...

Et il s'avère que je regroupe ces 2500 en, disons, 10 clusters et que la métrique d'agrégation est bonne.

 
Alexey Burnakov:

Oui, bien sûr, vous pouvez... Il y a essentiellement une agrégation de vecteurs similaires dans ces cellules.

C'est peut-être le cas (je l'ai fait moi-même au travail et je sais ce que je dis). J'ai n millions d'entrées. Le vecteur d'entrées est long de quelques centaines. Je veux le regrouper, mais je ne sais pas à l'avance combien de groupes il y a. Aucun algorithme ne peut traiter un tel ensemble de données sur un ordinateur ordinaire. Par conséquent, je commence par réduire l'espace de saisie et faire une grille de, par exemple, 50*50. Le résultat est de 2500 représentants typiques de la population... Sur un tel tableau, mon ordinateur tire des agnes (clustering hiérarchique). Il construit une matrice de proximité de tous à tous...

Et il s'avère que je regroupe ces 2500 en, disons, 10 clusters et que la métrique d'agrégation est bonne.

dans le manuelhttps://cran.r-project.org/web/packages/SOMbrero/vignettes/doc-numericSOM.html

sous

Construction de super classes à partir du SOM résultant

exactement ce dont vous parlez

 

Pour ceux qui veulent savoir ce qu'est réellement le marché...

regarder d'anciennes vidéos à de nouvelles....

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

cela ne semble pas difficile, mais pour le programmer ? pour moi, ce n'est pas encore possible...

Je suggère que nous discutions de la manière de coder de telles approches pour le ministère de la Défense ou que nous les codions simplement.

 

Pour des informations sur le langage R et le nouveau MetaTrader 5 build 1467 :

  • Une version mise à jour des bibliothèques statistiques, similaires à R, a été publiée :

    Distributions statistiques dans MQL5 - prenez le meilleur de R et rendez-le plus rapide

  • Les calculs dans MQL5 sont de 3 à 7 fois plus rapides que dans R (même en tenant compte du fait que les fonctions sont implémentées en C++).
  • Certaines fonctions R présentent des erreurs dues à d'anciennes méthodes d'optimisation/simplification, conduisant à des résultats erronés
  • Une version bêta de bibliothèques graphiques similaires à R a été ajoutée, ce qui permet de visualiser les données comme dans R.
  • Ajout de la fonction pratique ArrayPrint, qui imprime à la fois les tableaux et les structures standard comme en R.


Vous pouvez mettre à jour la version 1467 à partir du serveur MetaQuotes-Demo.

Un grand nombre de nouvelles fonctions mathématiques et statistiques similaires à celles de R seront ajoutées dans les prochaines versions. Cela permettra d'effectuer davantage de calculs et de visualisations directement dans MetaTrader 5.
 
Par simple curiosité, prenez-vous uniquement les valeurs des prix et les différents indicateurs des prix comme prédicteurs ici ? Et quelqu'un utilise-t-il les volumes réels et les indicateurs des volumes ?
Raison: