English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Apprenez à concevoir un système de trading basé sur l’ADX

Apprenez à concevoir un système de trading basé sur l’ADX

MetaTrader 5Trading | 12 septembre 2022, 09:26
294 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

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 :

  1. Définition de l’ADX
  2. Stratégie basée sur l’ADX
  3. Plan de la stratégie basée sur l’ADX
  4. Système de trading basé sur l’ADX
  5. 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 :

MT5 

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 :

+DM

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 :

-DM

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 :

Non +DM-DM

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 : 

 +DM-DM

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

aucun DM

  • 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

 +DM supérieur à -DM

+DM < -DM : seul -DM sera pris en compte

-DM supérieur à +DM

+DM = -DM : les deux seront ignorés

+DM est égal à -DM

2 - Calcul de la plage réelle (TR) :

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.
3 - Calcul de la somme des 14 périodes calculées (+DM, -DM, et TR)

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 :

+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

4 - Calcul des 14 périodes de +DI et -DI
+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

Exemple - DM

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

Exemple - TR

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)

Exemple - 14 DM-TR

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)

Diff et somme de DI14

7 - Calcul de DX :

DX = 100 * ((différence entre +DI et -DI) / (somme de +DI et -DI))


DX

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)


ADX

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 :

Insertion de l’ADX

Après avoir choisi l’indicateur "Average Directional Movement Index", la fenêtre suivante apparaît :

Fenêtre de l’ADX

Cette fenêtre affiche les paramètres de l’indicateur ADX :
  1. détermine la période
  2. détermine la couleur de la ligne de l’ADX
  3. détermine le type de la ligne de l’ADX
  4. détermine l'épaisseur de la ligne de l’ADX
  5. détermine la couleur de la ligne +DI
  6. détermine le type de la ligne +DI
  7. détermine l'épaisseur de la ligne +DI
  8. détermine la couleur de la ligne -DI
  9. détermine le type de la ligne -DI
  10. 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 :

indicateur ADX attaché

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

Formation de tendance haussière

L'image suivante est un exemple de marché en tendance haussière :

Exemple de 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é :

Formation de tendance baissière

L'image suivante est un exemple de tendance baissière du marché :

Exemple de tendance baissière

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

Forme latérale 1

Forme latérale 2

Forme latérale 3

Forme latérale 4

Voici un exemple sur le marché :

Exemple de mouvement latéral 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 :

Plan de la stratégie Mouvement de l’ADX

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

ADX - Plan du signal d’achat

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

ADX - Plan du signal de vente

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 :

Ouverture de MetaEditor 1

Vous pouvez également appuyer directement sur le bouton IDE :

Ouverture de MetaEditor 2

La fenêtre du MetaQuotes Langage Editor s’ouvrira :

Fenêtre de MetaEditor

Ouvrons ensuite un nouveau fichier pour créer notre système de trading en cliquant sur "Nouveau" :

Fenêtre MetaEditor 2

La fenêtre suivante est alors affichée :

MetaEditor - Nouveau fichier

Voici les types possibles d’un nouveau fichier :

  1. Expert Advisor (EA) : programme dans le terminal pour automatiser les processus de trading selon des conditions prédéterminées
  2. Indicateur personnalisé : programme pour nous aider à lire le graphique afin d'améliorer les décisions de trading
  3. 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 :

Navigator

Après avoir double-cliqué sur le fichier, ou l'avoir glissé-déposé sur le graphique, la fenêtre suivante s’affiche :

Fenêtre ADX Simple

Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, le fichier sera attaché au graphique :

ADX Simple attaché

Le résultat apparaîtra alors selon le système de trading :

ADX Simple

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 :

 Navigator 2

Après avoir double-cliqué sur le fichier, ou l'avoir glissé-déposé sur le graphique, la fenêtre suivante s’affiche :

ADX Simple - fenêtre 3 lignes

Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur OK, le programme sera attaché au graphique :

ADX Simple - 3 lignes attachées

Après cela, les valeurs seront affichées sur le graphique :

ADX Simple - 3 lignes

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 :

Navigation - ADX3

Après un double-clic, ou un glisser-déposer sur le graphique, la fenêtre suivante s’affiche :

Fenêtre de mouvement ADX 

Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l'EA sera attaché au graphique :

Mouvement ADX attaché

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 :

Mouvement ADX - haussier 


  • Lorsque l'ADX est en baisse, nous pouvons voir apparaître les valeurs sous forme de commentaires identiques à ceux de l'image suivante :

ADX movement2.png

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

Navigation - ADX4

Après un double-clic, ou un glisser-déposer sur le graphique, la fenêtre suivante s’affiche :

Fenêtre ADX - Tendance haussière

Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l’Expert Advisor sera attaché :

ADX - Tendance haussière 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.
L'image suivante est un exemple de cette stratégie :


ADX - Signal d'achat

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

Navigation - ADX 5

Après avoir double-cliqué, ou glissé-déposé le fichier sur le graphique, la fenêtre suivante s’affiche :

Fenêtre ADX - Tendance baissière 

Après avoir coché la case "Autoriser le Trading Algorithmique" et appuyé sur le bouton OK, l'Expert Advisor sera attaché au graphique :

ADX - Tendance baissière attaché

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 :

ADX - Signal de vente

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

Apprendre à concevoir un système de trading basé sur l’ATR Apprendre à concevoir un système de trading basé sur l’ATR
Dans cet article, nous allons découvrir un nouvel outil technique pouvant utilisé en trading, dans la continuité de la série dans laquelle nous apprenons à concevoir des systèmes de trading simples. Nous allons cette fois travailler avec un autre indicateur technique populaire : l’Average True Range (ATR).
Science des Données et Apprentissage Automatique (Partie 02) : Régression Logistique Science des Données et Apprentissage Automatique (Partie 02) : Régression Logistique
La classification des données est primordiale pour le trader algorithmique et pour le programmeur. Dans cet article, nous allons nous concentrer sur l'un des algorithmes logistiques de classification qui peut nous aider à identifier les Oui ou les Non, les Hauts et les Bas, les Achats et les Ventes.
Science des Données et Apprentissage Automatique (partie 03) : Matrices de Régression Science des Données et Apprentissage Automatique (partie 03) : Matrices de Régression
Cette fois-ci, nos modèles sont faits avec des matrices. Ceci permet une certaine flexibilité tout en nous permettant de faire des modèles puissants pouvant gérer non seulement cinq variables indépendantes mais aussi de nombreuses variables (tant que nous restons dans les limites de calcul d'un ordinateur). Cet article va être une lecture intéressante, c'est certain.
Science des données et Apprentissage Automatique (Partie 01) : Régression Linéaire Science des données et Apprentissage Automatique (Partie 01) : Régression Linéaire
Il est temps pour nous, en tant que traders, de nous former, ainsi que nos systèmes, à prendre des décisions en fonction de ce que disent les chiffres Pas en fonction de nos yeux et de ce que nos tripes nous font croire. C'est par là que le monde se dirige, alors avançons perpendiculairement à la direction de la vague.