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

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

MetaTrader 5Trading | 8 janvier 2024, 12:50
1 034 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. Nous apprendrons dans cet article un nouvel outil technique qui peut être utilisé en notre faveur dans le trading. Nous allons faire connaissance en détail avec l'indicateur Accelerator Oscillator (AC) : nous apprendrons ce qu'il est, ce qu'il mesure, comment il peut être calculé, comment le lire et l'utiliser également à travers des stratégies de trading simples, puis comment créer un système de trading basé sur celles-ci.

Les sujets suivants seront notre chemin pour en savoir plus sur cet indicateur :

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

Nous utiliserons le MQL5 (MetaQuotes Language 5) pour écrire nos codes, qui est intégré au terminal de trading MetaTrader 5 et qui sera utilisé pour exécuter notre système de trading. Si vous ne savez pas comment télécharger MetaTrader 5 et comment utiliser MQL5, vous pouvez lire le sujet de l'écriture de code MQL5 dans MetaEditor dans un article précédent pour en savoir plus à ce sujet. Toutes les stratégies mentionnées ici sont conçues à des fins éducatives uniquement. Vous devez les tester avant de les utiliser dans votre compte réel pour vous assurer qu'elles sont rentables et adaptées à vous. Je vous conseille d'essayer d'appliquer ce que vous avez appris si vous souhaitez améliorer votre stratégie. compétences en trading et en codage. C’est une étape importante car elle sera utile pour tirer pleinement parti de cet article.

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’Accelerator Oscillator

L'Oscillateur Accélérateur (AC) est un indicateur de dynamique développé par Bill Williams. Il mesure s'il y a un changement de dynamique. Si l'élan d'une tendance haussière diminue, cela peut signifier qu'il y a moins d'intérêt pour acheter l'instrument. Dans ce cas, nous pouvons observer un mouvement différent dans le sens opposé de la vente. Et vice versa : si l'élan d'une tendance baissière diminue, cela peut signifier qu'il y a moins d'intérêt à vendre l'instrument et que nous pouvons constater une puissance d'achat. C'est également un indicateur avancé car il peut évoluer avant le prix.

L’objectif principal de cet indicateur est donc de mesurer l’accélération et la décélération du pouvoir du marché dans les deux sens, à la hausse ou à la baisse, afin d’avoir une idée de la durée pendant laquelle le mouvement actuel des prix se poursuivra et d’être prêt à tout changement.

Nous allons maintenant apprendre comment calculer cet indicateur manuellement en suivant les étapes suivantes :

AC = AO - SMA (AO, 5)

Avec :

AC = L’Accelerator Oscillator.

AO = L’Awesome Oscillator (vous pouvez consulter mon précédent article sur l'Awesome Oscillatorpour en savoir plus).

SMA = Moyenne Mobile Simple.

5 = La période de la SMA.

Pour calculer l'AO, suivez les étapes suivantes :

PRIX MÉDIAN = (PLUS HAUT + PLUS BAS) / 2 

AO = SMA (PRIX MÉDIAN, 5) - SMA (PRIX MÉDIAN, 34)

Heureusement, nous n'avons pas besoin de calculer cet indicateur manuellement comme nous l'avons sur la plateforme de trading MetaTrader 5. Nous n’avons qu’à le choisir parmi les indicateurs disponibles. Lors de l'ouverture du terminal de trading, aller dans sur Insérer --> Indicateurs --> Bill Williams --> Accelerator Oscillator

 Insertion de l’AC

La fenêtre des paramètres de l'indicateur est alors afficher pour définir nos préférences :

 Paramètres de l’AC

1 - la couleur en cas de hausse.

2 - l'épaisseur de l'histogramme.

3 - la couleur en cas de baisse.

Après avoir déterminé les paramètres et appuyé sur "OK", l'indicateur est inséré dans le graphique comme suit :

 AC attaché

Comme nous pouvons le voir dans le graphique précédent, l'indicateur est inséré dans la partie inférieure du graphique. Les valeurs de l’AC oscillent autour de zéro en fonction de l'accélération du momentum.

Le niveau 0 signifie qu’il existe un équilibre entre les deux acteurs du marché, haussiers et baissiers. Si l'AC est supérieur au niveau zéro, cela signifie que nous pouvons constater une poursuite de la tendance à la hausse. Et vice versa, si l'AC est inférieur au niveau zéro, cela signifie que nous pouvons constater une poursuite de la tendance à la baisse.


Stratégie de l’Accelerator Oscillator

Dans cette rubrique, nous apprendrons des stratégies de trading simples à utiliser sur la base du concept de base de l'indicateur AC. Mais vous devez les tester avant de les utiliser sur votre compte réel car l'objectif principal ici est uniquement éducatif. Vous devez donc vous assurer qu’il est adapté et rentable pour votre trading.

    Première stratégie : Croisement AC Zéro

      Pour cette stratégie, nous devons utiliser l'AC pour déterminer quand il y a un signal haussier ou baissier. Il faudra comparer 2 valeurs pour déterminer leurs positions : la valeur actuelle de l'AC et le niveau zéro. Si la valeur actuelle de l’AC est supérieure au niveau zéro, ce sera un signal haussier. Dans l’autre scénario, si la valeur actuelle de l’AC est inférieure au niveau zéro, ce sera un signal baissier.

      Plus simplement :

      AC > Niveau 0 --> Haussier

      AC < Niveau 0 --> Baissier

        Deuxième stratégie : Force AC

          Pour cette stratégie, nous devons obtenir des signaux avec la force du mouvement AC en comparant la valeur actuelle de l’AC avec sa valeur maximale et sa valeur minimale sur les 10 dernières valeurs de l’AC. Si la valeur actuelle de l’AC est supérieure à la valeur maximale de l’AC, ce sera un signal de force. Dans l’autre scénario, si la valeur actuelle de l’AC est inférieure à la valeur minimale de l’AC, ce sera un signal de faiblesse.

          Plus simplement :

          AC > Valeur maximale de l’AC --> AC fort

          AC < Valeur minimale de l’AC --> AC faible

            3ème stratégie : Stratégie AC et MA

              Pour cette stratégie, nous devons obtenir des signaux d'achat ou de vente en fonction de 5 valeurs : le cours de clôture, la moyenne mobile exponentielle sur 50 périodes, l'AC actuel, la valeur maximale de l’AC et la valeur minimale de l’AC des 10 dernières valeurs de l’AC pour déterminer leur position afin d'obtenir le signal approprié. Si la valeur actuelle de l'AC est supérieure à la valeur maximale de l’AC et que le prix de clôture est supérieur à l'EMA sur 50 périodes, ce sera un signal d'achat. Dans l'autre scénario, si la valeur actuelle de l'AC est inférieure à la valeur minimale de l’AC et que le prix de clôture est inférieur à l'EMA sur 50 périodes, ce sera un signal de vente.

              Plus simplement :

              AC > Valeur maximale de l’AC et Clôture > 50-EMA --> Achat

              AC < Valeur minimale de l’AC et Clôture < 50-EMA --> Vente 

              Plan de la stratégie de l’Accelerator Oscillator

              Dans cette rubrique, nous concevrons un plan étape par étape pour chaque stratégie afin de nous aider à créer un système de trading en douceur.

                Première stratégie : Croisement AC Zéro

                  Pour cette stratégie, nous devons créer un système de trading pour générer automatiquement des signaux haussiers ou baissiers sous forme de commentaire sur le graphique, basé sur une vérification continue de la valeur actuelle de l’AC et du niveau zéro pour déterminer sa position afin de renvoyer le signal approprié. Si la valeur actuelle de l’AC est supérieure au niveau zéro, le système de trading doit renvoyer un commentaire sur le graphique avec les valeurs suivantes :

                  • Haussier
                  • Valeur de l’AC

                  Dans l'autre cas, si la valeur de l’AC est inférieure au niveau zéro, le système de trading doit renvoyer un commentaire sur le graphique avec les valeurs suivantes :

                  • Baissier
                  • Valeur de l’AC

                  Voici le modèle de ce système de trading :

                   Plan Croisement AC Zero

                    Deuxième stratégie : Force AC

                      Selon cette stratégie, nous devons créer un système trading pouvant être utilisé pour générer un signal avec la force du mouvement de l’AC, s'il est fort ou faible, sur la base de la vérification continue de 3 valeurs : la valeur actuelle de l’AC, sa valeur maximale et sa valeur minimale sur les 10 dernières valeurs. Si la valeur actuelle de l’AC est supérieure à la valeur maximale, le système de trading doit renvoyer un commentaire sur le graphique avec les valeurs suivantes :

                      • AC fort
                      • Valeur de l’AC
                      • Valeur maximale de l’AC
                      • Valeur minimale de l’AC

                      Dans l'autre cas, si la valeur actuelle de l’AC est inférieure à la valeur minimale, le système de trading doit renvoyer un commentaire sur le graphique avec les valeurs suivantes :

                      • AC faible
                      • Valeur de l’AC
                      • Valeur maximale de l’AC
                      • Valeur minimale de l’AC

                      Voici le modèle de ce système de trading :

                       Plan Force AC

                        3ème stratégie : Stratégie AC et MA

                          Selon cette stratégie, nous devons créer un système de trading pouvant être utilisé pour générer des signaux d'achat et de vente sous forme de commentaire sur le graphique, basé sur la vérification continue des 5 valeurs suivantes : l'AC actuel, l'AC maximum, l'AC minimum, le prix de clôture et la valeur de la moyenne mobile. Si l'AC actuel est supérieur à la valeur maximale de l’AC et que le cours de clôture est supérieur à la moyenne mobile, le système de trading doit générer un commentaire sur le graphique sous forme de signal avec les valeurs suivantes :

                          • Acheter
                          • Prix de clôture
                          • Valeur de l’AC
                          • AC Maximum
                          • AC Minimum
                          • Valeur de la MA

                          Dans l'autre cas, si l'AC actuel est inférieur à la valeur minimale de l’AC et que le cours de clôture est inférieur à la moyenne mobile, le système de trading doit renvoyer un commentaire sur le graphique avec les valeurs suivantes :

                          • Vendre
                          • Prix de clôture
                          • Valeur de l’AC
                          • AC Maximum
                          • AC Minimum
                          • Valeur de la MA

                          Voici le modèle de ce système de trading :

                           Plan de la stratégie AC _ MA

                          Système de trading de l'Accelerator Oscillator

                          Dans ce sujet intéressant, nous allons créer notre système de trading basé sur les stratégies mentionnées. Nous créerons d’abord une base en créant un système de trading simple qui pourra renvoyer un commentaire sur le graphique avec la valeur actuelle de l’AC. Voici les étapes à suivre :

                          Création d'un tableau acArray d’éléments de type "double":

                          double acArray[];

                          Utilisation de la fonction "ArraySetAsSeries" sur acArray. Ses paramètres sont :

                          • array[] : nous utiliserons acArray.
                          • flag : Nous utiliserons "true" comme direction d'indexation du tableau.
                          ArraySetAsSeries(acArray,true);

                          Définition de l'indicateur AC avec la fonction "iAC" pour récupérer la poignée de l'indicateur Accelerator Oscillator. Ses paramètres sont :

                          • symbol : nous utiliserons _Symbol pour appliquer le symbole courant.
                          • period : nous utiliserons _period pour appliquer la période en cours.
                          int acDef = iAC(_Symbol,_Period);

                          Récupération des données du tampon de l'indicateur AC avec la fonction "CopyBuffer". Ses paramètres sont : 

                          • Indicator_handle : nous utiliserons acDef du handle de l'indicateur AC 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 acArray.
                          CopyBuffer(acDef,0,0,3,acArray);

                          Définition de la valeur AC après avoir créé une variable double pour acVal et l'avoir normalisée à l'aide de "NormalizeDouble". Les paramètres de "NormalizeDouble" sont :

                          • value : nombre à normaliser. Nous utiliserons acArray[0].
                          • digits : pour déterminer le nombre de chiffres après la virgule. Nous utiliserons 7.
                          double acVal = NormalizeDouble(acArray[0],7);

                          Renvoi du commentaire de la valeur actuelle de l’AC sur le graphique en utilisant la fonction "Comment".

                          Comment("AC Value is ",acVal);

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

                          //+------------------------------------------------------------------+
                          //|                                                    Simple AC.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 acArray[];
                             ArraySetAsSeries(acArray,true);
                             int acDef = iAC(_Symbol,_Period);
                             CopyBuffer(acDef,0,0,3,acArray);
                             double acVal = NormalizeDouble(acArray[0],7);
                             Comment("AC Value is ",acVal);
                            }
                          //+------------------------------------------------------------------+

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

                          AC Simple dans le Navigateur

                          Pour exécuter ce fichier, nous allons le glisser et le déposer sur le graphique souhaité puis sa fenêtre de configuration sera affichée :

                           Fenêtre AC Simple

                           AC Simple attaché

                          Comme nous pouvons le voir sur l’image précédente dans le coin supérieur droit, l’expert est attaché au graphique. Maintenant, nous sommes prêts à recevoir notre signal comme celui-ci :

                           Signal AC Simple

                          Comme nous pouvons le voir dans le coin supérieur gauche, nous avons un commentaire avec la valeur actuelle de l’AC.

                            Première stratégie : Croisement AC Zéro

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

                              //+------------------------------------------------------------------+
                              //|                                            AC Zero 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()
                                {
                                 double acArray[];
                                 ArraySetAsSeries(acArray,true);
                                 int acDef = iAC(_Symbol,_Period);
                                 CopyBuffer(acDef,0,0,3,acArray);
                                 double acVal = NormalizeDouble(acArray[0],7);
                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }
                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Voici les différences dans ce code :

                              Conditions de la stratégie.

                              En cas de signal haussier :

                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }

                              En cas de signal baissier :

                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }

                              Après avoir compilé ce code, en vous assurant qu'il n'y a pas d'erreurs et en l'exécutant par glisser-déposer sur le graphique de la même manière que ce que nous avons appris avant, nous constaterons qu'il est attaché au graphique comme suit :

                               Croisement AC Zero attaché

                              Dans le coin supérieur droit, nous pouvons voir que l'expert de cette stratégie est attaché au graphique. Nous sommes maintenant prêts à recevoir nos signaux.

                              En cas de signal haussier :

                               Croisement AC Zero - signal haussier

                              Nous pouvons voir dans le coin supérieur gauche que nous avons le commentaire avec le signal de cette stratégie avec les valeurs suivantes :

                              • Haussier
                              • Valeur de l’AC

                              En cas de signal baissier :

                               Croisement AC Zero - signal baissier

                              Nous pouvons voir dans le coin supérieur gauche que nous avons les valeurs suivantes :

                              • Baissier
                              • Valeur de l’AC
                                Deuxième stratégie : Force AC

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

                                  //+------------------------------------------------------------------+
                                  //|                                                  AC 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 acArray[];
                                     ArraySetAsSeries(acArray,true);
                                     int acDef = iAC(_Symbol,_Period);
                                     CopyBuffer(acDef,0,0,11,acArray);
                                     double acCurrVal = NormalizeDouble(acArray[0],7);
                                     int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                     int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

                                  Différences dans ce code

                                  Définition de la valeur actuelle de l’AC :

                                  double acCurrVal = NormalizeDouble(acArray[0],7);

                                  Définir de la valeur maximale dans l'ensemble du tableau de l’AC en utilisant la fonction "ArrayMaximum" pour renvoyer la valeur maximale. Ses paramètres sont :

                                  • array[] : nous utiliserons acArray.
                                  • start : le point de départ à partir duquel vérifier. Nous utiliserons 1.
                                  • count : total des éléments du tableau à vérifier. Nous utiliserons WHOLE_ARRAY pour vérifier l'ensemble de ce tableau.
                                  int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);

                                  Définition de la valeur minimale dans l'ensemble du tableau de l’AC avec la fonction "ArrayMinimum" pour renvoyer la valeur minimale. Ses paramètres sont :

                                  • array[] : nous utiliserons acArray.
                                  • start : le point de départ à partir duquel vérifier. Nous utiliserons 1.
                                  • count : total des éléments du tableau à vérifier. Nous utiliserons WHOLE_ARRAY pour vérifier l'ensemble de ce tableau.
                                  int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                  Normalisation des valeurs maximales et minimales à l'aide de la fonction "NormalizeDouble".

                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);

                                  Conditions de la stratégie :

                                  En cas de signal fort,

                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

                                  En cas de signal faible,

                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

                                  Après avoir compilé et exécuté ce code sur le graphique souhaité, nous le retrouverons attaché comme suit :

                                  Force AC attaché

                                  Comme nous pouvons le voir en haut à droite du graphique auquel l'expert est attaché, nous sommes prêts à recevoir des signaux de cette stratégie comme sur les exemples suivants.

                                  En cas de signal fort :

                                  Force AC - signal fort

                                  Comme nous pouvons le voir sur le graphique en haut à gauche, nous avons reçu notre signal avec les valeurs suivantes :

                                  • AC fort
                                  • Valeur de l’AC
                                  • Valeur maximale de l’AC
                                  • Valeur minimale de l’AC

                                  En cas de faiblesse :

                                  Force AC - signal faible

                                  Comme nous pouvons le constater, nous avons obtenu le signal avec les valeurs suivantes :

                                  • AC faible
                                  • Valeur de l’AC
                                  • Valeur maximale de l’AC
                                  • Valeur minimale de l’AC
                                    3ème stratégie : Stratégie AC et MA

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

                                      //+------------------------------------------------------------------+
                                      //|                                             AC & MA Strategy.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 pArray[];
                                         double acArray[];
                                         double maArray[];
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                         double closingPrice = pArray[0].close;
                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);
                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Voici les différences dans ce code :

                                      Création des tableaux de pArray, acArray et maArray. Nous utiliserons la fonction double pour acArray et maArray mais nous utiliserons la fonction MqlRates pour pArray pour stocker des informations sur le prix, le volume et le spread.

                                         MqlRates pArray[];
                                         double acArray[];
                                         double maArray[];

                                      Définition du flag AS_SERIES sur les tableaux acArray et maArray comme mentionné précédemment et définition des données à l'aide de la fonction "CopyRates" pour obtenir les données historiques de la structure MqlRates. Ses paramètres sont :

                                      • symbol_name : nous utiliserons _Symbol à appliquer au symbole actuel.
                                      • timeframe : nous utiliserons _Period à appliquer à la période en cours.
                                      • 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 cible de la copie, nous utiliserons pArray.
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);

                                      Nous définirons AC et MA :

                                      AC en utilisant la fonction "iCA" comme nous l'avons mentionné. Mais pour MA, nous utiliserons la fonction "iMA", ses paramètres sont :

                                      • symbol : nous utiliserons _Symbol
                                      • period : nous utiliserons _period
                                      • ma_period : pour déterminer la période de la moyenne mobile, on utilisera 50 
                                      • ma_shift : pour déterminer le décalage horizontal, on utilisera 0 
                                      • ma_method : pour déterminer le type de moyenne mobile, nous utiliserons la MA exponentielle 
                                      • apply_price : pour déterminer le type de prix utilisable, nous utiliserons le cours de clôture
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

                                      Nous obtiendrons les données du tampon des indicateurs AC et MA en utilisant la fonction "CopyBuffer".

                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);

                                      Obtention des valeurs maximales et minimales de l'acArray.

                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                      Définition des valeurs de l’AC, de l’AC maximum, de l’AC minimum et de la moyenne mobile exponentielle.

                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);

                                      Conditions de la stratégie.

                                      En cas de signal d’achat :

                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

                                      En cas de signal de vente :

                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

                                      Après avoir compilé ce code et l'avoir exécuté, il sera attaché comme suit :

                                      Stratégie AC _ MA attachée

                                      Comme on peut le voir dans le coin supérieur droit, l'expert est attaché au graphique. Maintenant, nous pouvons recevoir nos signaux.

                                      En cas de signal d’achat :

                                      Stratégie AC & MA - signal d'achat

                                      Comme nous pouvons le voir dans le coin supérieur gauche, nous avons les valeurs suivantes :

                                      • Acheter
                                      • Prix de clôture
                                      • Valeur de l’AC
                                      • AC Maximum
                                      • AC Minimum
                                      • Valeur de la MA

                                      En cas de signal de vente :

                                      Stratégie AC & MA - signal de vente

                                      Nous obtenons le commentaire avec les valeurs suivantes :

                                      • Vendre
                                      • Prix de clôture
                                      • Valeur de l’AC
                                      • AC Maximum
                                      • AC Minimum
                                      • Valeur de la MA

                                      Conclusion

                                      Après tout ce que nous avons appris dans cet article, il est supposé que vous comprenez bien l'indicateur Accelerator Oscillator car nous l'avons bien couvert à travers cet article. Nous avons appris ce que c'est, ce qu'il mesure, comment nous pouvons le calculer, comment nous pouvons le lire et nous l’avons utilisée à travers des stratégies de trading simples :

                                      • Croisement AC Zero : pour obtenir des signaux haussiers et baissiers basés sur le croisement entre la valeur de l’AC et son niveau zéro.
                                      • Force AC : pour obtenir un signal de la force du mouvement AC basé sur la comparaison entre la valeur actuelle de l’AC avec le maximum et le minimum de ses 10 dernières valeurs.
                                      • Stratégie AC & MA : pour obtenir des signaux d'achat et de vente en fonction du positionnement du cours de clôture, de la moyenne mobile exponentielle sur 50 périodes, de la valeur actuelle de l’AC, de la valeur maximale de l’AC et de la valeur minimale de l’AC.

                                      Nous avons ensuite conçu un plan étape par étape pour toutes les stratégies mentionnées afin de nous aider à créer notre système de trading de manière simple, efficace et fluide. Nous sommes finalement arrivés à la partie la plus intéressante de l'article lorsque nous avons écrit nos codes pour créer un système de trading basé sur ces stratégies pour les exécuter dans MetaTrader 5 afin de générer des signaux automatiques sans aucune lecture ou surveillance manuelle des conditions à appliquer.

                                      J'espère que vous avez essayé d'appliquer ce que vous avez appris ainsi que je vous l'ai dit au début de cet article et que vous avez tiré pleinement parti de cet article en obtenant plus d'informations. Je dois confirmer ici une autre fois que vous devez tester toute stratégie avant de l'utiliser sur votre compte réel pour vous assurer qu'elle sera rentable ou adaptée à votre style de trading car il n'y a rien qui convienne à tous. En plus de cela, mon objectif principal ici est uniquement l’éducation.

                                      J'espère que vous avez trouvé cet article utile pour que votre trading obtienne de meilleurs résultats. Si vous souhaitez lire d'autres articles similaires sur la façon de concevoir un système de trading basé sur les indicateurs techniques les plus populaires tels que RSI, MACD, MA, Stochastique, les Bandes de Bollinger Bands, etc. Vous pouvez lire mes articles précédents de cette série pour en savoir plus à ce sujet.

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

                                      Fichiers joints |
                                      Simple_AC.mq5 (0.86 KB)
                                      AC_Strength.mq5 (1.46 KB)
                                      Un exemple d'assemblage de modèles ONNX dans MQL5 Un exemple d'assemblage de modèles ONNX dans MQL5
                                      ONNX (Open Neural Network eXchange) est un format ouvert conçu pour représenter les réseaux neuronaux. Dans cet article, nous allons montrer comment utiliser simultanément 2 modèles ONNX dans un Expert Advisor.
                                      Algorithmes d'optimisation de la population : Algorithme de la Chauve-Souris (BA) Algorithmes d'optimisation de la population : Algorithme de la Chauve-Souris (BA)
                                      Dans cet article, j'examinerai l'algorithme de la Chauve-Souris, ou Bat (BA), qui présente une bonne convergence pour les fonctions lisses.
                                      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.
                                      Algorithmes d'optimisation de la population : Algorithme des Lucioles (Firefly Algorithm - FA) Algorithmes d'optimisation de la population : Algorithme des Lucioles (Firefly Algorithm - FA)
                                      Dans cet article, je considérerai la méthode d'optimisation de l'Algorithme Firefly (FA). Grâce à la modification, l'algorithme est passé d'un outsider à un véritable leader du classement.