[APRENDRE] Faire de lA MACHINE LEARNING pour prédire les prix des actions/Forex/Crypto 

 

Bonjour,

En tant que Data Scientist, je suis très intéressé par le monde de l'IA (Intelligence Artificielle). Surtout aujourd'hui, dans ce monde où presque tout ce qui est connecté à Internet et aux ordinateurs est, pour ainsi dire, contrôlé par des programmes, ou des algorithmes. Bienvenue dans le monde de l'IA !

En fait, il existe de nombreuses ressources sur Internet sur des sujets comme celui-ci. Tapez simplement dans Google les mots-clés que vous souhaitez, puis vous aurez le choix entre de nombreux sites Web à étudier.

Cet article est divisé en 4 sections :

Partie #1 : Contexte et architecture du ML.

Partie #2 : Sortie - Processus - Entrée du ML

Partie #3 : Codage.

Partie #4 : Résultats.

Pour ceux d'entre vous qui veulent apprendre, veuillez lire de la partie #1 à la partie #4. Mais pour ceux dont le niveau de patience est «moins», et encore moins curieux des résultats, veuillez passer directement à la partie 4

Commençons.

 

Qu'est-ce que la "Machine Learning" ?

La "Machine Learning" (apprentissage automatique) est une technologie qui permet à un système informatique d'apprendre à partir de données existantes et d'effectuer des tâches spécifiques en se basant sur ces apprentissages. La ML est conçu pour être autonome et capable d'apprendre par lui-même sans nécessiter une direction explicite de l'utilisateur. Cette capacité d'apprentissage est analogue au fonctionnement du cerveau humain.

L'apprentissage automatique repose sur plusieurs disciplines, telles que les statistiques, les mathématiques, l'informatique et l'exploration de données, qui permettent aux machines d'apprendre en analysant les données sans qu'il soit nécessaire de les reprogrammer ou de leur donner des instructions spécifiques. Le fonctionnement réel d'une ML peut varier en fonction de l'approche utilisée, mais il suit généralement des principes et des méthodes d'apprentissage courants.

Les étapes fondamentales du fonctionnement de Machine Learning incluent :

  • Collecte de données : Rassembler les données nécessaires pour entraîner le modèle d'apprentissage automatique.
  • Exploration de données : Analyser et comprendre les données pour en extraire des informations utiles et identifier les tendances.
  • Sélection de modèles : Choisir le type de modèle d'apprentissage automatique qui convient le mieux à la tâche à accomplir.
  • Formation et test de modèles : Entraîner le modèle avec les données disponibles, puis le tester pour évaluer sa performance.
  • Évaluation des performances des résultats ML : Mesurer l'efficacité et la précision du modèle en fonction des résultats obtenus.

La Machine Learning est largement utilisé dans de nombreux domaines tels que la reconnaissance vocale, la détection de fraude, la recommandation de produits, la conduite autonome, etc. Il est devenu un outil essentiel pour exploiter efficacement les données et prendre des décisions basées sur des analyses approfondies.

L'apprentissage automatique, ou souvent abrégée en "ML", est une technologie capable d'étudier les données existantes et d'effectuer certaines tâches en fonction de ce qu'elle apprend. La technologie ML est une machine que nous pouvons développer pour pouvoir apprendre par elle-même sans direction de l'utilisateur. Tout comme le cerveau humain. Il a la capacité d'apprendre.

 

Et cette fois, je veux partager une expérience de mon projet de développement de Machine Learning. L'apprentissage automatique peut être appliqué dans de nombreuses disciplines. L'une des expériences sur lesquelles j'ai travaillé se situe dans le monde médical et financier. Comme la détection du Covid-19 et la détection des fraudes à la carte bancaire.Mais dans ce projet, je vous inviter à apprendre à développer la Machine Learning qui peut prédire les actions, et il est très possible qu'il puisse également être appliqué au Forex et à la crypto. Êtes-vous prêt?

 

Mais il convient de noter, ce n'est qu'à des fins d'études. Quant à postuler au monde du Real Trading, faites-le à vos risques et périls.

 

OK... ça commence à être sérieux maintenant. En fait, ce projet est un défi ou un défi pour moi-même. Depuis que la pandémie de Covid-19 a frappé le monde et que nous avons tous connu des périodes de confinement, je vois le côté positif de profiter de ces moments pour apprendre le trading. Et j'ai eu le temps de faire un robot de trading ou une 'Expert Advisor' (EA).

 

Objectif

À quoi sert cette Machine Learning ? Pour être honnête, je rêve que cette Machine Learning puisse devenir un assistant et inspirer les Traders novices, comme moi… ou ceux d'entre vous qui pourraient en avoir besoin. Et il est aussi possible d'inspirer des traders en herbe partout sur la planète... :). C'est la vision et la mission de ce projet.

Personnellement, j'ai l'habitude d'apprendre à trader en utilisant l'application Metatrader, en particulier Metatrader4. Pourquoi? La raison en est, KISS ...... Keep It Simple, Stupid ..... Eh bien, je préfère simple et simple. De plus, Metatrader est également disponible pour les multiplate-forme. De plus, metatrader4 avec le langage de programmation MQL4 est également largement disponible sur Internet. La communauté est aussi beaucoup.

 

Problème

Les problèmes auxquels je suis souvent confronté et (probablement) rencontrés par la plupart des traders débutants sont les suivants :

  1. Quand dois-je prendre une position d'ACHAT ou de VENTE ?
  2. À quel prix dois-je ACHETER ou VENDRE ?
  3. Quand dois-je ENTRER ou SORTIR du marché ?

 

Solution
La solution... beaucoup de choix. Comme le terme "Beaucoup de routes mènent à Rome", signifient de nombreuses solutions ou façons d'atteindre nos cibles ou objectifs. Tant que nous nous concentrons sur l'un des objectifs que nous nous sommes fixés. Et cohérent.

Certaines des solutions que j'ai trouvées sur Internet, de la plus simple à la plus difficile, incluent :

  1. Achetez un robot de trading, tel qu'un EA. Les prix varient. De gratuit à des millions de roupies ou des milliers de dollars.
  2. Rejoignez un programme de copytrading. Tout ce que vous avez à faire est de choisir des courtiers expérimentés et des commerçants experts, puis de les copier.
  3. Recherchez les signaux de trading. De nombreux sites Web ou applications fournissent des signaux de trading. Tout ce que vous avez à faire est de l'installer, puis d'attendre la notification à chaque fois qu'il y a un signal, puis de trader.
  4. Suivez un cours ou un cours de trading.
  5. Apprenez à trader par vous-même. Soyons plus indépendants.

Chacune des solutions ci-dessus a ses avantages/inconvénients ou avantages et inconvénients. J'ai fait le numéro 1, 2 et 3. Alors que le n°. 4, j'ai suivi des cours en ligne sur Youtube, mais au final je n'étais pas satisfait. Parce que je suis CONFIANT que je peux avoir des capacités et des compétences, et je crois que je peux le faire MIEUX. Par conséquent, j'ai décidé de prendre la solution n° 5. Une autre raison pour moi, solution n° 5 C'est la bonne solution et en accord avec ma vision et ma mission. De plus, nous pouvons également utiliser cette compétence de trading n'importe où, n'importe quand, sans limite. C'est vrai ou vrai ?

 

En termes simples, l'architecture du système ou le projet qui sera construite peut être vu dans le diagramme ci-dessous.

  MT4 <-----JSON----->ML

C'est tout... simple, non ?Pourquoi l'architecture est-elle comme ça ? Pas parce que j'ai rencontré des problèmes techniques. Le Metatrader4 (MT4) utilise le langage de programmation MQL4, similaire au langage C/C++, mais la bibliothèque n'est pas suffisante pour le calcul ou la construction de Machine Learning. MQL4 est juste suffisant pour faire une EA (Expert Advisor) ou Indicator. Pendant ce temps, d'autre part, nous avons le langage de programmation Python avec une myriade de bibliothèques qui peuvent être utilisées pour construire l'apprentissage automatique. Eh bien, parce que le MT4 et Python n'ont pas de bibliothèque permettant de communiquer et d'échanger des données, alors pour faire le pont entre MT4 et ML Python, JSON est utilisé pour la transmission de données. Le MT4 enverra des données historiques sous la forme de prix OHLC (Open, High, Low, Close) à partir du nombre de bougies/barres que nous spécifions. Où nous utiliserons ces données OHLC comme données d'entrée pour l'apprentissage automatique. Et ensuite, la sortie de prédiction de prix de Machine Learning sera renvoyée à MT4 en utilisant le format JSON.

 

Dans cet article, je souhaite partager les enjeux techniques d'un projet de Machine Learning. Où allons-nous commencer? Voulez-vous d'avant en arrière (en avant) ou d'arrière en avant (en arrière) ? Pour faciliter la compréhension, je vais expliquer en utilisant la méthode inverse, de la sortie - processus - entré. 

 

