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

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

MetaTrader 5Trading | 5 février 2024, 10:23
735 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Voici un nouvel article de notre série sur la façon de concevoir un système de trading basé sur les indicateurs techniques les plus populaires. Dans cet article, nous apprendrons en détail l'indicateur Alligator en apprenant ce qu'il est, qu'il mesure, comment nous pouvons le calculer et comment nous pouvons le lire et l'utiliser. Ensuite, nous créerons un système de trading basé sur quelques stratégies simples basées sur l'objectif principal de cet indicateur. Nous allons couvrir cet indicateur au travers des sujets suivants :

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

Je vous conseille d'essayer d'appliquer ce que vous avez appris par vous-même notamment les codes de cet article pour développer vos compétences en programmation car c'est une étape importante pour atteindre cet objectif de développement. Nous utiliserons dans cet article l'IDE MQL5 (MetaQuotes Language 5) qui est intégré au terminal de trading MetaTrader 5. Si vous ne savez pas comment télécharger MetaTrader 5 et comment utiliser MQL5, vous pouvez lire le sujet de l'écriture du code MQL5. dans MetaEditor pour en savoir plus.

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 de l’Alligator

L'indicateur technique Alligator, développé par Bill Williams, suit les tendances. Il est basé sur le fait que la tendance n'est pas la plus longue période des instruments des marchés financiers et qu'elle ne représente que 15 à 30% du temps, alors que les déplacements latéraux des pris occupent 70 à 85% du temps. Nous avons ainsi parfois une tendance soit à la hausse, soit à la baisse, mais la plupart du temps nous avons des périodes variables. Si vous souhaitez en savoir plus sur les tendances, leurs types et comment nous pouvons les identifier, vous pouvez lire la définition des tendancesde mon article précédent. Cet article vous sera utile dans ce contexte. Il utilise certains nombres de Fibonacci dans le calcul comme nous le verrons : 3 moyennes mobiles lissées sur 5, 8 et 13 périodes. Voici les 3 moyennes mobiles lissées de l'indicateur Alligator :

  • La Mâchoire de l'Alligator (Jaw)
  • Les Dents de l’Alligator (Teeth)
  • Les Lèvres de l'Alligator (Lips)

Cet indicateur peut être calculé manuellement en suivant les étapes suivantes :

La Mâchoire de l'Alligator = SMMA (Prix médian, 13, 8)

Les Dents de l'Alligator = SMA (Prix médian, 8, 5)

Les Lèvres de l’Alligator = SMMA (Prix médian, 5, 3)

Prix ​​médian = (Haut + Bas)/2

Avec :

SMMA = Moyenne Mobile lissée

Prix ​​médian = le prix médian des données

Haut = le prix le plus élevé

Bas = le prix le plus bas

Suite aux étapes précédentes, nous obtiendrons l'indicateur Alligator. Nous n'avons pas besoin de le calculer manuellement car il est disponible comme indicateur intégré dans le terminal MetaTrader 5. Nous n’avons qu’à le choisir parmi les indicateurs techniques disponibles :

Lors de l'ouverture du terminal MetaTrader 5, aller sur Insertion --> Indicateurs --> Bill Williams --> Alligator.

Insertion de l’Alligator

La fenêtre des paramètres sera alors affichée :

 Paramètres de l’Alligator

1 - la période des Mâchoires de l'Alligator.

2 - le décalage horizontal des Mâchoires de l'Alligator.

3 - la période des Dents de l'Alligator.

4 - le décalage horizontal des Dents de l'Alligator.

5 - la période des Lèvres de l'Alligator.

6 - le décalage horizontal des Lèvres de l'Alligator.

7 - la méthode de lissage.

8 - le type de prix utilisable.

Grâce à la fenêtre suivante, nous pouvons déterminer le style de l'indicateur :

 Paramètres de l’Alligator 1

1 - la couleur de la ligne des Mâchoires.

2 - le type de ligne des Mâchoires.

3 - l'épaisseur de la ligne des Mâchoires.

4 - la couleur de la ligne des Dents.

5 - le type de ligne des Dents.

6 - l'épaisseur de la ligne des Dents.

7 - la couleur du trait des Lèvres.

8 - le type de ligne des Lèvres.

