Apprenez à concevoir un système de trading basé sur l’ADX
Introduction
Cet article présentera un nouvel outil de trading technique, qui s’avère être l'un des outils les plus utiles et les plus significatifs qui peuvent nous aider à mieux trader et à comprendre le mouvement du marché. Étant donné que l'une des caractéristiques les plus utiles des indicateurs techniques est qu'ils peuvent nous montrer ce que les prix ne peuvent pas montrer et que cela est basé sur le calcul de chaque indicateur, l'un de ces indicateurs utiles est l'indicateur d'indice directionnel moyen - Average Directional Movement Index (ADX). Nous allons voir cet indicateur en détail pour bien le comprendre et apprendre comment nous pouvons l'utiliser dans une stratégie simple. Apprendre quelque chose en profondeur permet d’obtenir plus d'informations et nous pourrons mieux l'utiliser.
Nous discuterons des sujets suivants :
- Définition de l’ADX
- Stratégie basée sur l’ADX
- Plan de la stratégie basée sur l’ADX
- Système de trading basé sur l’ADX
- Conclusion
À travers le sujet de définition de l’ADX, nous discuterons en détail de cet indicateur, de ce qu'il mesure, et comment nous pouvons le calculer manuellement pour pouvoir mieux le comprendre et pouvoir l'utiliser de manière rentable. Nous discuterons ensuite d’une stratégie simple qui peut être utilisée dans notre trading. Dans le sujet du plan de la stratégie basée sur l’ADX, nous apprendrons comment concevoir un plan pour nous aider à coder un système de trading. Nous apprendrons ensuite comment écrire un système de trading basé sur l’ADX en utilisant cette stratégie.
Nous utiliserons la plateforme de trading MetaTrader 5 et l'éditeur MetaQuotes Language est intégré à MetaTrader 5 (que vous pouvez télécharger via le lien suivant : https://www.metatrader5.com/fr/download).
Après avoir téléchargé et installé MetaTrader 5, vous aurez une plateforme de trading identique à celle-ci :
Je vous conseille d'appliquer tout ce qui est dit dans cet article par vous-même. Vous développerez ainsi plus rapidement vos compétences et cela vous donnera une compréhension approfondie du sujet. La pratique est une clé très importante pour tout développement. Il vaudra donc mieux essayer d'appliquer chaque concept et de le tester par vous-même, car nous apprendrons à concevoir un système de trading à l'aide d'un outil technique, et car nous le ferons en MQL5 en écrivant du code pour créer un Expert Advisor ou un programme. Il sera également essentiel d'avoir un compte de démo pour tester et appliquer ce que nous voyons. Si vous n’en avez pas, vous pouvez ouvrir un compte démo via MetaTrader 5 en allant dans le menu Fichier depuis le terminal MetaTrader 5 --> Ouvrir un compte --> vous pouvez alors entrer le nom de votre courtier pour ouvrir ce compte de démonstration via son service, ou choisir MetaQuotes --> Suivant --> Ouvrir un compte de démonstration pour échanger de l'argent virtuel sans risque --> Suivant --> entrez vos données et déterminez les exigences du compte, puis cochez J'accepte --> Suivant --> puis vous trouverez les informations d'identification de votre compte de démonstration --> Terminer.
Vous pouvez maintenant utiliser ce compte pour trader virtuellement en vous connectant via le menu Fichier --> Connexion au compte de trading --> entrez les informations d'identification de votre compte de démonstration et appuyez sur OK.
Avertissement : Toutes les informations de cet article sont données uniquement à des fins éducatives et ne sont pas préparées à des fins de trading ou de conseil. Ces informations ne garantissent aucun type de résultat. Si vous utilisez le contenu de cet article sur l'un de vos comptes de trading, vous le faites à vos propres risques et vous en serez le seul responsable.
Commençons maintenant à apprendre ce nouvel outil qui peut faire la différence dans nos résultats de trading pour être meilleurs.
Définition de l’ADX
Dans cette partie, nous parlerons en détail de l'un des indicateurs les plus populaires dans le monde du trading technique, ce qu'il mesure, et comment on peut le calculer pour pouvoir bien le comprendre. Cet indicateur est l'Indice Directionnel Moyen (ou ADX). Il a été développé par Welles Wilder et il mesure la tendance. Il confirme s'il y a une tendance ou non. Selon son calcul, il compare la fourchette de trading pour une période avec la fourchette de trading d’une période précédente.
Suite à cette comparaison, nous pouvons constater que nous avons :
- Une montée ou un déclin (mouvement directionnel positif ou mouvement directionnel négatif).
- Aucune montée et aucune baisse.
- Une montée et une baisse.
S'il y a un mouvement directionnel positif, cela signifie que le haut de la période a dépassé le haut de la période précédente. Son symbole est (+DM).
L'image suivante nous montre comment cela peut être représenté sur le graphique des prix :
Inversement, s'il y a un mouvement directionnel négatif, cela signifie que le bas de la période a dépassé le bas de la période précédente. Son symbole est (-DM).
L'image suivante nous montre comment cela peut être représenté sur le graphique des prix :
Si nous n'avons pas de mouvement directionnel positif ou négatif, cela signifie que le haut n'a pas dépassé le haut précédent et que le bas n'a pas dépassé le bas précédent.
Cela peut être représenté sur le graphique des prix comme suit :
Si nous avons à la fois un mouvement directionnel positif et négatif, cela signifie que le haut a dépassé le haut précédent et que le bas a dépassé le bas précédent.
Cela peut être représenté sur le graphique des prix comme suit :
Voyons comment nous pouvons le calculer pour avoir plus d'informations. Voici donc les étapes de calcul de l’ADX. Notez que toutes les valeurs doivent être absolues :
1 - Calcul de +DM et -DM :Dans cette étape, nous devons déterminer s'il y a un mouvement vers le haut ou vers le bas du mouvement actuel par rapport au précédent. Nous allons donc calculer 2 choses :
- (+DM) fait référence à un mouvement directionnel positif, s'il y a un mouvement vers le haut.
Il sera calculé par avec +DM = sommet actuel - sommet précédent
- (-DM) fait référence à un mouvement directionnel négatif, s'il y a un mouvement vers le bas.
Il sera calculé par avec -DM = bas actuel - bas précédent
Nous vérifierons ainsi chaque période calculée et s'il s'agit de +DM, -DM ou d’autre chose.
- Si nous avons +DM, alors :
+DM = n
-DM = 0
- Si nous avons -DM, alors :
-DM = n
+DM = 0
Dans certains cas, nous pouvons trouver d'autres scénarios où il n'y a pas de valeurs pour +DM et -DM. Nous pouvons aussi trouver des cas avec des valeurs pour les deux. Voici comment nous pouvons gérer cela :
- Si nous n'avons ni +DM ni -DM, alors :
+DM = 0
-DM = 0
- Si nous avons les deux, alors, nous comparerons +DM et -DM et prendrons en compte la plus grande valeur (ou ils seront ignorés si les valeurs sont égales) :
+DM > -DM : seul +DM sera pris en compte
2 - Calcul de la plage réelle (TR) :+DM < -DM : seul -DM sera pris en compte
+DM = -DM : les deux seront ignorés
Dans cette étape après avoir calculé les DM, nous calculerons le TR. Ce sera la plus grande valeur parmi les suivantes :
- La différence entre le plus haut actuel et le plus bas actuel.
- La différence entre le plus haut actuel et la clôture précédente.
- La différence entre le plus bas actuel et la clôture précédente.
Après avoir calculé les 14 premières périodes de +DM, -DM et de TR, nous utiliserons les formules suivantes pour calculer les valeurs suivant les 14ères périodes :
4 - Calcul des 14 périodes de +DI et -DI+DM 15 = (+DM précédent - (+DM précédent / 14)) + +DM actuel
-DM 15 = (-DM précédent - (-DM précédent / 14)) + -DM actuel
TR 15 = (TR précédent - (TR précédent / 14)) + TR actuel
+DI 14 = 100 * (+DM14 / TR14)
-DI 14 = 100 * (-DM14 / TR14)
5 - Calcul de la différence entre +DI et -DI
Diff DI 14 = (+DI 14) - (-DI 14)
6 - Calcul de la somme de +DI et -DI
Somme DI 14 = (+DI 14) + (-DI 14)
7 - Calcul de DX
DX = 100 * ((différence entre +DI et -DI) / (somme de +DI et -DI))8 - Calcul de l'ADX
ADX = moyenne sur 14 périodes de DX
Nous pouvons calculer l'ADX au travers des étapes ci-dessus. Voyons maintenant un exemple d’application de ces étapes à partir des données suivantes :
Jour | Plus Haut | Plus Bas | Clôture |
---|---|---|---|
1 | 110 | 90 | 100 |
2 | 140 | 120 | 130 |
3 | 160 | 120 | 140 |
4 | 150 | 110 | 130 |
5 | 140 | 100 | 130 |
6 | 150 | 130 | 140 |
7 | 170 | 150 | 160 |
8 | 180 | 160 | 170 |
9 | 170 | 150 | 155 |
10 | 170 | 130 | 140 |
11 | 180 | 155 | 160 |
12 | 190 | 175 | 180 |
13 | 220 | 190 | 190 |
14 | 230 | 200 | 200 |
15 | 215 | 205 | 210 |
16 | 200 | 190 | 200 |
17 | 195 | 180 | 190 |
18 | 195 | 180 | 185 |
19 | 210 | 185 | 195 |
20 | 220 | 190 | 200 |
21 | 233 | 195 | 208 |
22 | 246 | 200 | 216 |
23 | 258 | 205 | 223 |
24 | 271 | 210 | 231 |
25 | 283 | 215 | 238 |
26 | 296 | 220 | 246 |
27 | 308 | 225 | 253 |
28 | 321 | 230 | 261 |
29 | 333 | 235 | 268 |
30 | 346 | 240 | 276 |
Calculons maintenant l'ADX pour les données précédentes :
1 - Calcul de +DM et -DM :
+DM = plus haut actuel - plus haut précédent
-DM = plus bas actuel - plus bas précédent
2- Calcul du TR :
Ce sera la plus grande valeur parmi les suivantes :
- La différence entre le plus haut actuel et le plus bas actuel.
- La différence entre le plus haut actuel et la clôture précédente.
- La différence entre le plus bas actuel et la clôture précédente.
L'image suivante montre le TR calculé :
3 - Calcul de la somme de 14 périodes de +DM, -DM et TR :
+DM 14 = Somme +DM 1(de jour 2 à jour 15)
-DM 14 = Somme -DM 1(de jour 2 à jour 15)
TR 14 = Somme TR (de jour 2 à jour 15)
4 - calcul de +DI et -DI sur 14 périodes (le 1er calcul se fera à partir du 15ème jour car il nous faut 14 DM pour calculer 14 DI) :
+DI14 = 100 * (+DM14 / TR14)
-DI14 = 100 * (-DM14 / TR14)
5 - Calcul de la différence entre +DI et -DI
Diff DI 14 = (+DI 14) - (-DI 14)
6 - Calcul de la somme de +DI et -DI
Somme DI 14 = (+DI 14) + (-DI 14)
7 - Calcul de DX :
DX = 100 * ((différence entre +DI et -DI) / (somme de +DI et -DI))
8 - Calcul de l’ADX (le 1er calcul sera celui de 28 car nous avons besoin de plus de 14 jours pour calculer l’ADX) :
ADX = moyenne 14 période de DX --> moyenne DI (de jour 15 à jour 28)
Nous avons maintenant calculé l'indicateur ADX manuellement. La bonne nouvelle est que nous n'avons pas besoin de le faire car il est intégré à MetaTrader 5. Nous avons donc seulement appris à calculer pour approfondir notre compréhension de cet indicateur et de son fonctionnement. Si nous devons l'insérer dans le graphique, il nous suffit de le choisir parmi les indicateurs disponibles dans le terminal de trading, via le menu Insérer --> Indicateur --> Tendance --> Average Directional Movement Index :
Après avoir choisi l’indicateur "Average Directional Movement Index", la fenêtre suivante apparaît :
Cette fenêtre affiche les paramètres de l’indicateur ADX :
- détermine la période
- détermine la couleur de la ligne de l’ADX
- détermine le type de la ligne de l’ADX
- détermine l'épaisseur de la ligne de l’ADX
- détermine la couleur de la ligne +DI
- détermine le type de la ligne +DI
- détermine l'épaisseur de la ligne +DI
- détermine la couleur de la ligne -DI
- détermine le type de la ligne -DI
- détermine l'épaisseur de la ligne -DI
Après avoir déterminé les paramètres de l’ADX et appuyé sur OK, il sera attaché au graphique :
Stratégie basée sur l’ADX
Dans cette partie, nous allons voir des stratégies simples pouvant être utilisées avec l'indicateur ADX. J'aime mentionner ici que nous ne présentons que quelques stratégies simples pour cet indicateur. Il existe de nombreuses stratégies pouvant être utilisées avec l’ADX, des stratégies simples aux stratégies compliquées. Mais à travers cet article, nous ne mentionnons que des stratégies simples pour comprendre le concept derrière l'indicateur et apprendre à concevoir un système de trading basé sur le concept qui le sous-tend.
Selon le calcul de l'indicateur ADX, il montre s'il y a une tendance ou non, quel que soit son type (haussière, baissière ou latérale). Si la courbe de l’ADX monte, cela signifie qu'il y a une tendance, et vice versa. Si la courbe de l’ADX descend, cela signifie qu'il n'y a plus de tendance. Mais nous devons d'abord définir la notion de tendance :
Définition de la Tendance :
L'action des prix est très importante car elle nous montre le type de tendance. Nous savons qu’il existe 3 types de tendances : tendance haussière, tendance baissière et latérale.
Tendance haussière : C'est la direction du marché, ou la tendance,dans laquelle les prix créent des bas et des hauts plus élevés, les prix monter et les acheteurs contrôler le marché.
L'image suivante est une illustration de cette direction ou tendance du marché :
L'image suivante est un exemple de marché en tendance haussière :
Tendance baissière : C'est la direction, ou tendance du marché, dans laquelle les prix créer des hauts et des bas plus bas, les prix baisser et les vendeurs contrôler le marché.
L'image suivante est une illustration de cette direction ou tendance du marché :
L'image suivante est un exemple de tendance baissière du marché :
Mouvement latéral : C'est n'importe quelle direction du marché, sauf une tendance haussière ou une tendance baissière, où il n'y a pas de direction claire, et où il y a un équilibre entre les acheteurs et les vendeurs.
Voici quelques exemples de formation de cette direction de marché :
Voici un exemple sur le marché :
Après l'identification des tendances, nous allons voir des stratégies simples qui peuvent être utilisées selon le concept de l'ADX.
- 1ère stratégie - Système ADX simple - Mouvement de l’ADX :
La stratégie est basée sur le mouvement de la courbe de l’ADX,
valeur ADX actuelle > valeur ADX précédente = l’ADX augmente.
valeur ADX actuelle < valeur ADX précédente = l’ADX est en baisse.
- 2ème stratégie : Système ADX Simple - Tendance haussière :
Selon cette stratégie, pendant une tendance haussière,
Valeur ADX> 25 et valeur ADX actuelle> valeur ADX précédente ALORS achat lorsque +DI > -DI
- 3ème stratégie : Système ADX Simple - Tendance baissière :
Selon cette stratégie, pendant une tendance baissière,
Valeur ADX > 25 et valeur ADX actuelle > valeur ADX précédente ALORS vente lorsque +DI < -DI
Plan de la stratégie basée sur l’ADX
Dans cette partie, nous allons concevoir un plan pour chaque stratégie pour nous aider à créer notre système de trading. Ce plan organisera et définira ce que nous avons besoin que le programme fasse étape par étape.
- 1ère stratégie - Système ADX simple - Mouvement de l’ADX :
Selon cette stratégie, nous avons besoin que le programme vérifie à chaque tick la valeur de l’ADX actuelle et la précédente, puis décider si la valeur ADX actuelle est supérieure ou non à la valeur ADX précédente. Si l'ADX actuel est supérieur à la valeur précédente. alors nous avons besoin que le système affiche un commentaire sur le graphique avec "ADX en hausse", "La valeur ADX est (n)" sur une nouvelle ligne, et "La dernière valeur de l’ADX est (n)" sur une dernière ligne. Si la valeur actuelle de l’ADX est inférieure à l'ADX précédent, nous avons besoin que le système affiche un commentaire sur le graphique avec "ADX en baisse". Si l'ADX actuel est égal à la valeur précédente, le système ne doit rien faire.
L'image suivante correspond au plan de cette stratégie :
- 2ème stratégie - Système ADX Simple - Tendance haussière :
Selon cette stratégie, nous avons besoin que le système vérifie à chaque tick la valeur ADX actuelle, la valeur ADX précédente, la valeur +DI et la valeur -DI. Puis il doit décider si la valeur ADX actuelle est supérieure à 25 et à la valeur ADX précédente. Si ce n’est pas le cas, le système ne doit rien faire. Sinon, le système doit vérifier +DI et -DI. Si +DI est supérieur à -DI, le système affiche un signal d'achat, "La valeur de l’ADX est (n)", "La dernière valeur de l’ADX est (n)", "La valeur +DI est (n) et la valeur -DI est (n)". Si +DI n'est pas supérieur à -DI, le système ne doit rien faire.
L'image suivante correspond au plan de cette stratégie :
- 3ème stratégie - Système ADX Simple - Tendance baissière :
Selon cette stratégie, le système doit vérifier à chaque tick la valeur ADX actuelle, la valeur ADX précédente, la valeur +DI et la valeur -DI. Puis il doit décider si la valeur ADX actuelle est inférieure à 25 et à la valeur ADX précédente. Si ce n'est pas le cas, le système ne doit rien faire. Sinon, le système dit vérifier +DI et -DI. Si +DI est inférieur à -DI, le système affiche un signal de vente "La valeur de l’ADX est (n)", "La dernière valeur de l’ADX est (n)", "La valeur +DI est (n) et la valeur -DI est (n)". Si +DI n'est pas inférieur à -DI, le système ne doit rien faire.
L'image suivante correspond au plan de cette stratégie :
Système de trading basé sur l’ADX
Dans cette partie la plus intéressante, nous allons voir comment créer un système de trading pour ces stratégies afin de les utiliser dans le terminal de trading MetaTrader 5. Nous utiliserons l'éditeur de langage MetaQuotes intégré (MQL5) pour écrire le code de ce système de trading. Pour ouvrir cet éditeur de langage MetaQuotes depuis le terminal de trading MetaTrader 5, vous pouvez appuyer sur F4 ou aller dans le menu Outils de MetaTrader 5 --> puis sélectionner l’Éditeur de Langage MetaQuotes.
Voici comment procéder depuis le menu :
Vous pouvez également appuyer directement sur le bouton IDE :
La fenêtre du MetaQuotes Langage Editor s’ouvrira :
Ouvrons ensuite un nouveau fichier pour créer notre système de trading en cliquant sur "Nouveau" :
La fenêtre suivante est alors affichée :
Voici les types possibles d’un nouveau fichier :
- Expert Advisor (EA) : programme dans le terminal pour automatiser les processus de trading selon des conditions prédéterminées
- Indicateur personnalisé : programme pour nous aider à lire le graphique afin d'améliorer les décisions de trading
- Script : programme pour exécuter une tâche une seule fois
Nous allons choisir de créer un fichier Expert Advisor (EA) pour créer notre système de trading.
Nous allons tout d’abord créer un programme qui affichera un commentaire sur le graphique avec la valeur actuelle de l’ADX. Voici les étapes à suivre :
- Créez un tableau des prix de type ’double’ qui représentera les valeurs des prix avec une partie fractionnaire :
double PriceArray[];
- Triez ce tableau des prix créé à partir des données actuelles. Nous utiliserons la fonction "ArraySetAsSeries" qui renvoie true en cas de succès ou false sinon (valeur booléenne). Ses paramètres requis sont :
array[] par référence, et un flag booléen
ArraySetAsSeries(PriceArray,true);
- Créez l'indicateur ADX avec la fonction "iADX". Elle renvoie le handler de l'indicateur technique ADX et ses paramètres sont :
symbole sous forme de chaîne de caractères, période et période de l’ADX :
- _Symbol : pour le symbole courant
- _Period : pour la période actuelle
- 14 : pour la période de l’ADX
int ADXDef = iADX(_Symbol,_Period,14);
- Remplir les données avec les données de l’indicateur ADX créé en utilisant la fonction "CopyBuffer", qui renvoie le nombre de données copiées ou renvoie -1 en cas d'erreur. Ses paramètres sont :
handler de l'indicateur, buffer_<num> du tampon des données de l'indicateur, start_time (date et heure de début), stop_time (date et heure de fin) et buffer[] (tableau cible).
CopyBuffer(ADXDef,0,0,3,PriceArray);
- Obtenez la valeur de l'ADX, après avoir créé une variable pour "ADXValue" de type "double". Il faudra ensuite utiliser la fonction "NormalizeDouble", qui renvoie une valeur de type double avec une précision prédéfinie. Ses paramètres sont :
valeur sous forme de double (nombre à normaliser) et un entier correspondant au nombre de chiffres après la virgule
double ADXValue=NormalizeDouble(PriceArray[0],2);
- Affichez le commentaire avec la valeur actuelle de l’ADX en utilisant la fonction "commentaire". Ses paramètres sont :
Des valeurs et chaînes de caractères séparées par des virgules. Pour créer une nouvelle ligne, il faut utiliser le symbole de saut de ligne "\n"
Comment("ADX Value is ", ADXValue);
Voici le code complet de ce programme :
//+------------------------------------------------------------------+ //| Simple ADX System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating an array for prices double PriceArray[]; //sort price array from current data ArraySetAsSeries(PriceArray,true); //identify ADX int ADXDef = iADX(_Symbol,_Period,14); //Filling data according to created ADX CopyBuffer(ADXDef,0,0,3,PriceArray); //Getting value of current data double ADXValue=NormalizeDouble(PriceArray[0],2); //Comment with ADX value Comment("ADX Value is ", ADXValue); } //+------------------------------------------------------------------+
Après avoir écrit et compilé ce programme, le programme est visible dans la fenêtre du Navigateur du terminal de trading MetaTrader 5 :
Après avoir double-cliqué sur le fichier, ou l'avoir glissé-déposé sur le graphique, la fenêtre suivante s’affiche :
Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, le fichier sera attaché au graphique :
Le résultat apparaîtra alors selon le système de trading :
Nous avons créé ce qui aide à faire apparaître la valeur actuelle de l’ADX. Nous devons maintenant ajouter quelque chose pour nous aider à concevoir notre système de trading. Nous devons coder un programme qui fera apparaître d'autres valeurs de l'indicateur ADX (+DI et -DI) :
- Création d'un tableau des prix pour chaque valeur (ADX, +DI et -DI) et création des variables de type "double" :
- ADXArray : pour les valeurs ADX
- PDIArray : pour les valeurs +DI
- NDIArray : pour les valeurs -DI
double ADXArray[]; double PDIArray[]; double NDIArray[];
- Tri de chaque tableau des prix pour chaque valeur à partir des données actuelles à l'aide de la fonction "ArraySetAsSeries" :
ArraySetAsSeries(ADXArray,true); ArraySetAsSeries(PDIArray,true); ArraySetAsSeries(NDIArray,true);
- Identification de l'indicateur ADX à l'aide de la fonction "iADX" :
int ADXDef = iADX(_Symbol,_Period,14);
- Remplissage des données de l'ADX en utilisant la fonction "CopyBuffer" :
CopyBuffer(ADXDef,0,0,3,ADXArray); CopyBuffer(ADXDef,1,0,3,PDIArray); CopyBuffer(ADXDef,2,0,3,NDIArray);
- Obtention des valeurs des données actuelles, après avoir créé des variables de type "double" pour chaque valeur, nous utiliserons ensuite la fonction "NormalizeDouble" :
double ADXValue=NormalizeDouble(ADXArray[0],2); double PDIValue=NormalizeDouble(PDIArray[0],2); double NDIValue=NormalizeDouble(NDIArray[0],2);
- Affichage des commentaires avec chaque valeur dans une nouvelle ligne en utilisant la fonction "comment" :
Comment("ADX Value is ", ADXValue,"\n""+DI Value is ", PDIValue,"\n""-DI Value is ", NDIValue);
Voici le code complet de cet Expert Advisor :
//+------------------------------------------------------------------+ //| Simple ADX System - 3 lines.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating an array for prices double ADXArray[]; double PDIArray[]; double NDIArray[]; //sort price array from current data ArraySetAsSeries(ADXArray,true); ArraySetAsSeries(PDIArray,true); ArraySetAsSeries(NDIArray,true); //identify ADX int ADXDef = iADX(_Symbol,_Period,14); //Filling data according to created ADX CopyBuffer(ADXDef,0,0,3,ADXArray); CopyBuffer(ADXDef,1,0,3,PDIArray); CopyBuffer(ADXDef,2,0,3,NDIArray); //Getting value of current data double ADXValue=NormalizeDouble(ADXArray[0],2); double PDIValue=NormalizeDouble(PDIArray[0],2); double NDIValue=NormalizeDouble(NDIArray[0],2); //Comment with ADX value Comment("ADX Value is ", ADXValue,"\n""+DI Value is ", PDIValue,"\n""-DI Value is ", NDIValue); } //+------------------------------------------------------------------+
Après avoir écrit ce programme, le fichier sera visible dans la fenêtre du Navigateur :
Après avoir double-cliqué sur le fichier, ou l'avoir glissé-déposé sur le graphique, la fenêtre suivante s’affiche :
Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur OK, le programme sera attaché au graphique :
Après cela, les valeurs seront affichées sur le graphique :
Nous allons maintenant créer notre système de trading pour nos stratégies (mouvement ADX, tendance haussière et tendance baissière).
- 1ère stratégie - Système ADX simple - Mouvement de l’ADX :
Valeur ADX actuelle > valeur ADX précédente = l’ADX augmente
Valeur ADX actuelle < valeur ADX précédente = l'ADX est en baisse
Il faut ensuite écrire le code du programme ou de l’Expert Advisor :
- Création d'un tableau des prix pour les valeurs ADX (actuelles et précédentes) :
- ADXArray0 : pour la valeur ADX actuelle.
- ADXArray1 : pour la valeur ADX précédente.
double ADXArray0[]; double ADXArray1[];
- Tri du tableau des prix :
ArraySetAsSeries(ADXArray0,true); ArraySetAsSeries(ADXArray1,true);
- Identification de l'ADX :
int ADXDef = iADX(_Symbol,_Period,14);
- Remplissage des tableaux avec les valeurs de l'ADX :
CopyBuffer(ADXDef,0,0,3,ADXArray0); CopyBuffer(ADXDef,0,0,2,ADXArray1);
- Obtention des valeurs après avoir créé les variables :
double ADXValue=NormalizeDouble(ADXArray0[0],2); double ADXValuelast=NormalizeDouble(ADXArray1[1],2);
- Définition des conditions du Mouvement ADX en fonction de la valeur de l’ADX :
if (ADXValue>ADXValuelast) { Comment("ADX is rising","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", ADXValuelast); } if (ADXValue<ADXValuelast) { Comment("ADX is falling","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", ADXValuelast); }
Voici le code complet de cette stratégie :
//+------------------------------------------------------------------+ //| Simple ADX System - ADX Movement.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating an array for prices double ADXArray0[]; double ADXArray1[]; //sort price array from current data ArraySetAsSeries(ADXArray0,true); ArraySetAsSeries(ADXArray1,true); //identify ADX int ADXDef = iADX(_Symbol,_Period,14); //Filling data according to created ADX CopyBuffer(ADXDef,0,0,3,ADXArray0); CopyBuffer(ADXDef,0,0,2,ADXArray1); //Getting value of current data double ADXValue=NormalizeDouble(ADXArray0[0],2); double ADXValuelast=NormalizeDouble(ADXArray1[1],2); //ADX movement signal if (ADXValue>ADXValuelast) { Comment("ADX is rising","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", ADXValuelast); } if (ADXValue<ADXValuelast) { Comment("ADX is falling","\n""ADX Value is ", ADXValue,"\n""ADX Value last is ", ADXValuelast); } } //+------------------------------------------------------------------+
Après avoir créé cet Expert Advisor, nous pouvons le trouver dans la fenêtre du Navigateur :
Après un double-clic, ou un glisser-déposer sur le graphique, la fenêtre suivante s’affiche :
Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l'EA sera attaché au graphique :
Après cela, l’EA fonctionne selon ces conditions. Voici des exemples de résultats des tests :
- Lorsque l'ADX augmente, nous pouvons voir apparaître les valeurs sous forme de commentaires identiques à ceux de l'image suivante :
- Lorsque l'ADX est en baisse, nous pouvons voir apparaître les valeurs sous forme de commentaires identiques à ceux de l'image suivante :
- 2ème stratégie - Système ADX Simple - Tendance haussière :
Valeur ADX> 25 et valeur ADX actuelle> valeur ADX précédente ALORS achat lorsque +DI > -DI
Voici comment créer un Expert Advisor pour exécuter cette stratégie :
- Création d’une variable vide et de type "string" pour le "signal" car elle sera calculée par la suite :
string signal="";
- Création des tableaux pour la valeur ADX actuelle, la valeur ADX précédente, la valeur +DI et la valeur -DI :
- ADXArray0 : pour la valeur ADX actuelle
- ADXArray1 : pour la valeur ADX précédente
- PDIArray : pour les valeurs +DI
- NDIArray : pour les valeurs -DI
double ADXArray0[]; double ADXArray1[]; double PDIArray[]; double NDIArray[];
- Tri du tableau des prix :
ArraySetAsSeries(ADXArray0,true); ArraySetAsSeries(ADXArray1,true); ArraySetAsSeries(PDIArray,true); ArraySetAsSeries(NDIArray,true);
- Identification de l'indicateur ADX :
int ADXDef = iADX(_Symbol,_Period,14);
- Remplissage des données depuis l'ADX créé :
CopyBuffer(ADXDef,0,0,3,ADXArray0); CopyBuffer(ADXDef,0,0,2,ADXArray1); CopyBuffer(ADXDef,1,0,3,PDIArray); CopyBuffer(ADXDef,2,0,3,NDIArray);
- Obtention des valeurs des données actuelles :
double ADXValue=NormalizeDouble(ADXArray0[0],2); double ADXValueLast=NormalizeDouble(ADXArray1[1],2); double PDIValue=NormalizeDouble(PDIArray[0],2); double NDIValue=NormalizeDouble(NDIArray[0],2);
- Conditions de mise en place de la stratégie en tendance haussière :
if (ADXValue>25&&ADXValue>ADXValueLast) if(PDIValue>NDIValue) { signal = "BUY"; }
- Commentaire avec le signal d'achat et les valeurs de chacun dans une nouvelle ligne :
Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue, "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue, "\n""-DI Value is ", NDIValue);
Voici le code complet de cette stratégie :
//+------------------------------------------------------------------+ //| Simple ADX System - Uptrend - Buy Signal.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { // creating a variable for signal string signal=""; //creating an array for prices double ADXArray0[]; double ADXArray1[]; double PDIArray[]; double NDIArray[]; //identify ADX, positive DI, negative DI int ADXDef = iADX(_Symbol,_Period,14); //sort price array from current data ArraySetAsSeries(ADXArray0,true); ArraySetAsSeries(ADXArray1,true); ArraySetAsSeries(PDIArray,true); ArraySetAsSeries(NDIArray,true); //Filling data according to created ADX CopyBuffer(ADXDef,0,0,3,ADXArray0); CopyBuffer(ADXDef,0,0,2,ADXArray1); CopyBuffer(ADXDef,1,0,3,PDIArray); CopyBuffer(ADXDef,2,0,3,NDIArray); //Getting value of current data double ADXValue=NormalizeDouble(ADXArray0[0],2); double ADXValueLast=NormalizeDouble(ADXArray1[1],2); double PDIValue=NormalizeDouble(PDIArray[0],2); double NDIValue=NormalizeDouble(NDIArray[0],2); //Comment with Buy signal according to Buy Strategy if (ADXValue>25&&ADXValue>ADXValueLast) if(PDIValue>NDIValue) { signal = "BUY"; } Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue, "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue, "\n""-DI Value is ", NDIValue); } //+------------------------------------------------------------------+
Après cela, l’Expert Advisor est visible dans la fenêtre du Navigateur :
Après un double-clic, ou un glisser-déposer sur le graphique, la fenêtre suivante s’affiche :
Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l’Expert Advisor sera attaché :
Après cela, les signaux apparaitront selon la stratégie :
- Pour un signal d'achat :
- Nouvelle ligne avec la valeur ADX actuelle.
- Nouvelle ligne avec la valeur ADX précédente.
- Nouvelle ligne avec la valeur +DI.
- Nouvelle ligne avec la valeur -DI.
- 3ème stratégie - Système ADX Simple - Tendance baissière :
Valeur ADX > 25 et valeur ADX actuelle > valeur ADX précédente ALORS vente lorsque +DI < -DI
Voici comment créer un Expert Advisor qui exécutera cette stratégie :
//+------------------------------------------------------------------+ //| Simple ADX System - Downtrend - Sell Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { // creating a variable for signal string signal=""; //creating an array for prices double ADXArray0[]; double ADXArray1[]; double PDIArray[]; double NDIArray[]; //identify ADX, positive DI, negative DI int ADXDef = iADX(_Symbol,_Period,14); //sort price array from current data ArraySetAsSeries(ADXArray0,true); ArraySetAsSeries(ADXArray1,true); ArraySetAsSeries(PDIArray,true); ArraySetAsSeries(NDIArray,true); //Filling data according to created ADX CopyBuffer(ADXDef,0,0,3,ADXArray0); CopyBuffer(ADXDef,0,0,2,ADXArray1); CopyBuffer(ADXDef,1,0,3,PDIArray); CopyBuffer(ADXDef,2,0,3,NDIArray); //Getting value of current data double ADXValue=NormalizeDouble(ADXArray0[0],2); double ADXValueLast=NormalizeDouble(ADXArray1[1],2); double PDIValue=NormalizeDouble(PDIArray[0],2); double NDIValue=NormalizeDouble(NDIArray[0],2); //Comment with Buy signal according to Buy Strategy if (ADXValue>25&&ADXValue>ADXValueLast) if(PDIValue<NDIValue) { signal = "SELL"; } Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue, "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue, "\n""-DI Value is ", NDIValue); } //+------------------------------------------------------------------+
Ce sont les mêmes étapes de la stratégie de tendance haussière avec les différences suivantes :
- Conditions de la stratégie en tendance baissière :
if (ADXValue>25&&ADXValue>ADXValueLast) if(PDIValue<NDIValue) { signal = "SELL"; }
- Commentaire du signal :
Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue, "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue, "\n""-DI Value is ", NDIValue);
Après avoir écrit le code de cette stratégie, on retrouve la fiche de l'Expert Advisor dans la fenêtre du Navigateur :
Après avoir double-cliqué, ou glissé-déposé le fichier sur le graphique, la fenêtre suivante s’affiche :
Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l'Expert Advisor sera attaché au graphique :
Ensuite, les signaux apparaîtront selon la stratégie en tendance baissière :
- Signal de vente.
- Nouvelle ligne avec la valeur ADX actuelle.
- Nouvelle ligne avec la valeur ADX précédente.
- Nouvelle ligne avec la valeur +DI.
- Nouvelle ligne avec la valeur -DI.
L'image suivante est un exemple de signal généré selon cette stratégie :
Conclusion
Vous connaissez maintenant en détail l'un des indicateurs les plus populaires et les plus utiles. Et vous savez également comment concevoir un système de trading l'utilisant. Nous connaissons des stratégies simples basées sur l'indicateur ADX, en tendance haussière et en tendance baissière. Nous avons également conçu un plan pour ces stratégies pour nous aider à concevoir le système de trading étape par étape pour savoir ce que doit faire exactement le programme. Nous savons aussi comment concevoir un système de trading pour qu'il fonctionne automatiquement sur la base de ces stratégies ADX et comment écrire le code de ces stratégies de trading en MQL5 (MetaQuotes Language).
De nombreuses stratégies simples ou compliquées peuvent utiliser l'indicateur ADX pour le trading. Nous n'avons mentionné ici que quelques stratégies simples pour apprendre le concept de base de l'indicateur. L'objectif principal de l’article est d'apprendre des stratégies de trading basées sur une approche technique et comment concevoir un système de trading en MQL5 à utiliser dans la plateforme de trading MetaTrader 5.
Ce que je dois également mentionner ici, c'est que nous avons beaucoup d'outils et de stratégies utiles qui peuvent être utilisés pour notre trading. Ces outils peuvent être utilisés individuellement ou être combinés pour obtenir de meilleurs résultats. C’est d’ailleurs l'une des caractéristiques les plus utiles de l'analyse technique car elle dispose de nombreux outils basés sur différents concepts qui peuvent améliorer nos décisions de trading et donner de meilleurs résultats de trading. Je recommande de lire mes articles précédents sur d'autres indicateurs populaires qui peuvent être utilisés par certaines stratégies simples et comment concevoir un système de trading basé sur ces stratégies en MQL5 à utiliser dans MetaTrader 5. Notre mission est d'apprendre ces concepts et ces outils et de voir ce qui convient à notre style et à notre plan de trading. Car vous pouvez trouver de nombreuses stratégies utiles pour quelqu'un mais pas pour vous. Chacun doit avoir un plan de trading basé sur sa stratégie de trading. Nous pouvons le savoir en testant chaque nouvelle stratégie ou chaque nouvel outil pour confirmer s'il sera utile et rentable ou non avant de les utiliser sur des comptes réels.
La programmation peut être très utile à ce stade pour de nombreuses raisons : elle nous aide à le faire facilement, en douceur et avec précision. Une fois que nous avons trouvé une stratégie rentable, nous pouvons concevoir un système de trading pour permettre à l'ordinateur de fonctionner automatiquement selon les conditions du programme conçu. Cela nous évitera également les émotions néfastes qui sont toujours impliquées dans notre processus de trading. Ainsi, la programmation nous aide à trader avec discipline, ce qui est l'une des clés les plus importantes pour réussir dans le trading. Il est donc bon d'apprendre la programmation en MQL5 car cela peut être utile pour atteindre ces objectifs.
J'espère que vous avez trouvé cet article utile, qu’il vous a ouvert les yeux sur de nouvelles idées et vous a donné un aperçu du sujet de l'article, ou de tout autre sujet connexe pour vous aider à améliorer vos résultats de trading. Car l'objectif principal de notre trading est d'obtenir de bons résultats et d'atteindre la cohérence des bénéfices. J'espère que cet article contribuera à atteindre cet objectif précieux.
Traduit de l’anglais par MetaQuotes Ltd.
Article original : https://www.mql5.com/en/articles/10715
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation