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

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

MetaTrader 5Trading | 26 septembre 2023, 09:38
723 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Voici un nouvel article de notre série qui s'adresse aux débutants pour leur permettre de découvrir un nouvel outil technique et de concevoir un système de trading basé sur des stratégies simples. Il s'agit de l'indicateur Variable Index Dynamic Average (VIDYA). Cet indicateur est l'un des indicateurs de suivi de tendance qui nous pouvons utiliser dans le trading. Cet indicateur suit la tendance. Il s'agit donc d'un indicateur retardé, ce qui signifie qu'il évolue après le mouvement des prix. Nous allons couvrir cet indicateur au travers des sujets suivants :

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


Si vous souhaitez développer vos compétences en programmation, vous pouvez appliquer ce que vous avez appris par vous-même pour approfondir votre compréhension. La pratique est une étape très importante dans tout processus d'apprentissage. Nous utiliserons le langage MQL5 (MetaQuotes Language 5) qui est intégré dans le terminal de trading MetaTrader 5. Si vous ne savez pas comment le télécharger et l'utiliser, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor d'un article précédent.

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 VIDYA

Le Variable Index Dynamic Average (VIDYA) est un indicateur de suivi de tendance développé par Tushar Chande. Il ressemble à la moyenne mobile exponentielle, mais il est ajusté de manière dynamique en fonction de la volatilité relative des prix. La volatilité est mesurée par le Chande Momentum Oscillator (CMO) en mesurant le rapport entre la somme des mouvements positifs et négatifs comme nous le verrons lorsque nous apprendrons à le calculer. Le CMO est utilisé pour lisser la moyenne mobile exponentielle. Les paramètres sont la période du CMO et la période de l’EMA. Il peut être utilisé de la même manière que n'importe quelle moyenne mobile pour déterminer si la tendance est haussière ou baissière. Si vous souhaitez en savoir plus sur les types de tendance et sur la manière de les identifier, vous pouvez lire le sujet de la définition de la tendance dans un article précédent. Vous pouvez également l'utiliser pour générer des signaux d'achat ou de vente. Nous le verrons dans le cadre de la stratégie VIDYA et de quelques stratégies simples basées sur ce principe.

Nous devons maintenant apprendre à calculer l'indicateur VIDYA pour mieux comprendre le concept principal qui le sous-tend. Les étapes suivantes permettent de le calculer manuellement :

  • Calcul de l'EMA :

EMA(i) = Prix(i) * F + EMA(i-1)*(1-F)

Avec :

EMA(i) = EMA actuelle

Prix(i) = Prix actuel

F (facteur de lissage) = 2/(EMA de la période+1)

EMA(i-1) = Valeur précédente de l’EMA

  • Calcul de la valeur de la moyenne dynamique de l'indice variable (VIDYA) :

VIDYA(i) = Prix(i) * F * ABS(CMO(i)) + VIDYA(i-1) * (1 - F* ABS(CMO(i)))

Avec :

VIDYA(i) = VIDYA actuel

ABS(CMO(i)) = la valeur absolue actuelle du Chande Momentum Oscillator

VIDYA(i-1) = Valeur précédente du VIDYA

  • Calcul du Chande Momentum Oscillator (CMO) :

CMO(i) = (UpSum(i) - DnSum(i))/(UpSum(i) + DnSum(i))

Avec :

UpSum(i) = la valeur actuelle de la somme des mouvements positifs au cours de la période

DnSum(i) = la valeur actuelle de la somme des mouvements négatifs au cours de la période

Nous pouvons ensuite obtenir l'indicateur VIDYA. Aujourd'hui, il n'est plus nécessaire de le calculer manuellement. Il suffit de le choisir parmi les indicateurs disponibles sur la plateforme de trading MetaTrader 5 pour qu'il soit inséré dans le graphique. Voici comment l'insérer :

Menu Insertion --> Indicateurs --> Tendance --> Variable Index Dynamic Average

Insertion du VIDYA

La fenêtre suivante s'ouvre pour définir les paramètres de l'indicateur :

Paramètres du VIDYA

1 - la période du Chande Momentum Oscillator (CMO)

2 - la période de la moyenne mobile exponentielle (EMA)

3 - le type de prix

4 - la couleur de la ligne VIDYA

5 - le style de la ligne VIDYA

6 - l'épaisseur de la ligne VIDYA

Après avoir configuré tous les paramètres précédents et appuyé sur "OK", l'indicateur est attaché au graphique comme suit :

VIDYA attaché

Comme nous pouvons le voir dans le graphique précédent, l'indicateur est inséré dans le graphique et représente une ligne au-dessus ou au-dessous des prix en fonction de sa valeur et des mouvements de prix. Lorsque la ligne VIDYA est au-dessus du prix, cela signifie qu'il y a un contrôle baissier et vice versa, lorsque la ligne VIDYA est en dessous du prix, cela signifie qu'il y a un contrôle haussier.


Stratégie VIDYA

Dans cette rubrique, nous allons apprendre à utiliser l'indicateur VIDYA à travers de stratégies simples basées sur le concept principal de cet indicateur. Il est préférable de combiner cet indicateur avec d'autres outils ou indicateurs techniques pour obtenir des résultats plus fiables et plus efficaces. En effet, l'analyse technique vous permet d'obtenir des informations plus détaillées sous plusieurs angles, ce qui est l'une de ses caractéristiques.

    Première stratégie : Identificateur de tendance VIDYA

      Nous devons obtenir un signal avec le type de tendance, à la hausse ou à la baisse, en comparant la clôture actuelle et le VIDYA actuel avec ses paramètres par défaut (9,12). Nous devons établir un signal avec une tendance haussière si la clôture actuelle est supérieure à la VIDYA. Dans l'autre cas, nous devons obtenir un signal de tendance baissière si la clôture actuelle est inférieure à la VIDYA.

      Clôture actuelle > VIDYA --> tendance haussière

      Clôture actuelle < VIDYA --> tendance baissière

        Deuxième stratégie : VIDYA - Un Seul Croisement

          Nous devons obtenir des signaux d'achat ou de vente en comparant les mêmes valeurs que celles de la stratégie précédente. Nous devons obtenir un signal d'achat si la clôture actuelle est supérieure à la ligne VIDYA. Inversement, si la clôture actuelle est inférieure au VIDYA actuel, nous devons obtenir un signal de vente.

          Clôture actuelle > VIDYA --> Signal d'achat

          Clôture actuelle < VIDYA --> Signal de vente

            3ème stratégie : VIDYA - Deux Croisements

              Nous devons obtenir des signaux d'achat ou de vente en comparant le VIDYA avec son réglage (9, 12) et le VIDYA avec son réglage (20, 50). Nous devons obtenir un signal d'achat lorsque le VIDYA (9, 12) devient supérieur au VIDYA (20, 50). Dans l'autre cas, si le VIDYA actuel (9, 12) est inférieur au VIDYA actuel (20, 50), il s'agit d'un signal de vente.

              VIDYA (9, 12) > VIDYA (20, 50) --> Signal d'achat

              VIDYA (9, 12) < VIDYA (20, 50) --> Signal de vente

              Grâce aux 3 stratégies simples précédentes, nous avons appris à utiliser l'indicateur VIDYA en nous basant sur le concept principal qui le sous-tend.


              Plan de la stratégie VIDYA

              Dans cette rubrique, nous allons concevoir un plan détaillé qui nous aidera à créer notre système de trading pour chaque stratégie mentionnée.

                Première stratégie : Identificateur de tendance VIDYA

                  Pour cette stratégie, nous devons créer un système de trading qui peut être utilisé pour générer des signaux de type tendance. Le système de trading doit vérifier 2 valeurs : la clôture actuelle et la valeur VIDYA actuelle, pour déterminer le type de tendance. Si la valeur de clôture actuelle est supérieure à la valeur du VIDYA, cela indique que la tendance est à la hausse.

                  Nous avons donc besoin que le système de trading renvoie un commentaire sur le graphique avec les valeurs suivantes :

                  • Tendance haussière
                  • Valeur de clôture actuelle
                  • Valeur actuelle du VIDYA

                  Dans l'autre cas, si la valeur de clôture actuelle est inférieure à la valeur VIDYA actuelle, cela indique que la tendance est à la baisse.

                  Nous avons donc besoin que le système de trading renvoie un commentaire sur le graphique avec les valeurs suivantes :

                  • Tendance baissière
                  • Valeur de clôture actuelle
                  • Valeur actuelle du VIDYA

                  Voici le plan de cette stratégie :

                  Plan de l'identificateur de tendance VIDYA

                    Deuxième stratégie : VIDYA - Un Seul Croisement

                      Selon cette stratégie, nous devons créer un système de trading pour nous alerter si nous avons un signal d'achat ou de vente. Dans cette stratégie, nous utiliserons les mêmes valeurs que dans l'Identificateur de tendance VIDYA, mais pour obtenir des signaux différents. Le système de trading doit vérifier 2 valeurs : la clôture actuelle et la valeur VIDYA actuelle. Si la clôture actuelle est supérieure à la valeur VIDYA, il s'agira d'un signal d'achat.

                      Il faut donc que le système de trading renvoie les valeurs suivantes :

                      • Signal d'achat
                      • Valeur de clôture actuelle
                      • Valeur actuelle du VIDYA

                      Inversement, si la clôture actuelle est inférieure à la valeur du VIDYA actuelle, il s'agira d'un signal de vente.

                      Nous avons donc besoin que le système de trading renvoie un commentaire sur le graphique avec les valeurs suivantes :

                      • Signal de vente
                      • Valeur de clôture actuelle
                      • Valeur actuelle du VIDYA
                      Voici le plan de cette stratégie :

                      Plan VIDYA - Un Seul Croisement

                        3ème stratégie : VIDYA - Deux Croisements

                          Selon cette stratégie, nous devons créer un système de trading pour générer des signaux d'achat et de vente. Nous devons vérifier continuellement 2 valeurs : le VIDYA (9, 12) actuel et le VIDYA (20, 50) actuel. Si la valeur actuelle (9, 12) est supérieure à la valeur actuelle (20, 50), il s'agit d'un signal d'achat.

                          Il faut donc que le système de trading renvoie les valeurs suivantes :

                          • Signal d'achat
                          • Valeur de clôture actuelle
                          • Valeur actuelle du VIDYA (9, 12)
                          • Valeur actuelle du VIDYA (20, 50)

                          Dans l'autre scénario, si la valeur VIDYA (9, 12) actuelle est inférieure à la valeur VIDYA (20, 50) actuelle, il s'agira d'un signal de vente.

                          Il faut donc que le système de trading renvoie les valeurs suivantes :

                          • Signal de vente
                          • Valeur de clôture actuelle
                          • Valeur actuelle du VIDYA (9, 12)
                          • Valeur actuelle du VIDYA (20, 50)

                          Voici le plan de cette stratégie :


                          Plan VIDYA - Deux Croisements

                          Nous avons maintenant conçu un plan simple étape par étape pour chaque stratégie pour nous aider à créer notre système de trading automatisé. Nous sommes prêts à aborder le sujet le plus intéressant du système de trading VIDYA afin de créer un système de trading pour chaque stratégie. 


                          Système de trading VIDYA

                          Ce système de trading simple nous aidera à voir la valeur actuelle de l'indicateur VIDYA en permanence car elle sera affichée sous forme de commentaire sur le graphique.

                          Les étapes suivantes permettent de créer un système de trading répondant à nos besoins.

                          Nous allons créer un tableau pour le "vidyaArray", d’éléments de type double qui est l'un des types réels ou des types à virgule flottante qui représentent des valeurs avec des fractions :

                          double vidyaArray[];

                          Nous trions le tableau "vidyaArray" créé en utilisant la fonction "ArraySetAsSeries" pour renvoyer une valeur booléenne :

                          ArraySetAsSeries(vidyaArray,true);

                          Nous allons créer une variable entière "vidyaDef" qui correspondra à la définition de l'indicateur VIDYA en utilisant la fonction "iVIDyA" qui retourne le handle de l'indicateur.

                          Ses paramètres sont les suivants :

                          • symbole : nous utiliserons _Symbol pour l'appliquer au symbole actuel
                          • period : nous utiliserons _Period pour l'appliquer à la période en cours
                          • cmo_period : pour déterminer la période du Chande Momentum, nous utiliserons 9
                          • ema_period : pour déterminer la période de lissage de la moyenne mobile exponentielle, nous utiliserons 12
                          • ma_shift : pour déterminer le décalage horizontal sur le graphique si nécessaire, nous utiliserons 0
                          • applied_price : pour déterminer le type de prix, nous utiliserons le prix de clôture.
                          int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);

                          Nous allons remplir le tableau créé en utilisant la fonction "CopyBuffer" pour obtenir les données de l'indicateur VIDYA.

                          Voici les paramètres de cette fonction :

                          • indicator_handle : pour déterminer le handle de l'indicateur, nous utiliserons vidyaDef
                          • 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 : déterminer la quantité à copier, nous utiliserons 3
                          • buffer[] : pour déterminer le tableau cible à copier, nous utiliserons vidyaArray
                          CopyBuffer(vidyaDef,0,0,3,vidyaArray);

                           Nous récupérons la valeur "vidyaVal" après avoir créé une variable en utilisant la fonction "NormalizeDouble" pour renvoyer la valeur de type double.

                          Voici les paramètres de cette fonction :

                          • value : nous utiliserons vidyaArray[0] comme nombre normalisé
                          • digits : nous utiliserons 6 comme nombre de chiffres après la virgule.
                          double vidyaVal = NormalizeDouble(vidyaArray[0],6);

                          Nous utiliserons la fonction comment pour générer un commentaire sur le graphique avec la valeur VIDYA actuelle :

                          Comment("VIDYA Value is ",vidyaVal);

                          Le code complet de ce système de trading est indiqué ici :

                          //+------------------------------------------------------------------+
                          //|                                                 Simple VIDYA.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 vidyaArray[];
                          
                             ArraySetAsSeries(vidyaArray,true);
                          
                             int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                          
                             CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                          
                             double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                          
                             Comment("VIDYA Value is ",vidyaVal);
                          
                            }
                          //+------------------------------------------------------------------+

                          Après avoir compilé ce code, l'expert de ce système de trading sera visible dans le navigateur de la manière suivante :

                          VIDYA dans le Navigator

                          Après l'avoir glissé et déposé sur le graphique, la fenêtre de ce système de trading est affichée comme suit :

                          Fenêtre VIDYA Simple

                          En appuyant sur "OK", l'expert sera attaché comme ci-dessous :

                          VIDYA Simple attaché

                          Comme nous pouvons le voir sur le graphique précédent, l'expert est attaché dans le coin supérieur droit. Le signal désiré apparaît ainsi de la manière suivante :

                          Signal VIDYA Simple

                          Comme nous pouvons le voir sur le graphique précédent, le commentaire dans le coin supérieur gauche indique la valeur actuelle du VIDYA. Si nous devons nous assurer que nous avons la même valeur que celle de l'indicateur VIDYA intégré, nous pouvons, après avoir attaché l'expert, insérer l'indicateur intégré avec les mêmes paramètres que l'expert, comme suit :

                          VIDYA Simple - même signal

                          Comme nous pouvons le voir sur le graphique précédent, l'expert est attaché au graphique et est visible dans le coin supérieur droit. Nous avons la valeur actuelle de cet expert dans le coin supérieur gauche du graphique et l'indicateur intégré est attaché au graphique des prix. Il est clair que les deux valeurs sont identiques.

                            Première stratégie : Identificateur de tendance VIDYA

                              Si vous avez besoin de créer un système de trading pour cette stratégie, vous trouverez le code complet de cette stratégie :

                              //+------------------------------------------------------------------+
                              //|                                       VIDYA trend identifier.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()
                                {
                                 MqlRates priceArray[];
                                 double vidyaArray[];
                              
                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);
                              
                                 int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                              
                                 CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                              
                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                              
                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }
                              
                              
                                }
                              //+------------------------------------------------------------------+

                              Voici les différences dans ce code :

                              Création de 2 tableaux pour les prix en utilisant la fonction "MqlRates" et pour le VIDYA en utilisant le type "double" comme nous l'avons mentionné précédemment.

                                 MqlRates priceArray[];
                                 double vidyaArray[];

                              Pour le tableau des prix, nous utiliserons la fonction "CopyRates" pour obtenir les données historiques de "MqlRates". Ses paramètres sont :

                              • nom du symbole : nous utiliserons _Symbol
                              • timeframe : nous utiliserons _Period
                              • heure de début : nous utiliserons 0
                              • heure de fin : nous utiliserons 3
                              • tableau des prix : nous utiliserons priceArray

                              Pour vidyaArray, nous utiliserons la fonction "ArraySetAsSeries" de la même manière que nous l'avons mentionné précédemment :

                                 int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                 ArraySetAsSeries(vidyaArray,true);

                              Définition du cours de clôture actuel et des valeurs VIDYA actuelles :

                                 double currentClose=NormalizeDouble(priceArray[2].close,6);
                                 double vidyaVal = NormalizeDouble(vidyaArray[0],6);

                              Conditions de cette stratégie :

                              1. En cas de tendance haussière

                                 if(currentClose>vidyaVal)
                                   {
                                    Comment("Uptrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }

                              2. En cas de tendance baissière

                                 if(currentClose<vidyaVal)
                                   {
                                    Comment("Downtrend","\n",
                                            "Current Close Value is ",currentClose,"\n",
                                            "Current VIDYA Value is ",vidyaVal);
                                   }

                              Après avoir compilé ce code et l'avoir inséré dans le graphique souhaité, il sera identique à ce qui suit :

                              L'identificateur de tendance VIDYA est attaché

                              Comme nous pouvons le voir, l'identificateur de tendance expert VIDYA est attaché dans le coin supérieur droit du graphique précédent. Nous pouvons maintenant commencer à recevoir des signaux. Quelques exemples de ces signaux obtenus lors des essais sont présentés ci-dessous.

                              1. En cas de tendance haussière

                              Identificateur de tendance VIDYA - signal de tendance haussière

                              Comme nous pouvons le voir sur le graphique précédent, dans le coin supérieur gauche, nous trouvons les valeurs suivantes :

                              • Tendance haussière
                              • Valeur de clôture actuelle
                              • Valeur actuelle du VIDYA

                              2. En cas de tendance baissière

                              Identificateur de tendance VIDYA - signal de tendance baissière

                              Sur la base du tableau précédent, nous pouvons trouver les valeurs suivantes :

                              • Tendance baissière
                              • Valeur de clôture actuelle
                              • Valeur actuelle du VIDYA
                                Deuxième stratégie : VIDYA - Un Seul Croisement

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

                                  //+------------------------------------------------------------------+
                                  //|                                          VIDYA one 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"
                                  //+------------------------------------------------------------------+
                                  void OnTick()
                                    {
                                     MqlRates priceArray[];
                                     double vidyaArray[];
                                  
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                     ArraySetAsSeries(vidyaArray,true);
                                  
                                     int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                  
                                     CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                  
                                     double currentClose=NormalizeDouble(priceArray[2].close,6);
                                     double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                  
                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }
                                  
                                  
                                    }
                                  //+------------------------------------------------------------------+

                                  Voici les différences dans ce code :

                                  Commentaire basé sur cette stratégie.

                                  1. En cas de signal d'achat

                                     if(currentClose>vidyaVal)
                                       {
                                        Comment("Buy signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }

                                  2. En cas de signal de vente

                                     if(currentClose<vidyaVal)
                                       {
                                        Comment("Sell signal","\n",
                                                "Current Close Value is ",currentClose,"\n",
                                                "Current VIDYA Value is ",vidyaVal);
                                       }

                                  Après avoir compilé ce code et l'avoir inséré dans le graphique désiré :

                                  VIDYA - Un Seul Croisement attaché

                                  Comme nous pouvons le voir sur le graphique précédent, l'expert est attaché au graphique dans le coin supérieur droit. Ensuite, nous recevrons des signaux d'achat et de vente basés sur cette stratégie. Des exemples de tests du système sont présentés ci-dessous.

                                  1. En cas de signal d'achat

                                  VIDYA - Un Seul Croisement - signal d'achat

                                  Comme nous pouvons le voir sur le graphique précédent dans le coin supérieur gauche, nous pouvons trouver les valeurs suivantes basées sur le VIDYA - Un Seul Croisement :

                                  • Signal d'achat
                                  • Valeur de clôture actuelle
                                  • Valeur actuelle du VIDYA

                                  2. En cas de signal de vente

                                  VIDYA - Un Seul Croisement - signal de vente

                                  Comme nous pouvons le voir sur le graphique précédent, dans le coin supérieur gauche, nous trouvons les valeurs suivantes :

                                  • Signal de vente
                                  • Valeur de clôture actuelle
                                  • Valeur actuelle du VIDYA
                                    3ème stratégie : VIDYA - Deux Croisements

                                      Voici le code complet de cette stratégie VIDYA - Deux Croisements pour créer un système de trading :

                                      //+------------------------------------------------------------------+
                                      //|                                          VIDYA two 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"
                                      //+------------------------------------------------------------------+
                                      void OnTick()
                                        {
                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];
                                      
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);
                                      
                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);
                                      
                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);
                                      
                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }
                                      
                                      
                                        }
                                      //+------------------------------------------------------------------+

                                      Voici les différences dans ce code :

                                      Création de 3 tableaux pour les prix, vidyaArray et vidyaArray1 :

                                         MqlRates priceArray[];
                                         double vidyaArray[];
                                         double vidyaArray1[];

                                      Tri des tableaux créés :

                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                         ArraySetAsSeries(vidyaArray,true);
                                         ArraySetAsSeries(vidyaArray1,true);

                                      Définition de "vidyaDef" et "vidyaDef1" :

                                         int vidyaDef = iVIDyA(_Symbol,_Period,9,12,0,PRICE_CLOSE);
                                         int vidyaDef1 = iVIDyA(_Symbol,_Period,20,50,0,PRICE_CLOSE);

                                      Remplissage des tableaux "vidyaArray" et " vidyaArray1" :

                                         CopyBuffer(vidyaDef,0,0,3,vidyaArray);
                                         CopyBuffer(vidyaDef1,0,0,3,vidyaArray1);

                                      Définition des valeurs de currentClose, "vidyaVal" et "vidyaVal1" :

                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                         double vidyaVal = NormalizeDouble(vidyaArray[0],6);
                                         double vidyaVal1 = NormalizeDouble(vidyaArray1[0],6);

                                      Conditions des signaux basés sur cette stratégie :

                                      1. En cas de signal d'achat

                                         if(vidyaVal>vidyaVal1)
                                           {
                                            Comment("Buy signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }

                                      2. En cas de signal de vente

                                         if(vidyaVal<vidyaVal1)
                                           {
                                            Comment("Sell signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current VIDYA (9,12) Value is ",vidyaVal,"\n",
                                                    "Current VIDYA (20,50) Value is ",vidyaVal1);
                                           }

                                      Après avoir compilé ce code et l'avoir inséré dans le graphique souhaité, il sera identique à ce qui suit :

                                      VIDYA - Deux Croisements attaché

                                      Comme nous pouvons le voir sur le graphique précédent, dans le coin supérieur droit, l'expert est attaché au graphique. Maintenant, nous pouvons voir les signaux d'achat et de vente basés sur cette stratégie. Quelques exemples de tests du système sont présentés ci-dessous.

                                      En cas de signal d'achat :

                                      VIDYA - Deux Croisements - signal d'achat

                                      Comme nous pouvons le voir sur le graphique précédent, dans le coin supérieur gauche, nous avons les valeurs suivantes après le croisement :

                                      • Signal d'achat
                                      • Valeur de clôture actuelle
                                      • Valeur actuelle du VIDYA (9,12)
                                      • Valeur actuelle du VIDYA (20,50)

                                      En cas de signal de vente :

                                      VIDYA - Deux Croisements - signal de vente

                                      Dans l'autre scénario, comme nous pouvons le voir sur le graphique précédent dans le coin supérieur gauche, nous avons les valeurs suivantes après le croisement :

                                      • Signal de vente
                                      • Valeur de clôture actuelle
                                      • Valeur actuelle du VIDYA (9,12)
                                      • Valeur actuelle du VIDYA (20,50)


                                      Conclusion

                                      Après tous les sujets mentionnés, on considère que vous savez maintenant ce qu'est la Moyenne Dynamique à Indice Variable (ou VIDYA) en détail. Nous avons identifié ce qu'est l'indicateur Variable Index Dynamic Average (VIDYA), ce qu'il mesure, comment le calculer manuellement pour comprendre le concept principal qui le sous-tend, et comment nous l'insérons dans le graphique et le lisons. Nous avons appris tout cela grâce à la définition du VIDYA. Nous avons ensuite appris comment l'utiliser au moyen de stratégies simples basées sur le concept principal de l'indicateur, en apprenant les stratégies suivantes dans le cadre de la stratégie VIDYA :

                                      • Stratégie d'identification de tendance VIDYA : pour obtenir des signaux avec le type de tendance s'il y a une tendance haussière ou baissière.
                                      • Stratégie VIDYA Un seul croisement : pour obtenir des signaux d'achat ou de vente basés sur le croisement entre les prix et la ligne VIDYA.
                                      • Stratégie VIDYA Deux croisements : pour obtenir des signaux d'achat ou de vente basés sur le croisement entre le VIDYA avec des paramètres de (9,12) et le VIDYA avec des paramètres de (20, 50).

                                      J'espère que vous avez essayé d'écrire par vous-même le code des systèmes de trading conçus pour développer vos compétences en programmation en tant que débutant, car cette pratique est une étape très importante dont vous avez besoin pour approfondir votre compréhension et améliorer vos compétences non seulement en programmation. Je n'oublierai pas de confirmer que vous devez tester toute stratégie avant de l'utiliser sur votre compte réel avec de l'argent réel car le concept principal de cet article est à des fins éducatives uniquement. Vous pouvez trouver que vous avez besoin d'optimiser ou de changer ou vous pouvez trouver qu'ils ne conviennent pas à votre style de trading car il n'y a pas de stratégie appropriée pour tout le monde.

                                      J'espère que cet article vous a été utile et qu'il vous a donné un bon aperçu du sujet de l'article ou de tout autre sujet connexe. Si vous souhaitez lire d'autres articles similaires pour en savoir plus sur les indicateurs techniques les plus populaires, comment les utiliser et comment concevoir un système de trading pour eux, vous pouvez lire mes articles précédents dans cette série pour les débutants afin d'en savoir plus. Vous pourrez trouver des articles sur la conception d'un système de trading basé sur le RSI, le MACD, la Stochastique, les Moyennes mobiles, les Bandes de Bollinger, les Enveloppes... et d'autres après avoir appris et compris plus en détail ces indicateurs techniques.

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

                                      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.
                                      Apprenez à concevoir un système de trading basé sur le Pouvoir des Haussiers (Bulls Power) Apprenez à concevoir un système de trading basé sur le Pouvoir des Haussiers (Bulls Power)
                                      Bienvenue dans ce nouvel article de notre série sur l'apprentissage de la conception d'un système de trading à l'aide des indicateurs techniques les plus populaires. Nous allons découvrir dans cet article un nouvel indicateur technique et comment nous pouvons concevoir un système de trading à l'aide de cet indicateur, le Bulls Power.
                                      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.
                                      Développer un Expert Advisor de trading à partir de zéro (Partie 21) : Nouveau système d'ordres (IV) Développer un Expert Advisor de trading à partir de zéro (Partie 21) : Nouveau système d'ordres (IV)
                                      Le système visuel commence enfin à fonctionner, même s'il n'est pas encore achevé. Nous allons terminer ici les principales modifications. Il y en aura plusieurs, mais elles sont toutes nécessaires. L'ensemble du travail sera très intéressant.