English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
preview
Apprenez à concevoir un système de trading basé sur l'Ecart-Type (Standard Deviation)

Apprenez à concevoir un système de trading basé sur l'Ecart-Type (Standard Deviation)

MetaTrader 5Trading | 20 avril 2023, 09:45
1 560 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Bienvenue dans ce nouvel article de notre série dans laquelle nous allons apprendre comment créer un système de trading à partir des indicateurs techniques les plus populaires. Dans ce nouvel article, nous découvrirons en détail un nouvel outil qui peut être utilisé pour améliorer notre trading. Nous apprendrons à créer un système de trading basé sur le concept de base qui le sous-tend. Ce nouvel indicateur est l'Ecart-Type (Standard Deviation). Nous couvrirons cet indicateur en détail au travers des rubriques suivantes :

  1. Définition de l'Ecart-Type (Standard Deviation)
  2. Stratégie basée sur l'Ecart-Type
  3. Plan de la stratégique basée sur l'Ecart-Type
  4. Système de trading basé sur l'Ecart-Type
  5. Conclusion

Dans le cadre de sa définition, nous verrons plus en détail ce qu'est l'Ecart-Type, ce qu'il mesure et comment le calculer manuellement afin d'apprendre le concept de base qui le sous-tend. Nous l'appliquerons ensuite à un exemple pour calculer la valeur de l'écart-type. Nous passerons ensuite au sujet suivant : une stratégie basée sur l'Ecart-Type, pour apprendre comment l’utiliser. Puis nous passerons au plan de la stratégie basée sur l'Ecart-Type pour nous aider à créer un système de trading pour chaque stratégie. Ce schéma directeur sera un plan étape par étape permettant d'organiser les idées afin de créer ce système de trading en douceur. Ensuite, nous passerons au sujet le plus intéressant de cet article : le système de trading basé sur l'Ecart-Type, et nous créerons un système de trading pour chaque stratégie mentionnée, à utiliser dans MetaTrader 5 pour générer des signaux automatiquement.

Nous utiliserons MetaTrader 5 et MetaEditor pour écrire le code MQL5 (MetaQuotes Language) de notre système de trading. Si vous ne savez pas comment télécharger et utiliser MetaEditor, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor d'un article précédent.

Je vous conseille d'appliquer ce que vous apprenez par vous-même pour approfondir votre compréhension et obtenir plus d'informations, quelque soit le sujet, afin de tirer le meilleur parti de l'information contenue dans l'article. Vous devez également tester toute stratégie par vous-même avant de l'utiliser sur votre compte réel pour vous assurer qu'elle vous sera utile, car il n'existe rien qui convienne à tout le monde.

Avertissement : Toutes les informations données dans cet article sont fournies "en l'état", uniquement à des fins d'information et ne sont aucunement donné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 à en apprendre plus sur notre nouvel outil.


Définition de l'Ecart-Type (Standard Deviation)

Dans cette rubrique, nous allons apprendre ce qu'est l'indicateur de l'Ecart-Type (Standard Deviation) de manière plus détaillée en le définissant, en apprenant ce qu'il mesure et comment le calculer manuellement. Nous appliquerons ensuite ce calcul sur un exemple.

L'Ecart-Type (’Standard Deviation’ en anglais) est un terme statistique mesurant la dispersion autour de la moyenne. Mais qu'est-ce que la dispersion ? Il s'agit de la différence entre une valeur réelle et la moyenne. Plus la dispersion est élevée, plus l'écart-type est important. A l’inverse, plus la dispersion est faible, plus l'écart-type est faible. L'Ecart-Type mesure la volatilité.

Nous devons maintenant apprendre à le calculer. Nous pouvons le faire facilement en suivant les 5 étapes suivantes :

1- Calcul de la moyenne de la période souhaitée.

2- Calcul de l'écart, en soustrayant chaque cours de clôture de sa moyenne.

3- Mise au carré de chaque écart calculé.