9 - l'épaisseur de la ligne des Lèvres.

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

 Alligator attaché au graphique

Comme nous pouvons le voir dans le graphique précédent, l'indicateur est attaché au graphique et 3 lignes sont dessinées :

1 - Les Lèvres de l'Alligator

2 - les Dents de l'Alligator

3 - Les Mâchoires de l'Alligator

On peut lire l'indicateur simplement en observant la position de ces lignes à partir des prix. Si le prix est au-dessus des Lèvres, des Dents, puis des Mâchoires, la tendance est à la hausse. Si le prix est en dessous des Lèvres, des Dents, puis des Mâchoires, la tendance est à la baisse. Si le prix évolue sur les 3 lignes, nous avons une tendance latérale.

Stratégie Alligator

Il existe de nombreuses façons d'utiliser l'indicateur Alligator dans le trading. Je mentionnerai des stratégies simples qui peuvent être utilisées sur la base de l'idée principale de ce sujet à des fins éducatives. Vous devez les tester avant de les utiliser dans votre compte réel pour vous assurer qu'elles sera rentable. Vous constaterez peut-être que vous devez optimiser ces stratégies. Il est normal que vous puissiez le faire pour atteindre la meilleure formule qui peut être utile pour votre style de trading.

    Première stratégie : Identificateur de Tendance Alligator

      Sur la base de cette stratégie, nous devons obtenir des signaux haussiers et baissiers en fonction de conditions spécifiques. Si la valeur des Lèvres est supérieure à la valeur des Dents et à la valeur des Mâchoires, et que, en même temps, la valeur des Dents est supérieure à la valeur des Mâchoires, ce sera un signal haussier. Dans d’autres cas, si la valeur des Lèvres est inférieure à la valeur des Dents et à la valeur des Mâchoires, et que, en même temps, la valeur des Dents est inférieure à la valeur des Mâchoires, ce sera un signal baissier.

      Lèvres > valeur des Dents, Lèvres > valeur des Mâchoires et Dents > valeur des Mâchoires --> haussier

      Lèvres < valeur des Dents, Lèvres < valeur des Mâchoires et Dents < valeur des Mâchoires --> baissier

        Deuxième stratégie : Système de Signaux Alligator

          Sur la base de cette stratégie, nous devons obtenir des signaux d’achat et de vente en fonction du croisement entre les valeurs des Lèvres, des Dents et de la Mâchoire. Si la valeur des Lèvres est supérieure à la valeur des Dents et à la valeur de la Mâchoire, ce sera un signal d'achat. Dans l’autre scénario, si la valeur des Lèvres est inférieure à la valeur des Dents et des Mâchoires, ce sera un signal de vente.

          Lèvres > valeur des Dents, Lèvres > valeur des Mâchoires --> acheter

          Lèvres < valeur des Dents, Lèvres < valeur des Mâchoires --> vendre

            3ème stratégie : Amélioration du Système de Signaux Alligator

              Sur la base de cette stratégie, nous devons obtenir des signaux d'achat et de vente basés sur le croisement entre les Lèvres, les Dents et les Mâchoires, puis le croisement entre le cours de clôture et la valeur des Dents. Si la ligne des Lèvres est plus basse que les Dents et la Mâchoire, et que le prix de clôture est supérieur à la valeur des Dents, ce sera un signal d'achat. Dans l’autre cas, si la ligne des Lèvres est supérieure aux Dents et à la Mâchoire alors le cours de clôture est inférieur à la valeur des Dents, ce sera un signal de vente.

              Lèvres < valeur des Dents, Lèvres < valeur des Mâchoires et cours de clôture > Dents --> acheter

              Lèvres > valeur des Dents, Lèvres > valeur des Mâchoires et cours de clôture < Dents --> vendre

              Plan de la stratégie Alligator

              Nous devons maintenant créer un système de trading basé sur les stratégies mentionnées dans le sujet précédent. Pour cela nous allons concevoir un plan étape par étape.

                Première stratégie : Identificateur de Tendance Alligator

                  Selon cette stratégie, nous devons créer un système de trading qui peut être utilisé pour générer des signaux haussiers ou baissiers basés sur la vérification continue des valeurs suivantes :

                  • Valeur des Lèvres
                  • Valeur des Dents
                  • Valeur des Mâchoires

                  Nous avons besoin que le système de trading détermine les positions de ces valeurs afin de générer des signaux appropriés sur cette base. Si la ligne des Lèvres est supérieure aux Dents et à la Mâchoires et que la ligne des Dents est supérieure aux Mâchoires, le système de trading doit nous renvoyer dans ce cas les valeurs suivantes sous la forme d’un commentaire sur le graphique :

                  • Haussier
                  • Valeur des Mâchoires = n
                  • Valeur des Dents = n
                  • Valeur des Lèvres = n

                  Dans l’autre cas, si la ligne des Lèvres est plus basse que la ligne des Dents et que la ligne des Mâchoires, et si en même temps, la ligne des Dents est plus basse que la ligne des Mâchoires, le système de trading doit nous renvoyer dans ce cas les valeurs suivantes sous la forme d’un commentaire sur le graphique :

                  • Baissier
                  • Valeur des Mâchoires = n
                  • Valeur des Dents = n
                  • Valeur des Lèvres = n

                  Ce qui suit est le plan étape par étape de ce système de trading :

                  Plan de l’Identificateur de Tendance Alligator

                    Deuxième stratégie : Système de Signaux Alligator

                      Selon cette stratégie, nous devons créer un système de trading qui puisse être utilisé pour générer des signaux d'achat ou de vente basés sur la vérification continue des valeurs suivantes :

                      • Valeur des Lèvres
                      • Valeur des Dents
                      • Valeur des Mâchoires

                      Si la ligne des Lèvres est supérieure à la valeur des Dents et à la valeur des Mâchoires, le système de trading doit nous renvoyer dans ce cas un commentaire sur le graphique avec les valeurs suivantes :

                      • Acheter
                      • Valeur des Mâchoires = n
                      • Valeur des Dents = n
                      • Valeur des Lèvres = n

                      Dans l'autre cas, si la ligne des Lèvres est inférieure à la valeur des Dents et à la ligne des Mâchoires, le système de trading doit nous renvoyer un signal avec les valeurs suivantes :

                      • Vendre
                      • Valeur des Mâchoires = n
                      • Valeur des Dents = n
                      • Valeur des Lèvres = n

                      Ce qui suit est le plan étape par étape de ce système de trading :

                      Plan du Système de Signaux Alligator

                        3ème stratégie : Amélioration du Système de Signaux Alligator

                          Selon cette stratégie, nous devons créer un système de trading pour générer des signaux d'achat et de vente basés sur la vérification des valeurs suivantes :

                          • Valeur des Lèvres
                          • Valeur des Dents
                          • Valeur des Mâchoires
                          • Prix de clôture

                          Si la valeur des Lèvres est inférieure à celle des Dents et celle des Mâchoires et si le cours de clôture est devenu supérieur à la valeur des Dents, le système de trading nous renvoyer un commentaire sur le graphique comme signal avec les valeurs suivantes :

                          • Acheter
                          • Valeur des Lèvres = n
                          • Valeur des Dents = n
                          • Cours de clôture = n
                          • Valeur des Mâchoires = n

                          Si la ligne des Lèvres est supérieure à la ligne des Dents et à la ligne des Mâchoires et si le cours de clôture est devenu inférieur à la valeur des Dents, le système de trading doit renvoyer un commentaire sur le graphique comme signal avec les valeurs suivantes :

                          • Vendre
                          • Valeur des Lèvres = n
                          • Valeur des Dents = n
                          • Cours de clôture = n
                          • Valeur des Mâchoires = n

                          Ce qui suit est le plan étape par étape de ce système de trading :

                          Plan des Améliorations du Système de Signaux Alligator

                          Système de trading Alligator

                          Nous allons maintenant créer un système de trading pour chaque stratégie mentionnée, à exécuter dans le terminal MetaTrader 5 afin de générer automatiquement les signaux souhaités. Nous allons tout d’abord créer un système de trading de base pour générer un signal suivant les valeurs des composants de l’Alligator à utiliser dans notre système trading. Voici les étapes à suivre pour créer ce type de système :

                          Création des tableaux pour chacun des composants de l'Alligator (Lèvres, Dents et Mâchoires).

                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[]; 

                          Tri des données dans ces tableaux à l'aide de la fonction "ArraySetAsSeries". Ses paramètres sont :

                          • array[]
                          • flag
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);

                          Définition de l'Alligator avec la fonction "iAlligator". Ses paramètres sont :

                          • symbol : nous utiliserons _Symbol pour l'appliquer au symbole actuel.
                          • period : nous utiliserons _Period pour l’appliquer à la période actuelle.
                          • jaw_period : pour déterminer la période du calcul des Mâchoires, nous utiliserons 13.
                          • jaw_shift : pour déterminer le décalage horizontal des Mâchoires, nous utiliserons 8.
                          • teeth_period : pour déterminer la période de calcul des Dents, nous utiliserons 8.
                          • teeth_shift : pour déterminer le décalage horizontal des Dents, nous utiliserons 5.
                          • lip_period : pour déterminer la période du calcul des Lèvres, on utilisera 5.
                          • lip_shift : pour déterminer le décalage horizontal des Lèvres, nous utiliserons 3.
                          • ma_method : pour déterminer le type de moyenne mobile, nous utiliserons MODE_SMA.
                          • apply_price : pour déterminer le type de prix, nous utiliserons PRICE_MEDIAN.
                          int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);

                          Définition des données et stockage des résultats à l'aide de la fonction "CopyBuffer". Ses paramètres sont :

                          • indicator_handle : pour déterminer le handle de l'indicateur, nous utiliserons alligatorDef.
                          • buffer_num : pour déterminer le numéro du tampon de l’indicateur, nous utiliserons 0 pour les Mâchoires, 1 pour les Dents et 2 pour les Lèvres.
                          • 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 destination de la copie, nous utiliserons jawsArray, teethArray et lipsArray.
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);

                          Obtention de la valeur des 3 composants.

                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);

                          Affichage du commentaire avec les 3 composantes de l’indicateur.

                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);

                          Voici le code complet permettant de créer ce système de trading simple :

                          //+------------------------------------------------------------------+
                          //|                                      Simple Alligator System.mq5 |
                          //|                                  Copyright 2022, MetaQuotes Ltd. |
                          //|                                             https://www.mql5.com |
                          //+------------------------------------------------------------------+
                          #property copyright "Copyright 2022, MetaQuotes Ltd."
                          #property link      "https://www.mql5.com"
                          #property version   "1.00"
                          //--------------------------------------------------------------------
                          void OnTick()
                            {
                             //creating price array
                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[];   
                             //Sorting data
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);
                             //define Alligator
                             int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);      
                             //define data and store result
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);
                             //get value of current data
                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);
                             //comment on the chart
                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);
                            }
                          //+------------------------------------------------------------------+

                          Après avoir compilé ce code, nous le retrouverons dans le Navigateur dans le dossier Expert Advisors comme suit :

                          Système Alligator Simple dans le Navigateur

                          En le glissant-déposant sur le graphique souhaité, la fenêtre de cet EA est affichée :

                          Fenêtre du Système Alligator Simple

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

                          Système Alligator Simple attaché

                          Comme nous pouvons le voir sur le graphique précédent dans le coin supérieur droit, l'EA est attaché. Nous sommes maintenant prêts à recevoir des signaux. Voici un exemple de test pour vérifier les signaux générés.

                           Signal du Système Alligator Simple

                          Comme nous pouvons le voir dans le graphique précédent, un commentaire est affiché dans le coin supérieur gauche avec les valeurs suivantes :

                          Valeur des Mâchoires = n

                          Valeur des Dents = n

                          Valeur des Lèvres = n

                            Première stratégie : Identificateur de Tendance Alligator

                              Nous pouvons créer un système de trading basé sur cette stratégie identique au code complet suivant :

                              //+------------------------------------------------------------------+
                              //|                                   Alligator 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()
                                {
                              //creating three arrays of Alligator components
                                 double jawsArray[];
                                 double teethArray[];
                                 double lipsArray[];
                              //Sorting data
                                 ArraySetAsSeries(jawsArray,true);
                                 ArraySetAsSeries(teethArray,true);
                                 ArraySetAsSeries(lipsArray,true);
                              //define Alligator
                                 int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                              //define data and store result
                                 CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                 CopyBuffer(alligatorDef,1,0,13,teethArray);
                                 CopyBuffer(alligatorDef,2,0,13,lipsArray);
                              //get value of current data
                                 double jawsValue=NormalizeDouble(jawsArray[0],5);
                                 double teethValue=NormalizeDouble(teethArray[0],5);
                                 double lipsValue=NormalizeDouble(lipsArray[0],5);
                              //conditions of strategy
                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Différences dans ce code.

                              Conditions de la stratégie, en cas de hausse :

                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

                              En cas de baisse :

                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

                              Après avoir compilé ce code et exécuté l'Expert Advisor, nous constaterons que cet EA est attaché au graphique de la même manière :

                              Identificateur de Tendance Alligator attaché

                              Comme nous pouvons le voir dans le graphique précédent, l'EA est attaché au graphique dans le coin supérieur droit. Nous sommes prêts à recevoir nos signaux haussiers ou baissiers basés sur cette stratégie. Voici des exemples de ces signaux :

                              En cas de hausse :

                              Identificateur de Tendance Alligator - signal haussier

                              Comme nous pouvons le voir dans le graphique précédent, un commentaire est affiché comme signal dans le coin supérieur droit avec les valeurs suivantes :

                              • Haussier
                              • Valeur des Mâchoires = n
                              • Valeur des Dents = n
                              • Valeur des Lèvres = n 
                              Nous avons 3 lignes qui évoluent en dessous des prix. Nous avons donc reçu un signal haussier.

                              En cas de baisse :

                               Identificateur de Tendance Alligator - signal baissier

                              Comme nous pouvons le voir dans le graphique précédent, nous avons un commentaire comme signal baissier dans le coin supérieur droit avec les valeurs suivantes :

                              • Baissier
                              • Valeur des Mâchoires = n
                              • Valeur des Dents = n
                              • Valeur des Lèvres = n

                              Nous avons 3 lignes évoluant au-dessus des prix, nous avons donc reçu un signal baissier.

                                Deuxième stratégie : Système de Signaux Alligator

                                  Le code suivant permet de créer un système de trading basé sur cette stratégie :

                                  //+------------------------------------------------------------------+
                                  //|                                    Alligator Signals System .mq5 |
                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                  //|                                             https://www.mql5.com |
                                  //+------------------------------------------------------------------+
                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                  #property link      "https://www.mql5.com"
                                  #property version   "1.00"
                                  //+------------------------------------------------------------------+
                                  void OnTick()
                                    {
                                  //creating three arrays of Alligator components
                                     double jawsArray[];
                                     double teethArray[];
                                     double lipsArray[];
                                  //Sorting data
                                     ArraySetAsSeries(jawsArray,true);
                                     ArraySetAsSeries(teethArray,true);
                                     ArraySetAsSeries(lipsArray,true);
                                  //define Alligator
                                     int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                  //define data and store result
                                     CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                     CopyBuffer(alligatorDef,1,0,13,teethArray);
                                     CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                  //get value of current data
                                     double jawsValue=NormalizeDouble(jawsArray[0],5);
                                     double teethValue=NormalizeDouble(teethArray[0],5);
                                     double lipsValue=NormalizeDouble(lipsArray[0],5);
                                  //conditions of strategy
                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

                                  Différences dans ce code.

                                  Conditions de cette stratégie.

                                  En cas de signal d'achat :

                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

                                  En cas de signal de vente :

                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

                                  Après avoir compilé ce code et l'avoir exécuté dans le terminal de trading, nous pouvons le trouver attaché au graphique comme suit :

                                  Système de Signaux Alligator attaché

                                  Nous voyons dans le coin supérieur droit du graphique précédent que l'EA est attaché. Nous sommes prêts à recevoir nos signaux d'achat ou de vente basés sur cette stratégie. Voici des exemples de tests.

                                  En cas de signal d'achat :

                                  Système de Signaux Alligator - signal d’achat

                                   

                                  Comme nous pouvons le voir, nous avons le signal souhaité avec les valeurs suivantes :

                                  • Acheter
                                  • Valeur des Mâchoires = n
                                  • Valeur des Dents = n
                                  • Valeur des Lèvres = n
                                  Nous avons 3 lignes évoluant en dessous des prix, nous avons donc reçu un signal d'achat.

                                  En cas de signal de vente :

                                  Système de Signaux Alligator - signal de vente

                                  Nous avons notre signal souhaité avec les valeurs suivantes :

                                  • Vendre
                                  • Valeur des Mâchoires = n
                                  • Valeur des Dents = n
                                  • Valeur des Lèvres = n

                                  Nous avons 3 lignes qui évoluent au-dessus des prix, nous avons donc reçu un signal de vente.

                                    3ème stratégie : Amélioration du Système de Signaux Alligator

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

                                      //+------------------------------------------------------------------+
                                      //|                         Alligator Signals System Enhancement.mq5 |
                                      //|                                  Copyright 2022, MetaQuotes Ltd. |
                                      //|                                             https://www.mql5.com |
                                      //+------------------------------------------------------------------+
                                      #property copyright "Copyright 2022, MetaQuotes Ltd."
                                      #property link      "https://www.mql5.com"
                                      #property version   "1.00"
                                      //+------------------------------------------------------------------+
                                      void OnTick()
                                        {
                                      //creating three arrays of Alligator components
                                         double jawsArray[];
                                         double teethArray[];
                                         double lipsArray[];
                                         MqlRates pArray[];
                                      //Sorting data
                                         ArraySetAsSeries(jawsArray,true);
                                         ArraySetAsSeries(teethArray,true);
                                         ArraySetAsSeries(lipsArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                      //define Alligator
                                         int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                      //define data and store result
                                         CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                         CopyBuffer(alligatorDef,1,0,13,teethArray);
                                         CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                      //get value of current data
                                         double jawsValue=NormalizeDouble(jawsArray[0],5);
                                         double teethValue=NormalizeDouble(teethArray[0],5);
                                         double lipsValue=NormalizeDouble(lipsArray[0],5);
                                      //conditions of strategy
                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                        }
                                      //+------------------------------------------------------------------+

                                      Différences dans ce code.

                                      Création d'un tableau supplémentaire pour les prix à l'aide de la fonction « MqlRates » pour stocker des informations sur les prix, les volumes et la répartition.

                                      MqlRates pArray[];

                                      Obtention des données historiques de MqlRates en utilisant "CopyRates". Ses paramètres sont :

                                      • symbol_name : pour déterminer le nom du symbole, nous utiliserons _Symbol.
                                      • timeframe : pour déterminer la période, nous utiliserons _period.
                                      • start_pos : pour déterminer la position de départ, nous utiliserons 0.
                                      • count : pour déterminer le nombre de données à copier, nous utiliserons 1.
                                      • rate_array[] : pour déterminer le tableau destination de la copie, nous utiliserons pArray.
                                      int Data=CopyRates(_Symbol,_Period,0,1,pArray);

                                      Conditions de la stratégie.

                                      En cas de signal d'achat :

                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

                                      En cas de signal de vente :

                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

                                      Après avoir compilé ce code et exécuté l'EA, il sera attaché au graphique comme ci-dessous pour obtenir nos signaux d'achat et de vente.

                                       Amélioration du Système de Signaux Alligator attaché

                                      L’EA est attaché comme on peut le voir dans le coin supérieur droit. Nous pouvons recevoir les signaux souhaités. Voici des exemples de tests.

                                      En cas de signal d'achat :

                                       Amélioration du Système de Signaux Alligator - signal d’achat

                                      Nous avons un commentaire dans le coin supérieur gauche avec les valeurs suivantes :

                                      • Acheter
                                      • Valeur des Mâchoires = n
                                      • Valeur des Dents = n
                                      • Cours de clôture = n
                                      • Valeur des Lèvres = n 
                                      Comme 3 lignes évoluent au-dessus des prix, nous pouvons constater que le prix de clôture est au-dessus de la ligne des Dents de l'Alligator.

                                      En cas de signal de vente :

                                       Amélioration du Système de Signaux Alligator - signal de vente

                                      Nous avons un commentaire comme signal dans le coin supérieur gauche :

                                      • Vendre
                                      • Valeur des Mâchoires = n
                                      • Valeur des Dents = n
                                      • Cours de clôture = n
                                      • Valeur des Lèvres = n

                                      Comme 3 lignes évoluent en dessous des prix, nous pouvons constater que le cours de clôture est en dessous de la ligne des Dents de l’Alligator.

                                      Conclusion

                                      Nous avons découvert en détail dans cet article l'indicateur technique Alligator qui peut être utilisé pour confirmer la tendance en plus de générer des signaux d'achat et de vente. Nous avons appris comment le calculer manuellement et comment l'utiliser avec des stratégies simples :

                                      • Identificateur de Tendance Alligator : Pour générer des signaux haussiers ou baissiers en fonction de la position des 3 lignes de l'Alligator (Lèvres, Dents et Mâchoires).
                                      • Système de Signaux de l’Alligator : Pour générer des signaux d'achat ou de vente par la méthode classique de croisement basée sur le croisement entre les 3 lignes de l'indicateur.
                                      • Amélioration du Système de Signaux de l’Alligator : Pour générer des signaux d'achat ou de vente par une autre méthode pour obtenir ces signaux plus tôt en fonction de la position des 3 lignes de l'indicateur et du croisement entre le cours de clôture et les Dents. 

                                      Nous avons conçu un plan étape par étape pour chaque stratégie mentionnée afin de nous aider à organiser nos idées pour créer un système de trading fluide, simple et efficace. Nous avons également créé un système de trading pour chaque stratégie, à utiliser dans le terminal de trading MetaTrader 5 pour générer automatiquement des signaux. Je dois rappeler ici encore que vous devez tester toute stratégie avant de l'utiliser sur votre compte réel pour vous assurer qu'elle est utile et rentable pour vous. Rien ne convient à tout le monde en même temps. L'objectif principal de fins d'éducation.

                                      J'espère que vous avez essayé d'appliquer ce que vous avez appris par vous-même de la même manière. Je vous ai conseillé d'améliorer vos compétences en codage et de tirer pleinement parti de la lecture de cet article. J'espère que vous l'avez trouvé utile pour votre trading et que vous avez obtenu des informations utiles sur le sujet de cet article. article ou même tout sujet connexe. Si vous souhaitez lire d'autres articles similaires, vous pouvez lire mes articles précédents de cette série car nous avons partagé les indicateurs techniques les plus populaires tels que stochastiques, RSI, bandes de Bollinger, moyennes mobiles, enveloppes, MACD, ADX, etc., et comment nous pouvons créer un système de trading basé sur eux.

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

                                      Développer un Expert Advisor de trading à partir de zéro (Partie 24) : Assurer la robustesse du système (I) Développer un Expert Advisor de trading à partir de zéro (Partie 24) : Assurer la robustesse du système (I)
                                      Dans cet article, nous allons rendre le système plus fiable afin d’en garantir une utilisation robuste et sûre. L'un des moyens d'obtenir la robustesse souhaitée est d'essayer de réutiliser le code autant que possible afin qu'il soit constamment testé dans différents cas. Mais ce n'est qu'un moyen parmi d'autres. Une autre solution consiste la POO.
                                      Envelopper les modèles ONNX dans des classes Envelopper les modèles ONNX dans des classes
                                      La programmation orientée objet permet de créer un code plus compact, facile à lire et à modifier. Nous examinerons ici l'exemple de 3 modèles ONNX.
                                      Évaluation des modèles ONNX à l'aide de mesures de régression Évaluation des modèles ONNX à l'aide de mesures de régression
                                      La régression consiste à prédire une valeur réelle à partir d'un exemple non étiqueté. Les mesures dites de régression sont utilisées pour évaluer la précision des prédictions des modèles de régression.
                                      Matrices et vecteurs en MQL5 : Fonctions d'activation Matrices et vecteurs en MQL5 : Fonctions d'activation
                                      Nous ne décrirons ici qu'un seul des aspects de l'apprentissage automatique, à savoir les fonctions d'activation. Dans les réseaux neuronaux artificiels, la fonction d'activation d'un neurone calcule la valeur d'un signal de sortie en fonction des valeurs d'un signal d'entrée ou d'un ensemble de signaux d'entrée. Nous nous pencherons sur les rouages du processus.