Apprenez à concevoir différents systèmes de Moyenne Mobile

Mohamed Abdelmaaboud | 23 mai, 2022

Introduction

Je pense que quelle que soit votre période d'expérience dans le domaine du trading, vous devez entendre cette citation "La tendance est votre amie". Et si vous n'en avez pas entendu parler, voici ce que cela signifie car nous savons tous que nous avons différents types de directions de marché ou de tendances de mouvement des prix.

Et les figures suivantes peuvent montrer une tendance haussière et une tendance baissière sous forme de graphique linéaire - tout mouvement autre est latéral :

Tendance haussière

Tendance baissière

Maintenant, nous avons identifié la tendance, mais pourquoi la tendance est mon amie ?

Nous parlerons ici de tendances, c'est-à-dire de tendance haussière et de tendance baissière, car elles ont un mouvement clair à la hausse ou à la baisse. Nous pouvons voir le contrôle d'un acteur particulier du marché. Pendant la tendance haussière, nous pouvons voir que l'acheteur est le contrôleur car il pousse les prix à la hausse quelle que soit l'offre et ici, nous appelons ce marché un marché haussier. Et vice versa, pendant la tendance baissière, nous pouvons voir que le vendeur est le contrôleur car il pousse les prix vers le bas et ici. Nous appelons ce marché un marché baissier.

Mais dans certains cas, nous pouvons faire l'expérience de ce que nous appelons des faux-coups ou de fausses cassures (breakout). Et ces fausses cassures peuvent nuire à nos résultats de trading, comment cela se fait-il ? Nous allons voir ici ce qu'ils peuvent faire, mais identifions d'abord ce que sont les faux-coups ou les fausses cassures.

Les fausses cassures sont ces signaux qui nous donnent un déclencheur pour prendre une décision et après avoir pris la décision, le marché va à l'encontre de cette décision. Et à coup sûr, ce genre de décisions nuira à nos résultats de trading. Ces fausses cassures ou faux-coups peuvent être réduits en les filtrant par de nombreuses stratégies. L'une des meilleures stratégies qui peut le faire pour nous est d'utiliser une moyenne mobile et c'est le sujet de cet article pour apprendre comment nous pouvons utiliser certaines des stratégies de moyenne mobile et comment concevoir un système de trading algorithmiqueet précis, simple et systématique.

Dans cet article, nous allons parcourir les sujets suivants :

Avertissement : Tout le contenu de cet article est conçu uniquement à des fins éducatives et non pour autre chose. Ainsi, toute action sera prise en fonction du contenu de cet article, ce sera votre responsabilité car le contenu de cet article ne garantira aucun type de résultat. Toutes les stratégies peuvent nécessiter des tests et des optimisations préalables pour donner de meilleurs résultats, comme ce que je mentionne, l'objectif principal de cet article est uniquement à des fins éducatives.

Tous les codes seront écrits en MQL5 et seront testés sur MT5.

Notez qu'il existe de nombreuses stratégies qui peuvent être utilisées pour filtrer les signaux générés en fonction de n'importe quelle stratégie, même en utilisant la moyenne mobile elle-même qui fait l'objet de cet article. Ainsi, l'objectif de cet article est de partager avec vous certaines des stratégies de moyenne mobile et comment concevoir un système de trading algorithmique pour vous faire savoir et vous ouvrir les yeux sur ce que vous pouvez faire et comment développer votre stratégie de trading. Passons maintenant à ce sujet "Apprenez à concevoir différents systèmes de moyenne mobile" car je suis très heureux de le partager avec vous…


Définition de la Moyenne Mobile


La moyenne mobile est un indicateur couramment utilisé dans l'analyse technique et il est calculé pour nous donner une moyenne à partir des prix pendant une période de temps spécifique ou en d'autres termes, il nous aide à lisser les données de prix pour atténuer le hasard ou la fluctuation des mouvements à court terme sur le graphique.

Il existe de nombreux types de moyennes mobiles et les différences entre elles sont liées à des calculs différents pour chacune, comme ce que je mentionnerai en détail dans le sujet suivant. Mais ici, ce que je veux que vous sachiez jusqu'à plus de détails, c'est qu'il existe de nombreux types et la différence entre eux en raison du calcul pour obtenir le meilleur résultat.