4- Somme des écarts au carré, puis division par le nombre d'observations.

5- Calcul de l'Ecart-Type, qui est égal à la racine carrée du résultat de l'étape précédente.

L'exemple suivant applique ce calcul pour faciliter notre compréhension. Considérons les données suivantes pour un instrument donné.

# Prix de clôture
1 1,05535
2 1,05829
3 1,0518
4 1,04411
5 1,04827
6 1,04261
7 1,04221
8 1,02656
9 1,01810
10 1,01587
11 1,01831

1ère étape : calcul de la moyenne mobile sur 10 périodes. Nous considérons que toutes les moyennes mobiles jusqu'à la dixième constituent la même moyenne mobile. Voici le résultat de ce calcul :

Étape 1

2ème étape : calcul de l'écart. Le résultat suivant est celui obtenu après calcul :

Étape 2

3ème étape : calcul de l'Ecart au carré.

Troisième étape

4ème étape : calcul de la moyenne sur 10 périodes de l'écart au carré.

Étape 4

5ème étape : calcul de l'Ecart-Type = Racine carrée du résultat de l'étape 4.

Étape 5

Avec les étapes précédentes, nous avons calculé la valeur de l'Ecart-Type. Aujourd'hui, nous n'avons plus besoin de le calculer manuellement puisqu'il s'agit d'un indicateur intégré à la plateforme de trading MetaTrader 5. Il suffit de le sélectionner parmi les indicateurs disponibles sur la plateforme de trading. Voici comment faire :

Dans la plateforme de trading MetaTrader 5, cliquer sur le menu Insérer --> Indicateurs --> Tendance --> Ecart-type.

Insertion de l'Ecart-Type

La fenêtre suivante des paramètres de l'indicateur est alors affichée :

Paramètres Ecart Type

1- Détermine la période que nous allons utiliser.

2- Détermine le décalage horizontal de la ligne de l'indicateur si nous voulons le faire.

3- Sélection du type de la moyenne mobile.

4- Sélection du type de prix à utiliser dans le calcul.

5- Détermine la couleur de la ligne de l'indicateur.

6- Détermine le style de la ligne.

7- Détermine l'épaisseur de la ligne.

Après avoir défini les paramètres souhaités, l'indicateur est inséré sur le graphique :

Indicateur Ecart-Type attaché

Comme nous pouvons le voir dans l'image précédente, la déviation standard est insérée dans la fenêtre inférieure sous la forme d'une ligne d'oscillation.

Dans cette rubrique, nous approfondirons l'indicateur de l'écart-type en apprenant ce qu'il est, ce qu'il mesure et comment le calculer manuellement pour comprendre son concept sous-jacent.


Stratégie basée sur l'Ecart-Type

Dans cette rubrique, après avoir découvert l'indicateur de l'Ecart-Type en détail et son concept principal, nous apprendrons à l’utiliser en nous basant sur le concept de base qui le sous-tend. Nous allons apprendre à utiliser l'indicateur de l'Ecart-Type à travers 3 stratégies simples. La première, Ecart-Type Simple - Volatilité, sera utilisée pour savoir s'il y a ou non de la volatilité. Pour la seconde, Ecart-Type Simple - Ecart-Type et MM, nous l'utiliserons accompagnée d’une moyenne mobile pour obtenir des signaux d'achat ou de vente. La troisième, Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM, sera utilisé avec la moyenne mobile après une forte volatilité pour obtenir des signaux d'achat ou de vente.

  • 1ère stratégie : Ecart-Type Simple - Volatilité :

Selon cette stratégie, nous devons mesurer la volatilité en comparant l'écart-type actuel à la moyenne des 5 écarts-types précédents. Si l'écart-type actuel est supérieur à l'écart-type moyen sur 5 périodes, il s'agit d'un signal de forte volatilité. Si l’écart type actuel est inférieur à l’écart-type moyen sur 5 périodes, il s'agit d'une faible volatilité.

