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