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

 
Vizard_:
radikal.ru/video/1JIag8ds57s

)))

 
Vizard_:

Ne tombez pas dans l'euphorie. Prends quelques jours pour le digérer calmement, fais-le tourner...

C'est un bon conseil. Prenez votre temps... :-)

 
mytarmailS:

les volumes horizontaux habituels ! !! Jésus ! D'où venez-vous ? )) Ah, j'ai oublié que c'est un forum sur le Forex)


Dans la petite fenêtre ? Sur le moniteur de gauche ?

 
Sergey Chalyshev:

Qu'est-ce qu'il y a ?

J'ai moi-même le même problème. Quelqu'un peut-il me dire pourquoi cela peut se produire ?

 
Mikhail Khlestov:

J'ai moi-même ce problème. Quelqu'un peut-il me dire pourquoi cela peut se produire ?

C'est le cas pour tout le monde, cela n'a pas de sens de regarder les résultats des bacs, seulement les OOS, mais si le système n'a pas identifié de véritables modèles (et quelques centaines de personnes dans le monde le font), alors les OOS seront noyés par la propagation ou quelque chose de pire. Mais pour réparer une trace - aucun problème pour n'importe quelle liste grise avec 100$ et quelques heures.

 
Igor Makanu:

1. je vais essayer de citer librement Haikin : l'ensemble des données doit contenir des exemples positifs et négatifs.

cela semble être clair avec les exemples positifs, ce qui reste à clarifier est comment enseigner les exemples négatifs ?

2.noise devrait également être donné, mais ce n'est pas exactement un exemple négatif, n'est-ce pas ?

1) Vous avez raison. Mais vous oubliez que le rapport entre positif et négatif doit être cohérent avec la pratique. C'est aussi une citation de mémoire.

Enseigner de la même manière. Servez les intrants en les mélangeant avec les positifs.

2. de 1. il s'ensuit - aucun bruit.

Si vous n'avez que du positif et pas de négatif, vous n'avez aucune idée de ce que vous enseignez.

 
Igor Makanu:

1. je n'ai pas oublié, parce que je ne sais pas - il n'y a rien à oublier, j'ai toujours envie de lire, mais ce sont ces petites choses qui commencent tout !

2. individuellement, tout, imho, bien, mes objectifs sont bons - je ne veux pas prévoir l'imprévisible, je veux adapter l'adaptatif ;)))

Au fait, où prendre le négatif. Puisque je ne connais pas la tâche, en termes généraux.

Si vous enseignez, par exemple, à reconnaître des triangles, l'échantillon d'entraînement doit contenir non seulement une variété de triangles, mais aussi une variété de non-triangles.

 
Vizard_:

radikal.ru/video/m9Ct2f9xDCn

Merde... quel genre de musique tu écoutes))

 

Si vous vous souvenez, j'ai abordé la question de l'algorithmisation des déchets flottants. Je n'ai pas eu de réponses claires, alors j'ai dû réfléchir par moi-même...

Au début, j'ai expérimenté les distributions - plus le prix fluctuait sur un niveau et plus ces fluctuations étaient importantes, plus le flop était probable ; cependant, cette méthode a des inconvénients et j'y ai renoncé.

La deuxième méthode était meilleure et je voudrais la partager avec vous au cas où quelqu'un serait intéressé...

Pour la deuxième méthode, j'ai utilisé l'autocorrélation du prix et j'ai longtemps cherché des signes de platitude dans les indications ACF et j'ai trouvé deux signes simples.

Voici à quoi ressemblent le prix et l'ACF

le code sur le R-ke

layout(1:2)
x <- cumsum(rnorm(100))
plot(x,t="l")
acf(x,plot = T,lag.max = length(x))

A propos des signes

Le premier signe est le nombre d'extrema dans l'ACF (bleu).

Le second indicateur est le nombre d'intersections de la ligne zéro avec l'axe (rouge).

Plus il y a de croisements et d'extrema, plus le plat est fort.

Une fonction qui renvoie les deux attributs ou paramètres ci-dessus.

get_parameters <- function(x){
  ac <- acf(x,lag.max = length(x),plot = F)
  
  
  library(quantmod)
  
  xx <- ac$acf
  
  pi <- findPeaks(xx)
  va <- findValleys(xx)
  length(c(pi,va))
  
  flet <- rep(0,length(xx))
  for(i in 5:length(xx)){
    
    if(xx[i-1]>0 && xx[i]<0)  flet[i] <- 1
    if(xx[i-1]<0 && xx[i]>0)  flet[i] <- 1
  }
  
  x1 <- length(c(pi,va))
  x2 <- sum(flet)
  
  return(c(x1,x2))
}

La méthode a un inconvénient - il s'agit d'une fenêtre glissante de taille fixe, mais elle peut être contournée, bien que l'algorithme ralentisse une centaine de fois, ce qui est mauvais...


Maintenant le résultat est en fait

Nous considérons comme "plat" le cas où le premier et le second signe sont supérieurs à 7 %.

l'algorithme dans une fenêtre glissante de taille 30 points

dans une fenêtre glissante de 200 pixels

et le code lui-même

layout(1:1)
x <- cumsum(rnorm(1000))
plot(x,t="l")
n <- 200  # length roll window
for(i in n:length(x)){
  ii <- (i-(n-1)):i
  gp <- get_parameters(x[ii])
 flat <- gp[1]>=8 && gp[2]>=8
if(flat){
   rect(i-length(ii), min(x[ii]), i, max(x[ii]), col = "aquamarine3",border = "aquamarine3")
 }}
lines(x,t="l")


Si quelqu'un sait comment améliorer l'algorithme, qu'il n'hésite pas à...

 
mytarmailS:

Voir .....

Algorithme dans une fenêtre glissante de 30 pixels

dans une fenêtre glissante de 200 pixels

Donc si on prend l'histoire entière comme une fenêtre, ce sera un appartement du début à la fin ?