Ecart-Type actuel > Ecart-Type moyen --> forte volatilité

Ecart-Type actuel < Ecart-Type moyen --> faible volatilité

  • 2ème stratégie : Ecart-Type Simple - Ecart-Type et MM :

Pour cette stratégie, nous devons obtenir des signaux d'achat et de vente en fonction de conditions spécifiques. Si l'Ecart-Type actuel est supérieur à l'Ecart-Type précédent et que le prix Ask est supérieur à la moyenne mobile, il s'agit d'un signal d'achat. Si l'Ecart-Type actuel est supérieur à l'Ecart-Type précédent et que le prix Bid est inférieur à la moyenne mobile, il s'agit d'un signal de vente.

Ecart-Type actuel > Ecart-Type précédent et Ask > MM --> Signal d'achat

Ecart-Type actuel > Ecart-Type précédent et Bid < MM --> Signal de vente

  • 3ème stratégie : Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM :

Pour cette stratégie, nous devons obtenir des signaux d'achat et de vente en fonction d'autres conditions. Si l'Ecart-Type actuel est supérieur à l'Ecart-Type moyen et que le prix Ask est supérieur à la moyenne mobile, il s'agit d'un signal d'achat. Si l'Ecart-Type actuel est supérieur à l'Ecart-Type moyen et que le prix Bid est inférieur à la moyenne mobile, il s'agit d'un signal de vente.

Ecart-Type actuel > Ecart-Type moyen et Ask > MM --> Signal d'achat

Ecart-Type actuel > Ecart-Type moyen et Bid < MM --> Signal de vente

Dans la stratégie précédente, nous avons appris à utiliser l'indicateur de l'Ecart-Type au travers de 3 stratégies simples pour obtenir des signaux d'achat et de vente. Vous pouvez également essayer de fusionner d'autres indicateurs techniques afin d'obtenir d’autres informations sur l'instrument financier en fonction de votre plan et de votre stratégie de trading.


Plan de la stratégie basée sur l'Ecart-Type

Dans cette rubrique, nous allons apprendre à concevoir un plan détaillé pour chaque stratégie afin de nous aider à créer un système de trading pour chacune d’entre elle. Selon moi, cette étape est très importante car elle nous aidera à organiser nos idées de manière à créer notre système de trading facilement et sans heurts. Je vais donc vous présenter un plan qui permettra de dicter à l'ordinateur ce que nous voulons qu’il fasse.

  • 1ère stratégie : Ecart-Type Simple - Volatilité :

Selon cette stratégie, le système de trading doit vérifier 2 valeurs et les comparer en permanence. Ces 2 valeurs sont l'Ecart-Type actuel et l'Ecart-Type moyen des 5 valeurs précédentes. Le système de trading doit ensuite décider lequel est plus important que l'autre. Si l'Ecart-Type actuel est supérieur à la moyenne, un commentaire doit apparaître sur le graphique :

  • Forte volatilité
  • Valeur actuelle de l'Ecart-Type
  • Valeur de l'Ecart-Type moyen sur 5 périodes

Si l'Ecart-Type actuel est inférieur à la moyenne, un commentaire doit apparaître sur le graphique :

  • Faible volatilité
  • Valeur actuelle de l'Ecart-Type
  • Valeur de l'Ecart-Type moyen sur 5 périodes
L'image suivante représente le plan détaillé de la stratégie Ecart-Type Simple - Volatilité (Simple Std Dev - Volatility) :

Plan Ecart-Type Simple - Volatilité

  • 2ème stratégie : Ecart-Type Simple - Ecart-Type et MM :

Selon cette stratégie, le système de trading doit vérifier 4 valeurs et effectuer une comparaison en permanence. Ces 4 valeurs sont l'Ecart-Type actuel, l'Ecart-Type précédent, le prix de la demande (Ask) et la valeur de la moyenne mobile. Après avoir vérifié ces valeurs, le système de trading doit prendre une décision et afficher un signal correspondant.