La moyenne mobile est un indicateur de suivi de tendance car elle est calculée par les prix. Par conséquent, si le prix évolue dans une tendance spécifique, la moyenne mobile suivra la même tendance.

La moyenne mobile est un indicateur retardé car elle se déplace après le prix, et c'est normal car elle est calculée par le prix, de sorte que le prix doit se déplacer en premier. Ou, en d'autres termes, nous devons d'abord disposer des données de prix, puis nous pouvons trouver les données de moyenne mobile en effectuant des calculs sur ces données de prix.

Selon la nature de la moyenne mobile, on peut comprendre que la moyenne mobile :


Types de Moyennes Mobiles


Il existe de nombreux types de moyennes mobiles qui peuvent être utilisées et les plus couramment utilisées sont :

La principale différence entre elles est liée à différents calculs pour obtenir un meilleur résultat, comme je l'ai mentionné précédemment.

Nous allons donc identifier maintenant ces types de moyennes mobiles et explorer les différences entre elles. Nous verrons également comment ces moyennes mobiles peuvent être utilisées dans MQL5 ou comment nous pouvons les appeler si nous voulons en utiliser un type spécifique.

Moyenne mobile simple :

Ce type est la forme ou le type le plus simple de la moyenne mobile, son raccourci couramment utilisé est SMA ou MMS.

Elle est calculée en prenant la moyenne arithmétique d'un ensemble donné de valeurs sur une période de temps spécifique. Ou un ensemble de nombres de prix sont additionnés puis divisés par le nombre de prix dans l'ensemble.

SMA

Exemple : Nous avons 5 jours de bourse et les cours de clôture pendant ces 5 jours étaient les suivants :

Si nous voulons obtenir la SMA pour ces 5 jours, elle sera calculée comme suit :


Exemple de SMA

Moyenne mobile pondérée

La moyenne mobile pondérée (WMA) telle qu'elle est couramment utilisée, donne une moyenne des prix pendant une période de temps spécifique, mais la différence ici car elle donne plus de poids aux données récentes. Cela signifie que si nous calculons 10 jours de bourse, ce type de moyenne ne donnera pas le poids pour les 10 jours de bourse mais il donnera plus de poids aux données récentes.

Elle peut être calculée avec la formule suivante :

WMA


Exemple :

Si nous avons les mêmes 5 jours de bourse et que les cours de clôture pendant ces 5 jours étaient les suivants :

Si nous voulons obtenir la WMA pour ces 5 jours, elle sera calculée comme suit :

Exemple WMA


Exemple WMA 1


Moyenne mobile exponentielle

La moyenne mobile exponentielle ou EMA telle qu'elle est couramment utilisée. Elle donne une moyenne des prix et la différence ici est que l'EMA n'annule pas la période avant la période calculée à MA, cela signifie que si nous devons calculer 10 MA, la période avant ces 10 jours de bourse sera prise en compte.

Elle peut être calculée comme suit :

Tout d'abord, nous calculerons "K" pour faire référence à l'exposant pour calculer le poids d'un intervalle, et "n" fera référence au nombre d'intervalles :

EMA

Puis,

EMA

Exemple :

Si nous avons les mêmes 5 jours de bourse et que les cours de clôture pendant ces 5 jours étaient les suivants :

Si nous voulons obtenir l'EMA pour ces 5 jours, elle sera calculée comme suit :

Exemple EMA


Exemple EMA

Notez qu'ici l'EMA d'hier sera la première pour calculer l'EMA au jour 6, nous utiliserons donc la SMA de 5 jours (22).


Maintenant, après avoir identifié ce qu'est la moyenne mobile et les types de moyennes mobiles, nous allons passer en revue la partie la plus intéressante de cet article. Nous parlerons des stratégies de moyenne mobile et de la manière dont nous pouvons concevoir des systèmes de trading algorithmiques pour elles.


Stratégie 1 : un croisement de moyenne mobile

Dans cet article, nous choisirons la moyenne mobile simple. Cependant, vous pouvez utiliser n'importe quel type de moyenne mobile dans votre code.

Selon la stratégie, les prix et la SMA seront vérifiés à chaque tick :

La capture d'écran suivante montre One Simple Moving Average Blueprint que nous voulons concevoir :

Plan 1MA


Voici le code pour concevoir cette stratégie :

//+------------------------------------------------------------------+
//|                                            One SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // crée un tableau pour les prix
   double myMovingAverageArray1[];
   
   // définit Ask, Bid
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   // définit les propriétés des MA - simple MA 24
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   
   // trie les prix
   ArraySetAsSeries(myMovingAverageArray1,true);
   
   // MA définie - une ligne - bougie courante, 3 bougies - stocke le résultat
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   
   // Vérifie si nous avons un signal d'entrée
   if (
      (Ask>myMovingAverageArray1[0])
      )
         {
         Comment("BUY");
         }
    
   // vérifie si nous avons un signal de vente      
   if (
      (Bid<myMovingAverageArray1[0])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Les captures d'écran suivantes montrent les signaux générés après l'exécution du code :

1MA - signal d'achat

1MA - signal de vente

Stratégie 2 : Croisement de deux moyennes mobiles

Dans cette stratégie, nous utiliserons deux moyennes mobiles simples. La période de moyenne mobile simple la plus courte est de 24 et la période la plus longue est de 50.

Selon cette stratégie, nous avons besoin que les deux moyennes mobiles simples soient vérifiées à chaque tick :

La capture d'écran suivante montre le Blueprint Two Simple Moving Averages que nous voulons concevoir :

Plan 2MA


Voici le code pour concevoir cette stratégie :

//+------------------------------------------------------------------+
//|                                            Two SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // crée un tableau pour les prix
   double myMovingAverageArray1[], myMovingAverageArray2[];
   
   // définit les propriétés des MA - MA simple, 1ère 24 / 2ème 50
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,50,0,MODE_SMA,PRICE_CLOSE);
   
   // trie les tableaux des prix
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   
   // MA1 et MA2 définies - une ligne - bougie courante, 3 bougies - stocke le résultat
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   
   // Vérifie si nous avons un signal d'achat
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
      )
         {
         Comment("BUY");
         }
    
   // vérifie si nous avons un signal de vente      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Les captures d'écran suivantes illustrent les signaux générés après l'exécution du code :

2MA - signal d'achat


2MA - signal de vente


Stratégie 3 : Croisement de trois moyennes mobiles

Dans cette stratégie, nous utiliserons trois moyennes mobiles simples : la période moyenne mobile simple la plus courte est de 10, la période la plus longue est de 48, et entre les deux une période de 24.

Selon la stratégie, nous avons besoin que les trois moyennes mobiles simples soient vérifiées à chaque tick :

La capture d'écran suivante illustre le plan des trois moyennes mobiles simples que nous souhaitons concevoir :

Plan 3MA


Voici le code pour concevoir cette stratégie :

//+------------------------------------------------------------------+
//|                                          Three SMA crossover.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"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // crée un tableau pour les prix
   double myMovingAverageArray1[], myMovingAverageArray2[],myMovingAverageArray3[];
   
   // définit les propriétés des MA - MA simple, 1ère 10 / 2ème 24, 3ème 48
   int movingAverage1 = iMA(_Symbol, _Period, 10, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,24,0,MODE_SMA,PRICE_CLOSE);
   int movingAverage3 = iMA(_Symbol,_Period,48,0,MODE_SMA,PRICE_CLOSE);
   
   // trie les prix
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   ArraySetAsSeries(myMovingAverageArray3,true);
   
   // MA1, MA2, MA3 définies - une ligne - bougie courante, 3 bougies - stocke le résultat
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   CopyBuffer(movingAverage3,0,0,3,myMovingAverageArray3);
   
   // Vérifie si nous avons un signal d'achat
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]<myMovingAverageArray3[1])
      )
         {
         Comment("BUY");
         }
    
   // vérifie si nous avons un signal de vente      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]>myMovingAverageArray3[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Les captures d'écran suivantes illustrent les signaux générés après l'exécution du code :

3MA - signal d'achat


3MA - signal de vente


Conclusion

Dans cet article, j'ai mentionné l'un des indicateurs les plus couramment utilisés et les plus importants en partageant trois stratégies différentes. J'ai également essayé de montrer comment nous pouvons utiliser ces indicateurs et comment nous pouvons concevoir des systèmes de trading algorithmiques basés sur chacun d'eux. Ces stratégies peuvent être utilisées avec précision et efficacité, bien sûr après des tests et des optimisations préalables.