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

 
СанСаныч Фоменко #:

Pouvez-vous me donner un exemple d'AO ? J'avais l'impression que la recherche d'un enseignant était un travail à la pièce et se prêtait à l'automatisation.

On peut...

Il faut que ce soit aussi simple et reproductible que possible, s'il y a de l'intérêt...

Cela prendrait un peu de temps.

 
mytarmailS #:

vous pouvez...

Nous devons rendre l'exemple aussi simple et reproductible que possible, s'il y a un intérêt...

vous avez besoin d'un peu de temps

C'est très intéressant pour moi. Ma recherche d'un enseignant est un processus long et douloureux.

 
mytarmailS #:

Votre problème est un problème d'optimisation, à la recherche de paramètres inconnus.

Voici le SEUL article dont vous avez besoin pour étudier https://www.mql5.com/ru/articles/2225


Si vous voulez enseigner l'AMO pour maximiser le profit et minimiser le drawdown :


vous avez besoin

1) créer une fonction d'aptitude, une fonction qui comptabilisera les profits et les pertes des signaux de trading.

2) un algorithme MO quelconque qui génère des signaux pour le trading, pour la fonction fitness (p.1)

3) tout algorithme d'optimisation (génétique, essaim de particules, barattage) - qui générera des signaux comme cibles pour l'AMO (p.2).


algorithme de ce type

1) L'AO crée une cible pour l'AMO

2) L'AMO est entraîné sur cette cible

3) L'AMO crée une prévision de signaux commerciaux

4) les signaux commerciaux sont évalués par FF et produisent un résultat

5) le résultat de FF est évalué par AO et maximisé/minimisé, et ainsi de suite en cercle jusqu'à ce qu'un résultat acceptable soit obtenu.


==========

AO - algorithme d'optimisation

AMO - algorithme d'apprentissage automatique

FF - fonction d'aptitude

=========


ps. si vous voulez travailler avec neuronka et non avec un AMO, vous pouvez changer les poids au moyen de l'AO, sans apprentissage du ciblage.

Merci !

Cette formulation de la réponse a immédiatement conduit à la question de la concrétisation du trading manuel, où la clarté et la concrétisation des signaux, leur variété et leur flexibilité excessive font défaut. Il y a donc matière à réflexion.

 
СанСаныч Фоменко #:

C'est très intéressant pour moi. Ma recherche d'un enseignant est un processus long et douloureux.

Voici le code de l'enseignement de la forêt de rendom au moyen de l'AO,

la fonction de fitness (NOTRE OBJECTIF) est de trouver une croissance belle/stable du profit, à savoir la corrélation maximale entre la dynamique du bilan et la ligne droite de croissance.

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


Voici le code des fonctions pour calculer le profit et la FF.

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



Voici le résultat, AO a trouvé une telle cible pour l'AMO que si nous négocions ses signaux, nous obtiendrons une belle croissance de profit.


 
Elvin Nasirov #:

Merci de votre attention !

Cette réponse m'a immédiatement conduit à la question de la concrétisation du commerce manuel, où la clarté et le caractère concret des signaux, leur variété et leur flexibilité excessive font défaut. Il y a donc matière à réflexion.

Je n'arrive toujours pas à concrétiser mon trading manuel....

 
mytarmailS #:

Voici le code pour enseigner le Rendom Forrest avec les outils AO,

fonction d'aptitude (NOTRE OBJECTIF) - trouver une croissance des bénéfices belle/stable, à savoir la corrélation maximale entre la dynamique du bilan et une ligne droite ascendante


Voici le code des fonctions de calcul du profit et du FF



Voici le résultat, AO a trouvé une telle cible pour AMO que si nous négocions ses signaux, nous obtiendrons une belle croissance des profits.


Et alors ? ) Comment cela affecte-t-il le résultat sur de nouvelles données ? Cela se fait sans ff par un simple marquage.
 
Elvin Nasirov #:

Je ne dirais pas que j'ai la flemme de faire d'autres balises, j'essaie différentes variantes et comme je ne suis pas un spécialiste de l'apprentissage automatique, lorsqu'une idée me vient à l'esprit, j'essaie de trouver au moins quelques variantes d'exemples avec des tentatives pour atteindre le résultat.