La Sortie

Pair                :  EURUSD  - TF :  30
Bullish / Bearish   :  Bearish
Prev Close          :  1.10053  at :  2023-04-28 10:00:00
----------------------------------------------------------------------------------
   Model         NextClose  Closest    Action   MinPred   MaxPred    Accuracy(%)
----------------------------------------------------------------------------------
1. RF            1.10457    1.10457     BUY    1.10457    1.10552    99.96
2. LSTM          1.10254    1.10159     BUY    1.10159    1.10254    99.94
3. Fine-LSTM     1.10266    1.10187     BUY    1.10187    1.10266    99.94
4. SARIMAX       1.09671    1.09763     SELL   1.09561    1.64402    99.48
5. Hybrid        1.09904    1.09922     SELL   1.09830    1.42732    NaN
6. Future-LSTM   1.10420    1.10074     BUY    1.10074    1.10420    NaN
-------------------------------------------------------------------------------------------
***The Closest Pred       : 1.10074 >>>  BUY
   The Nearest Next Close : 1.09904 >>>  STRONG SELL
   The Lowest Pred        : 1.09561
   The Highest Pred       : 1.64402
   The highest Accuracy   : 99.96 %

Predicting is DONE! -- Pair:  EURUSD  at TF:  30

C'est un exemple de sortie de la Machine Learning. Il y a des informations sur la paire utilisée, EURUSD dans la période ou TimeFrame (TF) 30 Minutes (M30), puis il y a des informations sur les conditions du marché, Bearish/Bullish, Close Price sur le TF précédent, à savoir 'Prev_Close', complet avec le format datetime. Ensuite, le tableau donne les résultats de prédiction de 6 modèles où chaque modèle affiche les résultats des prédictions pour 'NextClose', 'Closest' (le prix le plus proche de Prev_Close), Action, Minimum Prediction, Max_Prediction, Score et Accuracy (%). De plus, sous le tableau se trouve le résumé des résultats des 6 modèles. Le 'Closest' est le nombre le plus proche d'un ensemble de résultats de prédiction pour chaque modèle au nombre Prev_Close. Pendant ce temps, 'Nearest Next Close' est le nombre le plus proche de la prédiction NextClose.

Et si nous ajoutions un affichage graphique de Metatrader comme la figure 1 ci-dessous ?

 

 

La ligne rouge (point) est le résultat de la prédiction du mouvement des prix Next N-bars de Machine Learning reçue par Metatrader.

Alors… et maintenant ? Avec les prédictions issues du Machine Learning et de la visualisation, oserez-vous prendre des positions commerciales ? Si vous n'osez pas, ce n'est pas grave… En effet, un facteur important dans le monde du trading est l'état d'esprit ou la mentalité.

Eh bien .... que se passe-t-il si vous obtenez des informations comme ci-dessus. Ces informations vous ont-elles vraiment aidé à prendre une décision ?

OK… c'était la sortie. Maintenant, je veux expliquer le processus.

 

Processus
Pour faciliter la compréhension, je fournirai une sorte de pseudocode côté serveur et côté client.

 

Côté Serveur:

1. Create Socket Server at [IP_Address] and [Port]

2. While True: a. Receive JSON_Data from MT4 (client)

3. Parsing JSON_Data

4. Create a new dataframe

5. Adding Features and Indicators into dataframe

6. Define Target

7. Splitting data into Data_Train, Data_Valid, Data_Test

8. Training Phase

   a. Train with Random Forest

   b. Train with LSTM

   c. Train with Finetuned-LSTM

   d. Train with SARIMAX

   e. Train with Hybrid (LSTM + SARIMAX)

9. Validation Phase

10. Testing Phase

11. Evaluation Phase

12. Predicting Phase

13. Future Prediction

14. Candle Pattern Detection

    a. Detecting Bearish candle

    b. Detecting Bullish candle

15. Analyzing Results

16. Send the results via JSON to MT4 (client)

 

Côté Client:

1. Connect to Server via socket at [IP_Address] and [Port]

2. Create JSON_Data

3. If Socket.Send and Object_Click = 'Connect & Train': Sending JSON_Data to Server

4. While Socket.Receive: Parsing JSON_Data

5. While Object_Click = 'Predict' Draw objects

6. While Object_Click = 'Place Order' Open Trade

7. While Object_Click = 'Re-Train' Sending JSON_Data to Server

8. Read JSON_Data: Open Trade Automatically (Optional)

 

Input - Données brutes pour l'apprentissage automatique
La section suivante que je couvrirai est l'input. Comme je l'ai déjà dit, les données saisies se présentent sous la forme de prix OHLC (Open, High, Low, Close) à partir d'un certain nombre de bougies / barres provenant de Metatrader (voir la figure 2 ci-dessous). Pour cela, nous devons créer un Expert Advisor (EA) utilisant le langage MQL4 et l'exécutant sur Metatrader. Le pseudocode peut être vu dans la section côté client. Ainsi, le côté client utilise le langage de programmation MQL4, tandis que le côté serveur utilise Python. Entre MQL4 et Python échangeant des informations ou des données via JSON. Metatrader fournit une entrée sous la forme de prix OHLC à traiter par Machine Learning et une sortie sous la forme de résultats de prédiction renvoyés à Metatrader.

 

 

Codage - [Apprendre] Programmation
Nous commençons par créer un Class Socket Server.

 

Ensuite, pour chaque modèle que nous développerons, nous créerons chacun une procédure ou une fonction ou un sous-programme. L'objectif est de faciliter le processus de débogage et le développement ultérieur. Ainsi, par exemple dans ce projet nous utiliserons 5 modèles, puis pour chaque modèle nous créerons une fonction. À titre d'exemple, voici la fonction 'training' utilisant le modèle Random Forest.

 

 

Donc, dans ce projet, nous allons créer plusieurs fonctions de modèle de régresseur. Pourquoi? Eh bien, pour connaître les performances ou les performances d'un modèle, nous avons bien sûr besoin de plusieurs modèles à titre de comparaison. Afin que nous puissions déterminer quel modèle a les performances et la précision de prédiction optimales. En ce qui concerne les autres modèles de régresseurs, tels que LSTM et SARIMAX, ainsi que Hybrid, veuillez développer le vôtre .... :D :D J'ai donné un exemple avec le modèle de régresseur Random Forest.

La fonction suivante qui peut être considérée comme une caractéristique importante de ce projet est le détecteur de chandelier baissier/haussier.

 

 

OK, cela faisait partie de Serveur Side. Nous apprenons maintenant à créer des programmes pour le côté client. Cette fois, nous utiliserons le langage MQL4 pour Metatrader. Et si nous installons Metatrader, nous disposons d'outils pour créer des programmes MQL4, à savoir MetaEditor.

 

 

Comme vous pouvez le voir dans le script côté client MQL4 ci-dessus, nous copions les données de prix OHLC (Open-High-Low-Close) et les emballons au format JSON, puis les envoyons au serveur via socket.

 

Résultats  
Dans cet article, je ne fournirai pas de résultats de backtesting, comme des EAs en général. Pourquoi ? Parce que une ML n'est pas une EA. Et une ML ne peut pas être backtesté. Mais la ML peut afficher les performances ou les performances à partir des résultats de la formation et des tests. Ainsi, ce ML peut être testé ou testé en avant, soit sur un compte de démonstration, soit sur un compte réel.

Juste une note, que les 'forwardtests' sont toujours en cours, il y a des baisses et des pertes visibles. Parce que la ML a subi plusieurs améliorations depuis l'essai.

 

Travaux future 

Les travaux futurs qui peuvent être développés dans ce projet comprennent :

  • Intégration de nouvelles. Ainsi, plus tard dans l'analyse de la prise de décision pour ACHETER/VENDRE, la Machine Learning lira les actualités d'Internet en utilisant les méthodes de grattage et de NLP.
  • Apprentissage par renforcement. Nous pouvons également implémenter l'apprentissage par renforcement tel que le DQN ou le DDQN Agent.
  • Créer une application serveur (basée sur le Web). Actuellement, la ML n'est accessible que via localhost et LAN. Il faut des étapes supplémentaires pour être accessible via Internet. Bien sûr, la sécurité est un aspect important à ce stade.
  • Créer des applications mobiles (clients). Avec l'application mobile, on espère que tous ceux qui utilisent cette application pourront faire des prédictions à tout moment, n'importe où. *A condition d'avoir un Smartphone et l'Internet.

 

Voila! C'est une brève description de l'apprentissage de la programmation en utilisant Python et MQL4 dans ce projet.

Je suis sûr que vous avez encore beaucoup de choses qui ne sont pas claires dans ce projet. Eh bien, c'est à cause de mes limites à fournir des détails. Mais s'il vous plaît laissez une trace ci-dessous dans la colonne des commentaires ou contactez-moi directement. On peut discuter au café. 

 

Colmar, le 31/07/2023