Réseaux de neurones et trading. Mise en œuvre pratique

La mode commerciale connaît des hauts et des bas avec le taux de change Bitcoin. Maintenant, ce sujet est à un point bas après une croissance incroyable en 2018. Beaucoup pendant cette période ont réussi à se familiariser avec les crypto-échanges - ils se sont plongés dans le sujet, ont étudié, échangé, perdu de l'argent et parfois même gagné. En conséquence, la mode est passée, mais l'expérience est restée, bien que négative. Les mots «long», «short», «spread», «diver» peuvent être entendus par ceux dont vous ne vous attendez certainement pas à cela. Mais non seulement le commerce des «mains» a attiré l'attention, mais il existe également des robots commerciaux. Qu'avons-nous dans ce domaine, quelle est l'expérience des 2-3 dernières années?

Malheureusement, il n'y a rien de bon dans ce domaine non plus. Il existe de nombreux outils pour écrire des robots commerciaux, mais il n'y a pas de stratégies stables et rentables. Dans le meilleur des cas, une solution de travail doit être constamment entretenue par une paire de trader-programmeur changeant les paramètres du marché actuel. Le résultat standard après avoir connecté un bot entièrement autonome au dépôt est de vider le dépôt.

Le dernier espoir demeure - les réseaux de neurones. Cela devrait certainement se produire, car le réseau neuronal apprend en tant que personne et s'adapte au marché. Comment allez-vous dans ce domaine? Eh bien ... vous l'avez deviné. Tout est mauvais, il y a beaucoup de discussions, mais il n'y a pas de solutions de travail. Tout va très mal! Un exemple frappant de cela est le magasin d'applications de la communauté MQL5. Derrière la marque MQL5 se trouve une plateforme de trading professionnelle - MetaTrader5 plus une énorme communauté de traders et de programmeurs. Donc, dans ce magasin, il y a une section pour des solutions basées sur des réseaux de neurones, il y a beaucoup de bots, mais pas un seul réel. L'ajout d'un bot à l'aide d'un réseau de neurones est interdit par les règles. C'est difficile à croire, mais ça l'est. L'interdiction de connecter une API externe exclut la possibilité d'utiliser des réseaux de neurones, et les outils intégrés dans MQL5 ne fonctionnent pas dans la pratique. J'ai discuté de ce problème avec le support technique MQL5,Je n'ai pas reçu de réponse claire. Par conséquent, rien ne fonctionne vraiment sur le marché, les solutions de la série «enseignez-vous» présentées sur le github ne sont pas prises en compte.

D'accord, je termine avec l'introduction, je passe aux choses sérieuses. J'ai réussi à former un réseau de neurones, il y a des résultats dignes sur le marché réel. Plus loin sans entrer dans les détails, je vais décrire comment cela a été fait.

La première et principale erreur de tous ceux qui essaient d'enseigner au réseau de neurones le commerce est la pensée commerciale sur le marché. Habituellement, un commerçant essaie de mettre en œuvre une solution basée sur des réseaux de neurones avec un programmeur qui a précédemment écrit des bots. L'algorithme de trading bot résout le problème de trouver le bon point d'entrée à la position et de déterminer le «take» et le «stop». Si vous avez cette tâche à l'esprit lors de la conception d'un réseau de neurones, alors rien ne fonctionnera. Vous pouvez sans cesse trier les options ingénieuses pour les données d'entrée, appliquer ou ne pas donner d'indicateurs, essayer différents types de réseaux de neurones, remplacer les béquilles comme entraînement uniquement dans certaines zones, ou vous entraîner en affichant uniquement des modèles connus. Ne fonctionnera pas.

Avec un réseau de neurones, vous devez ressembler à un enfant, regarder le monde à travers ses yeux et commencer par des tâches simples. La question la plus simple qui peut être posée est «où le prix passera-t-il par X bougies, vers le haut ou vers le bas?». Peu importe à quel point le prix change et peu importe que la réponse ne puisse pas être transformée en stratégie de trading. Nous oublions le trading, maintenant la tâche principale est d'éduquer le réseau au moins quelque chose, juste obtenir la bonne réponse.

J'ai eu cette tâche initiale résolue après 100 500 sélections d'entrée. Utilisé TensoFlow plus Keras, un réseau de Sequental Dense. Ensemble de données d'entrée pour 200-300 milliers d'exemples, vecteur d'entrée 250-350. La forme de la réponse découle du réseau posé de la question - la classification binaire «up» ou «down». L'entrée a été préparée par le bot dans MQL5. Un bot parcourant une histoire forme un fichier csv normal, chaque ligne est un vecteur. À la fin de chaque vecteur, la bonne réponse est 1: 0 si haut, 0: 1 si bas.

Voici quelques suggestions pour ceux qui essaient:

  1. Il étudie bien dans les prévisions de 15 minutes à 60 minutes. À une période plus courte, le chaos du mouvement des prix croît, à une période plus longue, l'influence externe augmente - nouvelles et ainsi de suite, 15-60 minutes la zone la plus «technique».
  2. BTCUSD, EURUSD. — .
  3. « ? ?». , .
  4. , 50% . , .

Vous devez comprendre de quel matériel nous traitons. Le marché est à 95% chaos. Lorsque nous soumettons des données de formation au réseau et indiquons la bonne réponse, nous alimentons en fait le chaos. C’est comme essayer de former un réseau de neurones pour distinguer un chat d’un chien et s’entraîner à lui montrer des papillons, des étoiles et des signes du zodiaque, il n’y aura aucun résultat. Il est donc là, mais, heureusement, le marché donne environ 5% des modèles réellement opérationnels que le réseau peut détecter et cela se reflétera dans ses réponses. Par conséquent, faites attention à l'analyse des résultats des tests.

En utilisant cette approche, j'ai obtenu le résultat suivant:
dans environ 2% des réponses, le réseau devine le mouvement supplémentaire dans le rapport de 2 bonnes réponses à 1 incorrecte. Lors de tests sur le marché réel, c'est exactement ce qui se passe, mais un autre problème se pose. Après tout, nous n'avons répondu qu'à 2% des questions, ignorez le reste. Ceux. nous lançons un neuro sur le marché réel dans un délai de 5 minutes et attendons ... à 2% - ce ne sera que toutes les 50 bougies qui seront répondues, une réponse en 4 heures! Et qu'en faire? Eh bien, si la réponse était «acheter / vendre», alors 6 transactions par jour sont normales, et ici le résumé «haut / bas» puis inexact, déception complète.

En conséquence, j'ai résolu ce problème relativement facilement - juste toutes les 5 minutes, vous devez interroger non pas un modèle, mais 20 à 30 modèles, à la suite des réponses, il y aura assez. Les modèles sont formés sur différentes données d'entrée et, par conséquent, sont formés sur différents modèles. En pratique, il s'avère que les modèles klaxonnent sur des bougies différentes, ne s'activant ensemble que dans des endroits évidents et prévisibles et ne se chevauchent pas.

Pour résumer, il y a maintenant quelque chose qui peut être lancé sur le marché réel et avoir des signaux haut / bas avec une exploitation minière moyenne. Déjà plus amusant, mais le sens pratique est toujours nul.

Quelques mots sur la mise en œuvre. Cela a fonctionné pour moi sur un tas de MQL5 plus Keras. Un bot lancé dans MetaTrader5 sur chaque chandelier a préparé des données pour un réseau de neurones et est passé par une socket à un script python, qui à son tour a interrogé tous les modèles et, lorsqu'il a dépassé un seuil acceptable, a envoyé un signal au canal Telegram.

Ainsi, le circuit fonctionne, mais ne peut pas être appliqué. Il n'a pas été possible d'ajouter des signaux à une stratégie. Le principal inconvénient est la discrétion des réponses. La réponse est un événement auquel vous devez réagir d'une manière ou d'une autre - regardez la situation du marché, pensez si le réseau est bon ou non, etc. Sur une bougie, un modèle pourrait signaler et un autre vers le bas, et lequel croire? En conséquence, l'idée est née d'abandonner le seuil de réussite de la réponse et de commencer à respecter chaque réponse du réseau, mais avec un faible degré de confiance. Si vous commencez à faire la moyenne de toutes les réponses en une seule opinion commune et que vous la considérez comme la réponse du réseau, alors la réponse devient une qualité complètement différente. Dans ce cas, la connaissance de tous les modèles commence à prendre forme, et c'est une énorme quantité de formation conjointe.

Combien de temps, brièvement, mais après toutes les modifications, j'ai commencé à recevoir des réponses uniques du réseau neuronal pour chaque bougie, exprimées en pourcentage du temps de travail prévu de -100% à + 100%. Le signe reflète la direction ascendante / descendante attendue. Il est devenu clair que chaque réponse a un sens. Ça marche! J'ai moi-même une expérience de trading et j'ai vu comment le comportement du réseau devant mes yeux est devenu significatif. Parfois sa logique était compréhensible, parfois elle ne l’était pas, mais ses réponses ont toujours ressenti sa propre vision, souvent paradoxale, du marché. En plus de cela, il s'est avéré que plus la confiance du réseau est élevée, plus le développement attendu est proche du bon moment et vice versa. Une faible confiance semblait dire "ce qui se passera dans 15 minutes, je ne sais pas, mais la tendance générale est à la hausse".

De cet endroit, j'ai réalisé qu'essayer de formaliser tout cela en signaux d'achat / vente, c'est comme marteler des ongles avec un microscope. Ce qu'il fallait, c'était une sorte d'outil pour visualiser les signaux du réseau neuronal - un affichage graphique du niveau de «confiance» sur chaque bougie. Une large gamme d'outils MQL5 a permis de mettre tout cela dans Expert pour MetaTrader5. "Expert" via l'API reçoit les réponses du réseau de neurones et n'est engagé que dans le rendu. Voici un exemple de son travail sur BTCUSD M1: La

image

zone colorée en haut est la prévision «vers le bas», la zone en dessous est la prévision «vers le haut», l'épaisseur est le degré de confiance.

À ce stade, la qualité de la prévision n'a pas d'importance, il est important que le réseau neuronal démontre une opinion assez adéquate sur la situation du marché. Vous pouvez toujours améliorer le réseau encore plus, l'essentiel est qu'il fonctionne!

En conséquence, il existe aujourd'hui Expert pour MetaTrader5 avec deux types de prévisions - à court terme et à long terme. Les statistiques s'accumulent progressivement, il y a des retours des commerçants. Le résultat obtenu inspire de nouveaux travaux, nous devons maintenant nous tourner vers les équipes chères "acheter / vendre". Cela peut être fait en augmentant considérablement la qualité des prévisions. Ensuite, je vois ce chemin de développement:

  1. Il faut préparer une douzaine de prévisions dans l'intervalle entre 15 et 60 minutes. Ceux. commencer à prédire «haut / bas» pour 20, 25, 30, 35 minutes et ainsi de suite jusqu'à 60. Chaque prévision, je me souviens, est construite à partir des réponses d'environ 20 modèles.
  2. Ayant un tel volume d'informations sur chaque bougie minute, il est possible et nécessaire de l'analyser avec un autre réseau de neurones. La connexion entre les prévisions à différents intervalles de temps peut être complètement non triviale, par conséquent, un réseau de neurones sera ici approprié.
  3. L'ensemble de données pour ce réseau de neurones ne sera pas aussi bruyant que celui de ses camarades plus jeunes, par conséquent, il doit être formé non pas à un banal «haut / bas», mais à prédire la force du mouvement d'un actif, et c'est une sortie directe pour «acheter / vendre».

C'est tout ce que je voulais vous dire aujourd'hui. Le travail continue, je pense qu'il y aura plus d'articles.

Au fait, cet expert pour MetaTrader5 est distribué gratuitement, si vous voulez voir le travail d'un réseau de neurones sur le marché réel, veuillez contacter.

All Articles