Si l'Ecart-Type actuel est supérieur à l'Ecart-Type précédent et que le prix Ask est supérieur à la moyenne mobile, le système de trading doit afficher un commentaire sur le graphique avec les valeurs suivantes :

  • Signal d'achat
  • Valeur actuelle de l'Ecart-Type
  • Valeur précédente de l'Ecart-Type
  • Valeur du prix Ask
  • Valeur de la moyenne mobile.

Si l'Ecart-Type actuel est supérieur à l'Ecart-Type précédent et que le prix Bid est inférieur à la moyenne mobile, le système de trading doit afficher un commentaire sur le graphique avec les valeurs suivantes :

  • Signal de vente
  • Valeur actuelle de l'Ecart-Type
  • Valeur précédente de l'Ecart-Type
  • Valeur du prix Bid
  • Valeur de la moyenne mobile.
L'image suivante représente le plan détaillé de la stratégie Ecart-Type Simple - Ecart-Type et MM :

 Plan Ecart-Type Simple - Ecart-Type et MM

  • 3ème stratégie : Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM :

Selon cette stratégie, le système de trading doit vérifier 4 valeurs en permanence afin de décider du signal à émettre en fonction de la comparaison de ces valeurs. Ces valeurs sont l'Ecart-Type actuel, l'Ecart-Type moyen, le prix de la demande (Ask) et la moyenne mobile.

Si l'Ecart-Type actuel est supérieur à l'Ecart-Type moyen et que le prix Ask est supérieur à la moyenne mobile, le système de trading doit générer un signal sous la forme d'un commentaire sur le graphique avec les valeurs suivantes :

  • Signal d'achat
  • Valeur actuelle de l'Ecart-Type
  • Valeur moyenne de l'Ecart-Type
  • Valeur du prix Ask
  • Valeur de la moyenne mobile.

Si l'Ecart-Type actuel est supérieur à la moyenne de l'Ecart-Type et que le prix de l'offre (Bid) est inférieur à la moyenne mobile, le système de trading doit afficher un signal sous forme de commentaire sur le graphique avec les valeurs suivantes :

  • Signal de vente
  • Valeur actuelle de l'Ecart-Type
  • Valeur moyenne de l'Ecart-Type
  • Valeur du prix Bid
  • Valeur de la moyenne mobile.
L'image suivante représente le plan détaillé de la stratégie Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM :

Plan Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM

Nous avons maintenant appris à concevoir un plan étape par étape pour chaque stratégie pour nous aider à créer un système de trading à travers des étapes organisées. 


Système de trading basé sur l'Ecart-Type

Dans cette rubrique, nous allons apprendre à concevoir un système de trading pour chaque stratégie en MQL5 et à appliquer sur MetaTrader 5. Nous allons tout d’abord concevoir un système de trading simple pour l'écart-type, qui génère un commentaire sur le graphique souhaité avec la valeur de l'écart-type afin d'utiliser ce système comme base.  

  • Nous créons un tableau d’Ecarts-Types d’éléments de type "double" qui représente des valeurs fractionnaires. Le type "double" est l'un des types de données à virgule flottante.
double StdDevArray[];
  • Nous allons trier ce tableau à partir des données actuelles en utilisant la fonction "ArraySetAsSeries" qui renvoie une valeur booléenne. Les paramètres de "ArraySetAsSeries" sont les suivants :
    • Un tableau
    • Un booléen
ArraySetAsSeries(StdDevArray,true);
  • Nous créons une variable entière StdDevDef pour définir l'écart-type avec la fonction "iStdDev" qui renvoie un handle sur l'indicateur d'écart-type. Les paramètres de cette fonction sont les suivants :
    • symbol, pour définir le nom du symbole. Nous utiliserons "_Symbol" pour l’appliquer sur le graphique actuel.
    • period, pour définir la période. Nous utiliserons "_Period" pour appliquer la période en cours.
    • ma_period, pour définir la longueur de la moyenne mobile. Nous choisirons 20 par défaut.
    • ma_shift, pour définir le décalage horizontal (si vous le souhaitez). Nous mettrons 0.
    • ma_method, pour déterminer le type de la moyenne mobile. Nous utiliserons une moyenne mobile simple (MODE_SMA).
    • applied_price, pour déterminer le type de prix à utiliser. Nous utiliserons le prix de clôture (PRICE_CLOSE).
int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
  • Nous copierons ensuite les données des prix dans le tableau de StdDev avec la fonction "CopyBuffer" qui renvoie le nombre de données copiées ou -1 en cas d'erreur. Les paramètres de cette fonction sont les suivants :
    • indicator_handle, où nous allons spécifier la définition de l'indicateur "StdDevDef".
    • buffer_num, pour définir le numéro de tampon de l'indicateur. Nous mettrons 0 correspondant au 1er tampon.
    • start_pos, pour définir la position de départ. Nous mettrons 0 pour indiquer le 1er élément.
    • count, pour définir la quantité d’éléments à copier. Nous mettrons 3.
    • buffer[], pour déterminer le tableau destination de la copie. Nous choisirons "StdDevArray".
CopyBuffer(StdDevDef,0,0,3,StdDevArray);
  • Nous récupérons la valeur StdDev en utilisant la fonction "NormalizeDouble" après avoir créé une variable de type double "StdDevVal". Les paramètres du "NormalizeDouble" sont les suivants :
    • value, pour déterminer le nombre à normaliser. Nous spécifierons "StdDevArray[0]" pour indiquer le 1er élément du tableau.
    • digits, pour déterminer le nombre de chiffres après la virgule. Nous spécifierons 6.
double StdDevVal = NormalizeDouble(StdDevArray[0],6);
  • Nous affichons un commentaire sur le graphique avec la valeur actuelle de l'Ecart-Type en utilisant la fonction "Comment". Il n'y a pas de valeur de retour mais un commentaire sera affiché.
Comment("StdDev Value is",StdDevVal);

 Après avoir compilé ce code, nous pouvons vérifier qu'il n'y a pas d'erreurs ou d'avertissements. L’expert de ce système de trading est ensuite visible dans la fenêtre du Navigateur :

Écart-type 1

En le glissant et le déposant sur le graphique souhaité, la fenêtre suivante du système de trading est affichée :

Fenêtre de l'Ecart-Type simple

Après avoir coché la case "Autoriser le Trading Algorithmique" et avoir appuyé sur "OK", l'expert de ce système de trading est attaché au graphique :

Ecart-Type Simple attaché

Comme nous pouvons le voir dans le coin droit de l'image précédente, l'expert est attaché au graphique.

L'image suivante est un test qui montre le signal généré par ce système de trading :

Signal de l'Ecart-Type Simple

L'image suivante est un autre exemple de signal généré automatiquement par ce système. En même temps, nous allons insérer l'indicateur d'Ecart-Type standard intégré pour s'assurer que les deux valeurs sont les mêmes.

Ecart-Type Simple même signal 

  • 1ère stratégie : Ecart-Type Simple - Volatilité :

Nous allons maintenant créer un système de trading pour la stratégie Ecart-Type Simple - Volatilité. Le code complet pour créer ce système de trading se trouve ci-dessous :

//+------------------------------------------------------------------+
//|                                  Simple Std Dev - Volatility.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()
  {
   double StdDevArray[];

   ArraySetAsSeries(StdDevArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

  }
//+------------------------------------------------------------------+

Les différences dans ce code sont les suivantes :

La valeur actuelle de l'écart-type est non seulement définie, mais aussi les 5 valeurs précédentes en utilisant la même fonction que pour la valeur actuelle, mais avec un nombre formalisé différent pour obtenir la valeur souhaitée.

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);

Calcul de la moyenne des 5 valeurs précédentes :

double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

Conditions de la stratégie :

En cas de forte volatilité :

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

En cas de faible volatilité :

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

Après avoir compilé ce code, nous le retrouverons dans le Navigateur sous la forme suivante :

 Écart-type 2

En le glissant et le déposant sur le graphique désiré, la fenêtre de ce système de trading est affichée comme suit :

 Fenêtre Ecart-Type Simple - Volatilité

Après avoir appuyé sur "OK", l'expert est attaché sur le graphique comme ci-dessous et commence à générer des signaux :

Ecart-Type Simple - Volatilité attachée

Comme nous pouvons le voir, l'expert du système de trading Ecart-Type Simple - Volatilité est attaché dans le coin supérieur droit de l'image précédente.

Voici quelques exemples de signaux générés selon ce système de trading à partir de tests :

En cas de forte volatilité :

 Ecart-Type Simple - Volatilité - signal forte vol

Comme nous pouvons le voir dans l'image précédente, nous trouvons dans le coin supérieur gauche du graphique 3 lignes de commentaires :

  • Déclaration d’une volatilité élevée
  • Valeur actuelle de l'Ecart-Type
  • Moyenne des 5 valeurs précédentes de l'Ecart-Type précédentes

En cas de faible volatilité :

Ecart-Type Simple - Volatilité - signal faible vol

Comme on peut le voir dans l'image précédente, dans le coin supérieur gauche du graphique, 3 autres lignes de commentaires nous informent :

  • La volatilité est faible
  • La valeur actuelle de l'écart-type
  • La moyenne des 5 valeurs précédentes de l'Ecart-Type
Grâce à ce qui précède, nous avons appris à créer un système de trading qui peut générer un signal pour nous informer de la volatilité.
  • 2ème stratégie : Ecart-Type Simple - Ecart-Type et MM :

Le code suivant explique comment créer un système de trading pour la stratégie Ecart-Type Simple - Ecart-Type et MM :

//+------------------------------------------------------------------+
//|                                    Simple Std Dev - Std & MA.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()
  {
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,3,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

   double MAValue = NormalizeDouble(PArray[0],6);


   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }

//+------------------------------------------------------------------+

Les différences dans ce code sont les suivantes :

Nous définissons les valeurs des prix Ask et Bid en créant des variables doubles pour chacun, en utilisant la fonction "NormalizeDouble" pour retourner une valeur de type double, puis en utilisant le "SymbolInfoDouble" comme un nombre normalisé pour retourner la propriété correspondante d'un symbole spécifique.  Les paramètres de "SymbolInfoDouble" sont les suivants :

  • le nom du symbole, nous utiliserons "_Symbol" pour l'appliquer au graphique du symbole en cours.
  • prop_id, pour définir la propriété, ici "SYMBOL_ASK".
double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

Création d'un autre tableau de prix :

double PArray[];

Tri de ce tableau avec les données actuelles :

ArraySetAsSeries(PArray,true);

Définition de la moyenne mobile avec la fonction "iMA" après avoir créé une variable entière MADef.

int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

Copie des données des prix dans le tableau créé :

CopyBuffer(MADef,0,0,10,PArray);

Définition de la valeur précédente de l'Ecart-Type :

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

Définition de la valeur de la moyenne mobile :

double MAValue = NormalizeDouble(PArray[0],6);

Conditions de la stratégie :

En cas de signal d'achat :

   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

En cas de signal de vente :

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

Après avoir compilé ce code, nous le trouverons dans la fenêtre du Navigateur comme dans l'image suivante :

 Écart-type 3

En double-cliquant dessus, la fenêtre de l’Expert Advisor est affichée :

Fenêtre Ecart-Type Simple et MM

Après avoir coché la case "Autoriser le Trading Algorithmique" et avoir appuyé sur "OK", l'Expert est attaché au graphique comme dans l'image ci-dessous :

Ecart-Type Simple et MM attaché

Comme nous pouvons le voir en haut à droite du graphique, l’Expert Advisor est attaché. Voici des exemples de tests selon cette stratégie :

En cas de signal d'achat :

 Ecart-Type Simple et MM - signal d’achat

Comme nous l'avons vu dans l'exemple précédent du signal d'achat, nous avons 5 lignes de commentaires dans le coin supérieur gauche du graphique :

  • Signal d'achat
  • Valeur actuelle de l'Ecart-Type
  • Valeur précédente de l'Ecart-Type
  • Valeur du prix de la demande (Ask)
  • Valeur de la Moyenne Mobile

En cas de signal de vente :

 Ecart-Type Simple et MM - signal de vente

Comme nous l'avons vu dans l'exemple précédent du signal de vente, 5 lignes de commentaires sont affichées dans le coin supérieur gauche du graphique :

  • Signal de vente
  • Valeur actuelle de l'Ecart-Type
  • Valeur précédente de l'Ecart-Type
  • Valeur du prix de l'offre (Bid)
  • Valeur de la Moyenne Mobile

Grâce à tout ce que nous avons vu, nous avons appris à créer un système de trading pouvant être utilisé pour générer des signaux d'achat ou de vente sur la base de l'Ecart-Type et de la moyenne mobile.

  • 3ème stratégie : Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM :

Voici le code complet pour créer le système de trading de cette stratégie :

//+------------------------------------------------------------------+
//|                  Simple Std Dev - Std Dev & AVG Std Dev & MA.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()
  {
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);
   double MAValue = NormalizeDouble(PArray[0],6);

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }
  
//+------------------------------------------------------------------+

Les différences dans ce code sont les suivantes :

Les conditions de la stratégie,

En cas de signal d'achat :

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

En cas de signal de vente :

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

Après avoir compilé ce code, l'Expert est visible dans la fenêtre du Navigateur de la manière suivante :

 Écart-type 4

Après avoir un double-cliqué ou avoir effectué un glisser-déposer sur le graphique, on retrouve la fenêtre suivante :

Fenêtre Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM

Après avoir appuyé sur "OK", l'Expert est attaché au graphique comme dans l'image ci-dessous :

Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM attaché

Comme nous pouvons le voir dans le coin supérieur droit du graphique, l'expert est attaché.

Voici maintenant des exemples de signaux générés sur la base de ce système de trading :

En cas de signal d'achat :

Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM - signal d'achat

Comme nous pouvons le voir dans l'exemple précédent, dans le coin supérieur gauche du graphique, ce système de trading a généré 5 lignes de commentaires :

  • Signal d'achat
  • Valeur actuelle de l'Ecart-Type
  • Valeur moyenne de l'Ecart-Type
  • Valeur du prix de la demande (Ask)
  • Valeur de la MM

En cas de signal de vente :

Ecart-Type Simple - Ecart-Type, Ecart-Type Moyen et MM - signal de vente

Comme nous l'avons vu dans l'exemple précédent du signal de vente, 5 lignes de commentaires basées sur ce système de trading sont affichées :

  • Signal de vente
  • Valeur actuelle de l'Ecart-Type
  • Valeur moyenne de l'Ecart-Type
  • Valeur du prix de l'offre (Bid)
  • Valeur de la MM

Grâce à ce qui précède, nous avons appris à créer un système de trading basé sur chaque stratégie mentionnée, et pouvant être utilisé pour générer des signaux automatiques.


Conclusion

Nous pouvons maintenant considérer que nous avons savons davantage sur l'indicateur de l'Ecart-Type car nous avons vu ce qu'il est, ce sur quoi il nous informe ou ce qu'il mesure, et comment nous pouvons le calculer manuellement. Après avoir bien compris cet indicateur, nous avons appris comment l'utiliser à travers des stratégies simples basées sur son concept de base. Nous avons appris à l'utiliser comme mesure de la volatilité grâce à la stratégie Ecart-Type Simple - Volatilité. Nous avons également appris à l'utiliser pour obtenir des signaux d'achat ou de vente basés sur deux conditions différentes grâce à la stratégie Ecart-Type Simple - Ecart-Type et MM et à la stratégie Ecart-Type, Ecart-Type moyen et MM. Nous avons ensuite appris à concevoir un plan étape par étape pour chaque stratégie afin de nous aider à créer un système de trading, facilement et sans heurts. Puis, nous avons créé un système de trading en MQL5 basé sur chaque stratégie, à utiliser dans MetaTrader 5 pour générer des signaux automatiquement afin de nous aider à gagner du temps, obtenir des signaux précis basés sur des conditions spécifiques, éviter les émotions nuisibles et la subjectivité. Ce sont des avantages de la programmation.

Il serait utile d'essayer d'accompagner cet indicateur avec d'autres indicateurs techniques pour obtenir plus d'informations et avoir une perspective plus complète. C'est l'une des caractéristiques de l'analyse technique lorsque vous concevez un système de trading qui peut être utilisé pour vous donner des informations claires sur les facteurs les plus importants de l'instrument financier.

Je dois redire à nouveau que vous devez tester toute stratégie par vous-même avant de l'utiliser, car l'objectif principal ici est votre éducation, uniquement pour s'assurer qu'elle vous sera utile ou appropriée. J'espère que cet article vous sera utile, qu'il vous permettra de mieux comprendre le sujet et qu'il vous apportera de nouvelles idées qui pourront vous être utiles pour améliorer votre trading.

Si vous avez trouvé cet article utile et que vous souhaitez lire d'autres articles similaires pour apprendre à concevoir un système de trading à partir d’un indicateur technique parmi les plus populaires, vous pouvez trouver mes autres articles dans cette série.

Traduit de l’anglais par MetaQuotes Ltd.
Article original : https://www.mql5.com/en/articles/11185

Apprenez à concevoir un système de trading basé sur l'Oscillateur de Chaikin Apprenez à concevoir un système de trading basé sur l'Oscillateur de Chaikin
Bienvenue dans ce nouvel article de notre série consacrée à l'apprentissage de la conception d'un système de trading à l'aide d’un indicateur technique parmi les plus populaires. Dans ce nouvel article, nous allons apprendre à concevoir un système de trading basé sur l'indicateur Chaikin Oscillator (Oscillateur de Chaikin).
Développer un Expert Advisor de trading à partir de zéro (Partie 17) : Accès aux données sur le web (3) Développer un Expert Advisor de trading à partir de zéro (Partie 17) : Accès aux données sur le web (3)
Dans cet article, nous poursuivons notre étude sur la manière d'obtenir des données à partir du web et de les utiliser dans un Expert Advisor. Cette fois-ci, nous allons élaborer un système alternatif.
Algorithmes d'optimisation de la population : Essaim de Particules (OEP ou PSO en anglais) Algorithmes d'optimisation de la population : Essaim de Particules (OEP ou PSO en anglais)
Dans cet article, j'examinerai l'algorithme populaire d'Optimisation par Essaims Particulaires (OEP ou Particle Swarm Optimization - PSO). Précédemment, nous avons abordé les caractéristiques importantes des algorithmes d'optimisation telles que la convergence, le taux de convergence, la stabilité et l'évolutivité, et nous avons développé un banc d'essai et examiné l'algorithme RNG le plus simple.
Développer un Expert Advisor de trading à partir de zéro (Partie 16) : Accès aux données sur le web (2) Développer un Expert Advisor de trading à partir de zéro (Partie 16) : Accès aux données sur le web (2)
Il n'est pas évident de savoir comment introduire des données provenant du Web dans un Expert Advisor. Ce n'est pas si facile à faire sans connaître toutes les possibilités offertes par MetaTrader 5.