Lorsque j'ai essayé de faire une version paramétrique de la solution avec ses propres valeurs d'indicateurs, il s'est avéré qu'il y a tellement de variantes de l'ensemble des valeurs d'indicateurs qu'avec la puissance de calcul actuelle, la sélection des paramètres sera effectuée dans près de 10 ans).

J'ai été surpris lorsque j'ai lu la phrase "prendre n'importe quel TS rentable sur le marché". Je n'avais même pas envisagé cette option, car je pensais qu'ils n'existaient pas.

Il s'agit d'une sorte de perception compliquée. Vous devez trouver l'inefficacité. Si vous ne pouvez pas la trouver vous-même, cherchez-la chez les autres. Il existe des signaux historiques sur le marché.
 
Maxim Dmitrievsky #:
Et alors ? ) Il s'agit d'un simple balisage sans FF.

Si c'était aussi simple, il n'y aurait pas d'AO et de FF...


C'est quand on sait exactement ce dont on a besoin et qu'on comprend comment l'algorithmer qu'on peut le faire avec le balisage.

Et il y a des cas où nous voulons simplement dire : "Je ne sais pas à quoi cela doit ressembler, mais faites en sorte que ce soit bien ".

Tout ce que nous pouvons décrire est bon/mauvais, c'est ce qui est mis dans le FF.


Voici un exemple de tâche :

Il s 'agit d'entraîner un OMA de manière à ce qu'il ne commette pas d'erreurs dans ses prédictions sur de nouvelles données concernant l'une des classes, l'une des classes n'ayant pas le droit de commettre d'erreurs du tout...

comment faire un tel balisage ?


 
mytarmailS #:

Si c'était aussi simple, il n'y aurait pas d'AO et de FF.


Lorsque l'on sait exactement ce dont on a besoin et que l'on comprend comment l'algorithmer, on peut utiliser le balisage.

Dans certains cas, nous voulons simplement dire : " Je ne sais pas à quoi cela doit ressembler, mais faites en sorte que ce soit bien ".

Tout ce que nous pouvons décrire est bon/mauvais, et c'est ce qui est intégré dans le FF.


Voici un exemple de tâche :

La tâche consiste à entraîner l'AMO de manière à ce qu'il ne se trompe pas dans ses prédictions sur de nouvelles données concernant l'une des classes, l'une des classes n'ayant pas le droit de se tromper du tout....

comment faire cela avec des balises ?


Après balisage, on rejette les trades perdants dans la 3ème classe, et on obtient la même courbe plate.
Et comment la sélection des critères d'optimisation peut-elle apporter quelque chose aux nouvelles données ? C'est un moyen d'améliorer un TS prêt à l'emploi. Rechercher des pertes personnalisées et voir ce qu'il y a sur les nouvelles données ? Ce n'est pas non plus une bonne idée.
 
Maxim Dmitrievsky #:
Après le marquage, vous jetez les transactions perdantes dans la troisième classe, et vous obtenez la même courbe lisse.

C'est la quantité de code qu'il faut écrire avec ces classes, en les jetant, en les recyclant...

Dans FF, j'écris juste 2 lignes, pénalisant pour une erreur de classe, et récompensant pour une réponse correcte, et c'est tout, et ensuite il imagine comment le faire tout seul et n'a pas besoin d'une montagne de code....


OK, c'était facile, un autre exemple de tâche

L'entrée de l'AMO est l'eurodollar, et je veux que la sortie soit une série qui soit

1) cointégrée avec la livre

2) si nous effectuons un arbitrage AMO ligne/livre, de sorte qu'il y ait un profit.

Comment cela peut-il être fait par le biais du balisage ?

Maxim Dmitrievsky #:
L'optimisation peut-elle faire quelque chose pour les nouvelles données ?

De la même manière qu'avec la MO normale, nous nous entraînons et nous regardons avec un œil sur la piste, avec l'autre sur le test.

Raison: