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

Apprendre à concevoir un système de trading basé sur DeMarker

MetaTrader 5Trading | 16 octobre 2023, 09:54
588 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Ce nouvel article de notre série est consacré à l'apprentissage de la conception de systèmes de trading basés sur les indicateurs techniques les plus populaires. Nous apprendrons en détail un nouvel outil technique ou un nouvel indicateur qui peut être utilisé en notre faveur dans le trading. Cet indicateur est l'indicateur DeMarker, que nous aborderons dans les rubriques suivantes :

  1. Définition du DeMarker
  2. Stratégie DeMarker
  3. Plan de la stratégie DeMarker
  4. Système de trading DeMarker
  5. Conclusion

Nous utiliserons le terminal de trading MetaTrader 5 et MQL5 qui est intégré dans le terminal pour écrire le code du système de trading et le tester. Si vous ne savez pas comment télécharger et utiliser MetaTrader 5, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor d'un article précédent pour en savoir plus.

Je vous conseille de mettre en pratique ce que vous apprenez dans cet article si vous voulez développer vos compétences en trading et en programmation et en tirer le maximum de bénéfices. La pratique est un facteur très important dans toute étape d'apprentissage. J'aimerais mentionner et confirmer que l'objectif principal des stratégies mentionnées est d'apprendre le concept principal derrière l'indicateur. L'objectif principal est donc uniquement éducatif et vous devez tester toute stratégie avant de l'utiliser sur un compte réel pour vous assurer qu'elle sera rentable ou adaptée à votre activité de trading.

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.

Définition du DeMarker

Si nous voulons identifier et connaître plus en détail l'indicateur DeMarker, nous devons apprendre ce qu'il est, ce qu'il mesure, comment nous pouvons le calculer et comment nous pouvons le lire pour l'utiliser en notre faveur. L'indicateur DeMarker est un oscillateur technique créé par l'analyste technique Thomas DeMark. Il est clair que le nom de cet indicateur provient de son créateur et qu'il est également connu sous le nom d'indicateur "DeM". Cet indicateur technique mesure la demande pour l'instrument et évalue la tendance directionnelle du marché en comparant les prix maximum et minimum actuels aux prix précédents.

Pour calculer cet indicateur manuellement, nous pouvons suivre les étapes suivantes :

DMark (i) = SMA (DeMax, N) / (SMA (DeMax, N) + SMA (DeMin, N))

Avec :

  • DMark (i) = la valeur actuelle du DeMark.
  • SMA = moyenne mobile simple
  • DeMax = la valeur maximale du DeMark
  • N = la période utilisée
  • DeMin = la valeur minimale du DeMark


Le DeMax peut être calculé comme suit :

DeMax (i) = HIGH (i) - HIGH (i - 1)

Sinon :

DeMax (i) = 0


Le DeMin peut être calculé par :

DeMin (i) = LOW (i - 1) - LOW (i)

Sinon :

DeMin (i) = 0

Après avoir calculé l'indicateur, nous pouvons constater qu'il produit une ligne d'oscillateur entre 0 et 1. Il n'est plus nécessaire aujourd’hui de le calculer manuellement car il est intégré à la plateforme de trading MetaTrader 5. Il suffit de le choisir parmi les indicateurs disponibles pour l'insérer dans le graphique et le lire.

Voici comment insérer l’indicateur technique DeMarker dans MetaTrader 5 :

Dans le terminal de trading MetaTrader 5, aller dans sur Insertion --> Indicateurs --> Oscillateurs --> DeMarker.

Ajout DeM

La fenêtre des paramètres de cet indicateur est alors affichée comme suit :

Paramètres DeM

1 - détermine la période.

2 - définit la couleur de la ligne de l'indicateur.

3 - définit le style de ligne de l'indicateur.

4 - définit l'épaisseur du trait de l'indicateur.

Après avoir réglé les paramètres précédents et appuyé sur "OK", l'indicateur sera inséré dans le graphique de la manière suivante :

DeM attaché

Comme nous le voyons dans la partie inférieure du graphique précédent, l'indicateur est attaché et nous avons une ligne d'oscillateur entre 0 et 1. Nous pouvons lire cet indicateur en déterminant la position de la ligne dans la zone mentionnée. Si l'indicateur s'approche de 0,70, cela signifie que nous avons une situation de sur-achat. Et si l'indicateur s'approche de 0,30, cela signifie que nous avons une situation de sur-vente.

Stratégie DeMarker

Nous devons maintenant apprendre à utiliser l'indicateur DeMarker en nous basant sur son concept principal. Nous allons donc apprendre à l'utiliser grâce à 3 stratégies simples.

    Première stratégie : La force DeMarker

      Sur la base de cette stratégie, nous devons obtenir des signaux fort ou faible du DeMarker en observant la valeur de l’indicateur DeMarker et la moyenne de ses 5 dernières périodes. Si la valeur actuelle de l'indicateur DeMarker est supérieure aux 5 dernières périodes du DeMarker, il s'agit d'un signal de force. Dans l'autre cas, si la valeur actuelle de l'indicateur est inférieure aux 5 dernières périodes du DeMarker, il s'agit d'un signal de faiblesse.

      Plus simplement :

      Valeur du DeMarker >= AVG(5 périodes du DeMarker) --> DeMarker fort

      Valeur du DeMarker <= AVG(5 périodes du DeMarker) --> DeMarker faible

        Deuxième stratégie : DeMarker, OB et OS

          Sur la base de cette stratégie, nous devons recevoir des signaux lorsque l'indicateur atteint des zones de sur-achat et de sur-vente. Si la valeur actuelle du DeMarker est supérieure ou égale au niveau 0,70, il s'agit d'un signal d'approche d'une zone de sur-achat. Si la valeur actuelle du DeMarker est inférieure au niveau 0,30, ce sera un signal d'approche d'une zone de sur-vente.

          Plus simplement :

          Valeur de DeMarker >= 0,70 --> Sur-achat

          Valeur de DeMarker <= 0,30 --> Sur-vente

            3ème stratégie : Divergence du DeMarker

              Sur la base de cette stratégie, nous devons obtenir des signaux de divergence haussière ou baissière qui donnent une idée de la probabilité d'un changement du mouvement actuel. Nous devons obtenir ces signaux en observant 4 valeurs : le sommet actuel, le sommet précédent, le DeMarker actuel et le DeMarker précédent. Il est bon de mentionner qu'il s'agit d'une situation simple de divergence. Mais la plus efficace est de comparer et d'observer les hauts et les bas des prix avec les hauts et les bas de l'indicateur. Dans cette situation simple, nous devons obtenir un signal de divergence baissière si le sommet actuel est supérieur au sommet précédent et que le DeMarker actuel est inférieur à la valeur précédente du DeMarker. Dans l'autre cas, si le plus bas actuel est plus bas que le plus bas précédent et que la valeur actuelle du DeMarker est plus grande que la précédente, il s'agira d'un signal de divergence haussière.

              Plus simplement :

              Plus Haut actuel > Plus Haut précédent, et DeMarker actuel < DeMarker précédent --> divergence baissière

              Plus Bas actuel < Plus Bas précédent, et DeMarker actuel > DeMarker précédent --> divergence haussière

              Plan de la stratégie DeMarker

              Nous avons appris à utiliser l'indicateur DeMarker à l'aide de stratégies simples. Dans cette rubrique, nous allons maintenant créer un plan simple pour chacune afin de nous aider à créer un système de trading.

                Première stratégie : La force DeMarker

                  Selon cette stratégie, nous devons créer un système de trading qui peut être utilisé pour vérifier automatiquement 2 valeurs après les avoir créées ou définies. Ces valeurs sont les valeurs actuelles du DeMarker et ses 5 dernières valeurs moyennes. Si la valeur actuelle est supérieure à la moyenne, le système doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

                  • DeMarker fort
                  • Valeur actuelle du DeMarker
                  • Valeur moyenne sur 5 périodes du DeMarker

                  Dans l'autre scénario, si la valeur actuelle est inférieure à la moyenne, le système doit renvoyer les valeurs suivantes :

                  • DeMarker faible
                  • Valeur actuelle du DeMarker
                  • Valeur moyenne sur 5 périodes du DeMarker
                  Voici le schéma directeur de cette stratégie pour créer son système de trading :

                  Plan de la Force du DeMarker

                    Deuxième stratégie : DeMarker, OB - OS

                      Selon cette stratégie, nous devons créer un système de trading qui peut être utilisé pour générer nos signaux sur la base de conditions spécifiques. Le système de trading doit vérifier en permanence 3 valeurs : la valeur actuelle du DeMarker, le niveau 0,70 et le niveau 0,30. Si la valeur actuelle du DeMarker est supérieure ou égale au niveau 0,70, le système doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

                      • Sur-achat
                      • Valeur du DeMarker

                      Dans l'autre scénario, si la valeur actuelle du DeMarker est inférieure ou égale au niveau 0,30, le système 4doit renvoyer les valeurs suivantes sur le graphique :

                      • Survente
                      • Valeur du DeMarker
                      Plan DeMarker OB, OS
                        3ème stratégie : Divergence du DeMarker

                          Selon cette stratégie, nous devons créer un système de trading pouvant être utilisé pour générer des signaux de divergences haussières ou baissières en vérifiant 4 valeurs en permanence. Si le sommet actuel est supérieur au sommet précédent et que la valeur actuelle du DeMarker est inférieure à sa valeur précédente, le système de trading doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

                          • Divergence baissière.
                          • Plus Haut actuel
                          • Plus Haut précédent
                          • Valeur actuelle du DeMarker
                          • Valeur précédente de DeMarker

                          Dans l'autre scénario, si la valeur basse actuelle est inférieure à la valeur basse précédente et que la valeur DeMarker actuelle est supérieure à sa valeur précédente, le système doit renvoyer les valeurs suivantes sur le graphique :

                          • Divergence haussière
                          • Plus Haut actuel
                          • Plus Haut précédent
                          • Valeur actuelle du DeMarker
                          • Valeur précédente de DeMarker

                          Plan de la divergence

                          Système de trading DeMarker

                          Dans cette partie, nous allons créer un système de trading pour chaque stratégie mentionnée à exécuter dans MetaTrader 5 pour générer des signaux automatiques. Nous allons tout d’abord créer un système de trading simple qui servira de base à toutes les stratégies mentionnées. Ce système génère la valeur actuelle de l'indicateur DeMarker sous forme de commentaire sur le graphique. Voici comment créer ce système à l'aide des lignes de code suivantes :

                          Première étape :

                          Créer un tableau deMarkerArray d’éléments de type "double" :

                          double deMarkerArray[];

                          2ème étape :

                          Utiliser la fonction "ArraySetAsSeries" pour attribuer l'indicateur AS_SERIES au tableau deMarkerArray :

                          ArraySetAsSeries(deMarkerArray,true);

                          3ème étape :

                          Définir l'indicateur en utilisant la fonction "iDeMarker" qui renvoie un handle de l'indicateur DeMarker : Ses paramètres sont :

                          • symbol : pour déterminer le symbole, nous utiliserons _Symbol pour appliquer le symbole courant.
                          • period : pour déterminer la période, nous utiliserons _period pour appliquer la période actuelle.
                          • ma_period : pour déterminer la période de calcul de la moyenne, nous utiliserons 14.
                          int deMarkerDef = iDeMarker(_Symbol,_Period,14);

                          4ème étape :

                          Récupérer les données du buffer de l'indicateur DeMarker en utilisant la fonction "CopyBuffer. Ses paramètres sont :

                          • indicator_handle : nous utiliserons le deMarkerDef de l'indicateur prédéfini.
                          • buffer_num : pour déterminer le numéro du buffer de l'indicateur, nous utiliserons 0.
                          • start_pos : pour déterminer la position de départ, nous utiliserons 0.
                          • count: pour déterminer le nombre d’éléments à copier, nous utiliserons 3.
                          • buffer[] : pour déterminer le tableau cible à copier, nous utiliserons deMarekerArray.
                          CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);

                          5ème étape :

                          Définir la valeur actuelle du deMarker en utilisant la fonction "NormalizeDouble" pour renvoyer une valeur de type double. Ses paramètres sont :

                          • value : pour déterminer le nombre normalisé.
                          • digits : pour déterminer le nombre de chiffres après la décimale.
                          double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);

                          Sixième étape :

                          Utilisation de la fonction "comment" pour renvoyer la valeur de l'indicateur DeMarker actuel sous forme de commentaire sur le graphique.

                          Comment("DeMarker Value is ",deMarkerVal);

                          Voici le code complet de ce système de trading :

                          //+------------------------------------------------------------------+
                          //|                                       Simple DeMarker 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()
                            void OnTick()
                            {
                             double deMarkerArray[];
                          
                             ArraySetAsSeries(deMarkerArray,true);
                          
                             int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                          
                             CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                          
                             double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                          
                             Comment("DeMarker Value is ",deMarkerVal);
                          
                            }
                          //+------------------------------------------------------------------+
                          

                          Après avoir compilé ce code, l'expert sera visible dans le Navigateur :

                          Navigateur

                          En glissant et déposant l'expert sur le graphique, sa fenêtre est alors affichée comme suit :

                          Fenêtre DeMarker Simple

                          Après avoir appuyé sur "OK", l'expert est attaché au graphique de la manière suivante :

                          DeMarker Simple attaché

                          Comme nous pouvons le voir dans le coin supérieur droit du graphique, le système DeMarker Simple est attaché. Nous sommes maintenant prêts à obtenir les signaux souhaités selon cette stratégie. Les étapes précédentes seront les mêmes pour compiler tous les codes de la stratégie mentionnée pour les exécuter dans MetaTrader 5.

                          Voici les signaux générés lors des tests effectués dans le cadre de ce système de trading simple :

                          Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, la valeur actuelle de l'indicateur DeMarker est affichée.

                            Première stratégie : La force DeMarker

                              Voici le code complet permettant de créer un système de trading basé sur cette stratégie :

                              //+------------------------------------------------------------------+
                              //|                                            DeMarker Strength.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 deMarkerArray[];
                              
                                 ArraySetAsSeries(deMarkerArray,true);
                              
                                 int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                              
                                 CopyBuffer(deMarkerDef,0,0,6,deMarkerArray);
                              
                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);
                              
                                 double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;
                              
                              
                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                              
                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Voici les différences dans ce code :

                              Définition des 5 dernières valeurs du deMarker à l'aide de la fonction "NormalizeDouble" après avoir défini la valeur actuelle du deMarker à l'aide de la même fonction.

                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);

                              Calcul de deMarkerAvgVal sur la base des 5 dernières valeurs du deMarker en utilisant la fonction "double" pour créer une variable deMarkerAvgVal égale à la somme des 5 dernières valeurs calculées, puis les diviser par 5 pour obtenir la valeur moyenne.

                              double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;

                              Définition des conditions de la stratégie

                              en comparant la valeur actuelle du deMarker à la valeur deMarkerAvg. Dans le cas d'un signal fort du deMarker, nous devons vérifier que la valeur actuelle du deMarker est supérieure à la valeur deMarkerAvg. Nous utiliserons la condition "if". Sa syntaxe est la suivante :

                              if(expression) --> opérateur

                              Dans le cas d'un cas fort, lorsque deMarkerVal est supérieur à deMarkerAvgVal (l’expression), le système de trading doit renvoyer un signal de force sous la forme d’un commentaire sur le graphique (l’opérateur).

                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              En cas de faiblesse du deMarker, nous devons voir que la valeur actuelle du deMarker est inférieure à la valeur deMarkerAvg (l'expression), son opérateur doit donc renvoyer un commentaire sur le graphique avec la faiblesse et les autres valeurs, chaque valeur sur une ligne séparée.

                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              Après avoir compilé ce code et l'avoir exécuté à partir du Navigateur comme précédemment, l'expert de cette stratégie est attaché comme suit :

                              Force attachée

                              Comme nous pouvons le voir dans le coin supérieur droit, l'expert de cette stratégie est attaché au graphique Nous sommes prêts à obtenir des signaux comme dans les exemples suivants de tests.

                              En cas de signal fort :

                              Force - signal fort

                              Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, ce système de trading a généré un signal basé sur la stratégie de trading. Il est identique à ce qui suit :

                              • DeMarker fort --> parce que la valeur actuelle de DeMarker est supérieure aux 5 dernières valeurs moyennes de l'indicateur DeMarker.
                              • Valeur actuelle du DeMarker
                              • Valeur moyenne du DeMarker 

                              En cas de signal faible :

                              Force - Signal faible

                              Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, nous avons un signal identique au suivant :

                              • DeMarker faible --> parce que la valeur actuelle de DeMarker est inférieure aux 5 dernières valeurs moyennes de l'indicateur DeMarker.
                              • Valeur actuelle du DeMarker
                              • Valeur moyenne du DeMarker 
                                Deuxième stratégie : DeMarker, OB-OS

                                  Voici le code complet de cette stratégie :

                                  //+------------------------------------------------------------------+
                                  //|                                       Simple DeMarker 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()
                                  void OnTick()
                                    {
                                     double deMarkerArray[];
                                  
                                     ArraySetAsSeries(deMarkerArray,true);
                                  
                                     int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                  
                                     CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                                  
                                     double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                                  
                                  
                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Voici les différences dans ce code :

                                  Conditions de ce code.

                                  Dans le cas d'un signal de sur-vente, lorsque la valeur actuelle est inférieure ou égale à 0,30 (qui est l'expression de la fonction "if"), il s'agit d'un signal de sur-vente (qui est l'opérateur dont nous avons besoin de voir en tant que commentaire sur le graphique).

                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  Dans le cas d'un signal de sur-achat (qui est l'opérateur), cette situation existe lorsque la valeur actuelle du deMarker est supérieure ou égale à 0,70 (qui est l'expression) :

                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  En cas d'absence de signal ou d'équilibre (expression), lorsque la valeur actuelle du deMarker est comprise entre 0,30 et 0,70 (opérateur) :

                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }

                                  Après avoir compilé ce code et exécuté cet expert, nous constaterons qu'il est attaché au graphique comme suit :

                                  OB-OS attaché

                                  Nous sommes maintenant prêts à recevoir des signaux basés sur cette stratégie. Les exemples suivants sont tirés de nos tests.

                                  En cas de sur-achat :

                                  DeM, OB - OS - signal OB

                                  Comme nous pouvons le voir dans le graphique précédent dans le coin supérieur gauche, le signal généré est le même que le suivant :

                                  • Sur-achat
                                  • Valeur actuelle du DeMarker

                                  En cas de sur-vente :

                                  DeM, OB - OS - signal OS

                                  Comme on peut le voir, le signal généré est le même que le suivant :

                                  • Sur-vente
                                  • Valeur actuelle du DeMarker

                                  En cas d'absence de signal ou d’équilibre :

                                  DeM, OB - OS - pas de signal

                                  Comme nous pouvons le voir, nous avons obtenu un signal généré de la valeur actuelle du DeMarker.

                                    3ème stratégie : Divergence du DeMarker

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

                                      //+------------------------------------------------------------------+
                                      //|                                          DeMarker Divergence.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 deMarkerArray[];
                                         MqlRates pArray[];
                                      
                                      
                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);
                                      
                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);
                                      
                                         CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);
                                      
                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);
                                      
                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                      
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Différences dans ce code.

                                      Création de 2 tableaux, l'un pour deMarkerArray en utilisant la fonction "double", l'autre pour pArray (prix) en utilisant la fonction "MqlRates" pour stocker les informations relatives au prix, au volume et au spread.

                                         double deMarkerArray[];
                                         MqlRates pArray[];

                                      Définition de l'indicateur AS_SERIES pour ces deux tableaux créés.

                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);

                                      Définition de deMarketDef et de pData

                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);

                                      Remplissage du deMarkerArray

                                      CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);

                                      Définition de deMarkerVal, deMarkerPrevVal, current high, current low, prev. high et prev. low

                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);

                                      Conditions de la stratégie.

                                      En cas de divergence baissière :

                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      En cas de divergence haussière :

                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      Après avoir compilé ce code, nous pouvons le trouver dans le Navigateur pour l'exécuter. Nous le trouverons alors attaché au graphique comme suit :

                                      Divergence attaché

                                      Comme nous pouvons le voir dans le coin supérieur gauche du graphique précédent, l'expert est attaché au graphique. Nous pouvons maintenant recevoir les signaux de cet expert sur la base de la stratégie de trading suivante.

                                       En cas de divergence haussière :

                                       Signal de divergence haussière

                                      Comme nous pouvons le voir dans le coin supérieur gauche du graphique précédent, nous avons le signal généré suivant :

                                      • Divergence haussière
                                      • Plus Haut actuel
                                      • Plus Haut précédent
                                      • Valeur actuelle du DeMarker
                                      • Valeur précédente de DeMarker

                                      En cas de divergence baissière :

                                       Signal de divergence baissière

                                      Comme nous pouvons le voir dans le coin supérieur gauche du graphique précédent, nous avons le signal généré suivant :

                                      • Divergence baissière.
                                      • Plus Haut actuel
                                      • Plus Haut précédent
                                      • Valeur actuelle du DeMarker
                                      • Valeur précédente de DeMarker

                                      Conclusion

                                      Nous avons pu voir dans cet article l’indicateur technique DeMarker. Nous avons appris ce qu'il est, ce qu'il mesure, comment nous pouvons le calculer, et comment nous pouvons le lire et l'utiliser à travers des stratégies simples basées sur son concept principal. Ces stratégies simples étaient les suivantes

                                      • Force du DeMarker : pour recevoir des signaux de force ou de faiblesse basés sur la position du DeMarker actuel et sur la moyenne des 5 dernières périodes de la valeur du DeMarker.
                                      • DeMarker, OB - OS : pour recevoir des signaux de sur-achat ou de sur-vente basés sur la position de la valeur actuelle du DeMarker sur son échelle de 0 à 1.
                                      • Divergence DeMarker : pour recevoir des signaux de divergences haussières ou baissières basées sur la position du DeMarker actuel, du DeMarker précédent, du plus haut actuel et du plus haut précédent.

                                      Nous avons également conçu un plan étape par étape pour chaque stratégie afin de nous aider à créer un système de trading en douceur. Ensuite, nous avons appris le sujet le plus intéressant : nous avons créé un système de trading basé sur ce que nous avons conçu dans les plans des stratégies pour recevoir des signaux automatiquement dans MetaTrader 5.

                                      Je confirme à nouveau que vous devez tester toute stratégie avant de l'utiliser pour vous assurer qu'elle est adaptée à votre trading, car il n'existe pas de stratégie adaptée à tout le monde. J'espère que cet article vous a été utile et que vous avez obtenu des informations utiles. Si vous souhaitez lire d'autres articles similaires, vous pouvez lire mes articles précédents dans cette série pour les débutants sur les indicateurs techniques les plus courants et comment nous pouvons créer un système de trading simple basé sur ces indicateurs.

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

                                      Lancement de MetaTrader VPS pour la première fois : Instructions étape par étape Lancement de MetaTrader VPS pour la première fois : Instructions étape par étape
                                      Tous ceux qui utilisent des robots de trading ou des abonnements à des signaux reconnaissent tôt ou tard la nécessité de louer un serveur d'hébergement fiable 24 heures sur 24 et 7 jours sur 7 pour leur plateforme de trading. Nous recommandons l'utilisation de MetaTrader VPS pour plusieurs raisons. Vous pouvez facilement payer le service et gérer l'abonnement par le biais de votre compte MQL5.community. S
                                      Algorithmes d'optimisation de la population : Algorithme d'Optimisation du Coucou - Cuckoo Optimization Algorithm (COA) Algorithmes d'optimisation de la population : Algorithme d'Optimisation du Coucou - Cuckoo Optimization Algorithm (COA)
                                      Le nouvel algorithme que je considérerai est l'optimisation de la recherche de coucou à l'aide des vols de Levy. C'est l'un des derniers algorithmes d'optimisation et un nouveau leader dans le classement.
                                      Algorithmes d'optimisation de la population : Recherche en Banc de Poisson - Fish School Search (FSS) Algorithmes d'optimisation de la population : Recherche en Banc de Poisson - Fish School Search (FSS)
                                      Le Fish School Search (FSS) est un nouvel algorithme d'optimisation inspiré du comportement des poissons dans un banc, dont la plupart (jusqu'à 80%) nagent au sein d'une communauté organisée de parents. Il a été prouvé que les agrégations de poissons jouent un rôle important dans l'efficacité de la recherche de nourriture et dans la protection contre les prédateurs.
                                      Algorithmes d'optimisation de la population : Algorithme d'Optimisation du Loup Gris - Grey Wolf Optimizer (GWO) Algorithmes d'optimisation de la population : Algorithme d'Optimisation du Loup Gris - Grey Wolf Optimizer (GWO)
                                      Considérons l'un des algorithmes d'optimisation modernes les plus récents : le Grey Wolf Optimization. Le comportement original sur les fonctions de test fait de cet algorithme l'un des plus intéressants parmi ceux considérés précédemment. C'est l'un des meilleurs algorithmes à utiliser dans la formation de réseaux de neurones, des fonctions fluides avec de nombreuses variables.