English Русский 中文 Español Deutsch 日本語 Português Türkçe
preview
Comment traiter les niveaux avec MQL5

Comment traiter les niveaux avec MQL5

MetaTrader 5Trading | 27 août 2024, 07:42
185 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

En tant que traders, nous traçons de nombreuses lignes qui nous permettent d'observer certains niveaux importants et de prendre les bonnes décisions en fonction de ceux-ci. Ces lignes sont donc très importantes pour nous en tant que traders. Nous pouvons donc nous demander s'il existe une méthode qui peut être utilisée pour tracer ces lignes ou prendre une décision automatiquement, basée sur ces lignes. Je pense que cela nous aiderait beaucoup. La réponse est oui, il existe une méthode pour le faire avec MQL5 (MetaQuotes Language 5).

Cet article est un exemple pour apprendre comment nous pouvons travailler et traiter ces lignes ou niveaux avec MQL5. Il existe nombreuses méthodes et elles dépendent de ce que vous avez besoin de faire. Il existe de nombreux types de lignes, mais nous n'en mentionnerons que 3 dans cet article en raison de leur popularité : les lignes de tendance, les lignes de support et les lignes de résistance.

Nous les aborderons à travers les thèmes suivants :

  1. Lignes de tendance et MQL5
  2. Support et MQL5
  3. Résistance et MQL5
  4. Conclusion

D'une manière générale, de nombreuses méthodes peuvent être utilisées pour traiter les lignes avec MQL5. Nous partagerons ici une méthode simple. Vous pourrez la développer pour l'adapter à votre stratégie. Nous partagerons ici une méthode permettant de détecter les niveaux de prix puis de dessiner un type de ligne actualisé.

Nous allons apprendre ce que sont les lignes en détail en identifiant leurs types, comment nous pouvons les dessiner manuellement et comment nous pouvons les utiliser dans le trading. Nous apprendrons comment utiliser MQL5 pour traiter les lignes de tendance, les niveaux de support et de résistance afin de faciliter notre processus de trading et d'améliorer nos résultats grâce à l'automatisation. Nous utiliserons le langage MQL5 (MetaQuotes Language 5) pour coder nos programmes. Il est intégré au terminal de trading MetaTrader 5. Si vous ne savez pas comment les utiliser, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor d'un article précédent pour en savoir plus à ce sujet.

Mon conseil est d'essayer d'écrire et d'appliquer ce que vous lisez par vous-même. Cette étape est très importante pour améliorer vos compétences en codage. Elle approfondira votre compréhension en plus d'obtenir plus d'informations sur le sujet de cet article et/ou tout autre sujet connexe qui peut être utile pour développer et améliorer vos résultats de trading.

Avertissement : Toutes les informations données dans cet article sont fournies "en l'état", uniquement à des fins d'information et ne sont aucunement données à des fins de trading ou de conseil. Ces informations ne garantissent aucun type de résultat. Si vous utilisez le contenu de cet article sur l'un de vos comptes de trading, vous le faites à vos propres risques et vous en serez le seul responsable.


Lignes de Tendance et MQL5

Les lignes sont des outils techniques qui peuvent être utilisés en trading afin d'obtenir des résultats plus efficaces. Ces lignes peuvent être tracées autour des prix ou autour de niveaux importants qui peuvent être utilisés comme déclencheurs pour prendre des décisions. Il existe de nombreux types de lignes. Nous en mentionnerons 3 dans cet article, parmi les plus importantes : les lignes de tendance, les niveaux de support et les niveaux de résistance.

Nous allons commencer par identifier et traiter les lignes de tendance. Les lignes de tendance sont des lignes qui peuvent être utilisées pour visualiser les niveaux de prix pouvant être utilisés comme niveaux de rejet à la hausse ou à la baisse. Elles peuvent être tracées au-dessus ou au-dessous des prix en fonction de la direction du marché. Nous pouvons donc dire que la ligne de tendance peut nous aider à détecter la direction de la tendance du marché. Si le prix rebondit à la hausse à partir de 3 points, au minimum, sur les mêmes niveaux que la ligne tracée, il s'agira d'une ligne de tendance ascendante. Inversement, s'il y a un rebond à la baisse, à partir de 3 points au minimum, sur les mêmes niveaux de la ligne tracée, il s'agira d'une ligne de tendance baissière. Il est important de mentionner ici qu'une ligne de tendance n'est qu'un outil et que vous pouvez la reconnaître et la dessiner correctement ou non.

Nous pouvons utiliser la ligne de tendance dans le trading en plaçant nos ordres en fonction du type de ligne de tendance. S'il existe une ligne de tendance haussière, on peut s'attendre à ce que le prix se déplace vers le bas pour tester cette ligne de tendance par le haut avant de rebondir vers le haut. Nous pouvons alors placer notre ordre d'achat autour de cette ligne de tendance. Inversement, s'il y a une ligne de tendance à la baisse, il se peut que le prix monte pour tester cette ligne de tendance à partir du bas, puis rebondisse vers le bas. Nous pouvons alors placer notre ordre de vente ou de vente à découvert autour de cette ligne de tendance à la baisse.

L'exemple suivant concerne la ligne de tendance à la hausse :

 Ligne de tendance haussière

Il est clair dans la figure précédente que nous avons un mouvement haussier. Si nous essayons de relier les trois derniers bas, nous voyons qu'ils sont sur la même ligne, dans une direction à la hausse.

Voici un exemple de ligne de tendance haussière du marché :

Ligne de tendance haussière

Comme nous pouvons le voir dans le graphique précédent, nous avons une ligne de tendance haussière qui a été touchée à plusieurs reprises et qui a rebondi après avoir trouvé une puissance d'achat nécessaire pour se diriger vers le haut, ce qui confirme l'existence d'une tendance haussière.

L'exemple suivant concerne la ligne de tendance baissière :

Ligne de tendance baissière

Il est clair dans la figure précédente que nous avons un mouvement à la baisse. Si nous essayons de relier les trois derniers sommets, nous voyons qu'ils sont sur la même ligne de mouvement à la baisse.

Voici un exemple de ligne de tendance baissière du marché :

Ligne de tendance baissière

Comme nous pouvons le voir dans le graphique précédent, nous avons une ligne de tendance baissière qui a été touchée à plusieurs reprises et qui a rebondi après avoir trouvé une puissance de vente, ce qui confirme l'existence d'une tendance baissière.


    1. Système de Ligne de Tendance Haussière

      Nous devons créer un programme qui peut être utilisé pour créer automatiquement une ligne de tendance haussière dans MetaTrader 5. Le programme doit vérifier les plus bas des prix et s'il y a une ligne de tendance à la hausse à chaque tick. Il doit ensuite supprimer la ligne de tendance haussière précédente et en créer une nouvelle, de couleur bleue, sous les niveaux les plus bas du prix. 

      Pour cela, nous pouvons suivre les étapes ci-dessous (c’est l’une des méthodes à utiliser).

      Création de la première détection de bougie par une variable de type integer, égale à la valeur de type long renvoyée par la propriété correspondante du graphique actuel en utilisant la fonction "ChartGetInteger". Ses paramètres sont les suivants :

      • chart_id : pour déterminer le graphique à utiliser. Nous utiliserons 0 pour représenter le graphique actuel.
      • prop_id : pour déterminer l'identifiant de la propriété du graphique. Nous pouvons utiliser ici l'une des valeurs de ENUM_CHART_PROPERTY_INTEGER. Nous utiliserons CHART_FIRST_VISIBLE_BAR.
      • sub_window=0 : pour déterminer le nombre de sous-fenêtres du graphique. Nous utiliserons 0 pour représenter la fenêtre principale du graphique.

      int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);

      Création d'un tableau de bougies des plus bas du prix en créant une variable pLow de type double.

      double pLow[];

      Tri du tableau créé à partir des données actuelles en utilisant la fonction "ArraySetAsSeries" pour renvoyer une valeur booléenne qui sera vraie en cas de succès ou fausse dans l'autre cas.

      ArraySetAsSeries(pLow,true);

      Remplissage du tableau pLow créé avec des données en utilisant la fonction "CopyLow" pour obtenir le prix le plus bas du symbole actuel à l'heure actuelle. Ses paramètres sont :

      • symbol_name : pour déterminer le symbole, nous utiliserons _Symbol pour le symbole actuel.
      • timeframe : pour déterminer la période, nous utiliserons _Period pour l'appliquer à la période actuelle.
      • start_pos : pour déterminer la position de départ de l'élément à copier, nous utiliserons 0.
      • count : pour déterminer le nombre de données à copier, nous utiliserons la variable pré-créée ’candles’.
      • low_array[] : pour déterminer le tableau cible à copier, nous utiliserons le tableau pLow.

      int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow);

      Définition de la condition si copy_low est supérieur à 0

      if(copy_low>0)

      Dans le corps de la condition if, nous créons et nous calculons la valeur minimale de la variable candle en créant une variable de type integer "candleLow" égale à la valeur minimale du tableau. Nous utiliserons la fonction "ArrayMinimum" pour renvoyer l'élément le plus bas du tableau. Ses paramètres sont :

      • array[] : pour déterminer le tableau, nous utiliserons le tableau pLow.
      • start=0 : pour déterminer l'indice avec lequel commencer la vérification, nous utiliserons la valeur 0.
      • count=WHOLE_ARRAY : pour déterminer le nombre d'éléments vérifiés, nous utiliserons ’candles’.
      int candleLow = ArrayMinimum(pLow,0,candles);

      Création d'un tableau de prix "pArray" en utilisant la fonction "MqlRates" qui stocke des informations sur les prix, le volume et l'écart.

      MqlRates pArray[];

      Tri du tableau de prix de "pArray" à l'aide de la fonction "ArraySetAsSeries".

      ArraySetAsSeries(pArray,true);

      Copie des données des prix dans le tableau après création d'une variable de type integer "Data" et utilisation de "CopyRates" pour obtenir les données historiques de la structure MqlRates. Ses paramètres sont :

      • symbol_name : pour déterminer le symbole, nous utiliserons _Symbol pour l'appliquer au graphique actuel.
      • timeframe : pour déterminer la période, nous utiliserons _Period pour appliquer la période actuelle.
      • start_pos : pour déterminer la position de départ, nous utiliserons la valeur 0.
      • count : pour déterminer le nombre de données à copier, nous utiliserons la variable ’candles’ créée.
      • rates_array[] : pour déterminer le tableau cible à copier, nous utiliserons ’pArray’.
      int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

      Suppression de toute ligne de tendance précédemment créée via la fonction "ObjectDelete" pour supprimer tout objet spécifié de tout graphique spécifié. Ses paramètres sont :

      • chart_id : pour déterminer l'identifiant du graphique, nous utiliserons _Symbol pour le symbole actuel.
      • name : pour spécifier le nom de l'objet que nous voulons supprimer, nous spécifierons ’UpwardTrendline’ comme nom.
      ObjectDelete(_Symbol,"UpwardTrendline");

      Création d'une nouvelle ligne de tendance en utilisant la fonction "ObjectCreate" pour créer un objet ligne de tendance (trend line). Ses paramètres sont :

      • chart_id : pour déterminer le symbole, nous utiliserons _Symbol pour appliquer le symbole actuel.
      • name : pour spécifier le nom de l'objet, nous spécifierons ’UpwardTrendline’ comme nom.
      • type : pour déterminer le type d'objet, nous utiliserons OBJ_TREND pour créer une ligne de tendance.
      • nwin : pour déterminer l'index de la fenêtre, nous utiliserons la valeur 0 pour utiliser la fenêtre principale du graphique.
      • time1 : pour déterminer l'heure du premier point d'ancrage, nous utiliserons pArray[candleLow].time.
      • price1 : pour déterminer le prix du premier point d'ancrage, nous utiliserons pArray[candleLow].low.
      • timeN : pour déterminer l'heure du N-ième point d'ancrage, on utilisera le pArray[0].time.
      • priceN : pour déterminer le prix du N-ième point d'ancrage, nous utiliserons pArray[0].low.
      ObjectCreate(_Symbol,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,pArray[0].time,pArray[0].low);

      Détermination de la couleur de la ligne de tendance en utilisant la fonction "ObjectSetInteger" pour définir la valeur comme couleur de l'objet. Ses paramètres sont :

      • chart_id : l'identifiant du graphique, nous utiliserons la valeur 0 qui signifie le graphique actuel.
      • name : le nom de l'objet, nous utiliserons ’UpwardTrendline’ qui est le nom prédéfini de l'objet.
      • prop_id : l'identifiant de la propriété de l'objet, nous utiliserons la valeur OBJPROP_COLOR de l’énumération ENUM_OBJECT_PROPERTY_INTEGER.
      • prop_value : la valeur de la propriété, nous utiliserons Blue comme couleur de la ligne de tendance créée.
      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);

      Détermination du style de la ligne de tendance en utilisant la fonction ObjectSetInteger également. Cette fois, nous utiliserons la propriété OBJPROP_STYLE de l’énumération ENUM_OBJECT_PROPERTY_INTEGER qui. Sa prop_value sera STYLE_SOLID.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);

      Détermination de la largeur de la ligne de tendance en utilisant la fonction "ObjectSetInteger" également mais nous utiliserons la propriété OBJPROP_WIDTH de l’énumération ENUM_OBJECT_PROPERTY_INTEGER. La prop_value sera 3.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);

      Détermination du rayon de la ligne de tendance en utilisant la fonction "ObjectSetInteger" également mais avec la propriété OBJPROP_RAY_RIGHT. La valeur utilisée sera true.

      ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);

      Vous trouverez ci-dessous le code complet pour créer ce système de création automatique d'une ligne de tendance haussière :

      //+------------------------------------------------------------------+
      //|                                       UpwardTrendline System.mq5 |
      //+------------------------------------------------------------------+
      void OnTick()
        {
         int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
         double pLow[];
         ArraySetAsSeries(pLow,true);
         int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow); 
         if(copy_low>0)
           {
            int candleLow = ArrayMinimum(pLow,0,candles);
            MqlRates pArray[];
            ArraySetAsSeries(pArray,true);
            int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
            ObjectDelete(0,"UpwardTrendline");
            ObjectCreate(0,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low,
                         pArray[0].time,pArray[0].low);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3);
            ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true);
           }
        }
      //+------------------------------------------------------------------+
      

      Après avoir écrit ce code, nous allons le compiler. Il ne doit résulter aucune erreur.  L'Expert Advisor (EA) sera ensuite visible dans la fenêtre du navigateur de la manière suivante :

       Lignes de tendance haussières dans le Navigator

      En glissant et déposant l'EA sur le graphique, la fenêtre de l'EA sera affichée comme suit :

      Fenêtre Lignes de tendance haussières dans le Navigator

      Après avoir coché la case "Autoriser le Trading Algo" et appuyé sur "OK", l'EA est attaché au graphique et l'action désirée basée sur cet EA sera réalisée, comme dans l'exemple suivant :

       Exemple de ligne de tendance haussière

      Comme nous pouvons le voir dans le graphique précédent, l'EA est attaché au graphique (visible dans le coin supérieur droit). Nous avons bien la ligne de tendance haussière bleue qui est dessinée en dessous des prix.


        2. Système de Ligne de Tendance Baissière

          Nous devons créer un programme qui peut être utilisé pour créer automatiquement une ligne de tendance à la baisse par MetaTrader 5, visible au-dessus des prix pour un mouvement potentiel à la baisse. Le programme doit vérifier les plus hauts des prix et s'il y a une ligne de tendance à la baisse à chaque tick. Il doit ensuite supprimer la ligne de tendance descendante précédente et créer une ligne bleue actualisée au-dessus des sommets du prix. 

          Pour cela, nous pouvons suivre le code complet ci-dessous comme l'une des méthodes à utiliser.

          //+------------------------------------------------------------------+
          //|                                     DownwardTrendline System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pHigh[];
             ArraySetAsSeries(pHigh,true);
             int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);
             if(copy_high>0)
               {
                int candleHigh = ArrayMaximum(pHigh,0,candles);
                MqlRates pArray[];
                ArraySetAsSeries(pArray,true);
                int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
                ObjectDelete(0,"DnwardTrendline");
                ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,
                             pArray[0].time,pArray[0].high);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
                ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
               }
            }
          //+------------------------------------------------------------------+

          Voici les différences dans ce code :

          Création d'un tableau des plus hauts des prix de chaque bougie :

          double pHigh[];

          Tri du tableau créé à partir des données actuelles :

          ArraySetAsSeries(pHigh,true);

          Remplissage du tableau de données :

          int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh);

          Création et calcul du maximum du tableau ’candles’ :

          int candleHigh = ArrayMaximum(pHigh,0,candles);

          Suppression de toute ligne de tendance baissière précédente :

          ObjectDelete(_Symbol,"DnwardTrendline");

          Création d'une nouvelle ligne de tendance à la baisse :

          ObjectCreate(_Symbol,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);

          Détermination de la couleur bleue de la ligne de tendance à la baisse à l'aide du paramètre ’OBJPROP_COLOR’ :

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);

          Détermination du style de la ligne de tendance baissière avec OBJPROP_STYLE et STYLE_SOLID :

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);

          Détermination de la largeur de la ligne de tendance baissière à 3 en utilisant le paramètre ’OBJPROP_WIDTH’ :

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);

          Détermination du rayon de la ligne de tendance baissière avec ’OBJPROP_RAY_RIGHT’ :

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);

          Après avoir compilé sans erreur, l'EA est dans la fenêtre du Navigateur. Après avoir attaché l'EA, nous sommes prêts et nous pouvons constater que la ligne de tendance baissière est dessinée de comme ci-dessous :

          Exemple de ligne de tendance baissière

          Comme nous pouvons le voir sur le graphique dans le coin supérieur droit, l'EA est attaché et la ligne de tendance baissière est tracée au-dessus des prix car il y a un pouvoir d'achat autour de ce niveau.


          Niveaux de Support et MQL5

          Le niveau de support est un niveau, ou une zone de prix, qui peut être trouvé en dessous des prix actuels. Un rebond à la hausse est visible autour de lui parce qu'il y a un pouvoir d'achat autour de ces niveaux. Ils sont donc très importants, car nous pouvons les utiliser comme points d'achat. Il existe de nombreuses formes de niveaux de support. L’une d'entre elles est le niveau de support horizontal. Voici à quoi il ressemble :

           Niveaux de Support

          Voici un exemple de niveau de support sur le marché :

          Niveaux de Support 1

          Comme nous pouvons le voir dans le graphique précédent, une ligne de support verte est visible sous les prix. Elle peut être utilisée comme niveau de rejet à la hausse.

          Le programme doit vérifier les creux des prix et s'il y a une ligne de support à chaque tick. Il doit ensuite supprimer la ligne de support précédente et créer une ligne verte actualisée sous les niveaux les plus bas du prix. Nous pouvons dessiner et traiter cette ligne de support avec MQL5 comme dans le code complet ci-dessous :

          //+------------------------------------------------------------------+
          //|                                          Support Line System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pLow[];
             ArraySetAsSeries(pLow,true);
             CopyLow(_Symbol,_Period,0,candles,pLow);
             int candleLow = ArrayMinimum(pLow,0,candles);
             MqlRates pArray[];
             ArraySetAsSeries(pArray,true);
             int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
             ObjectDelete(_Symbol,"supportLine");
             ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low,pArray[0].time,pArray[0].low);
             ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);
             ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);
             ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);
             ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);
            }
          //+------------------------------------------------------------------+

          Différences dans ce code :

          Suppression de toutes les lignes de support précédentes portant le nom ’supportLine’ :

          ObjectDelete(_Symbol,"supportLine");

          Création d'une nouvelle ligne de support en utilisant ’OBJ_HLINE’ comme type d'objet :

          ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low);

          Détermination de la couleur de la ligne de support à l'aide du paramètre ’OBJPROP_COLOR’ :

          ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green);

          Détermination du style de la ligne de support en utilisant OBJPROP_STYLE et STYLE_SOLID :

          ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID);

          Détermination de la largeur de la ligne de support à l'aide du paramètre ’OBJPROP_WIDTH’ :

          ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3);

          Détermination du rayon de la ligne de support à l'aide de ’OBJPROP_RAY’

          ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true);

          Après avoir compilé ce code sans erreur, nous pouvons l'attacher au graphique comme précédemment. Après cela, la ligne de support sera dessinée comme dans l'exemple ci-dessous :

          Ligne de support

          Comme nous pouvons le voir dans le graphique précédent, l’EA Système de Support est attaché (dans le coin supérieur droit) et une ligne de support est dessinée en dessous des prix.


          Niveaux de Résistance et MQL5

          Le niveau de résistance est un niveau, ou une zone de prix, qui peut être trouvé au-dessus des prix actuels et un rebond à la baisse est visible autour de lui parce qu'il y a un pouvoir de vente autour de ces niveaux. Ils sont donc très importants car nous pouvons les utiliser comme niveaux de vente. Il existe de nombreuses formes de ces niveaux de résistance. L'une d'entre elles est le niveau de résistance horizontal :

           Niveau de Résistance

          Voici un exemple de résistance sur le marché :

           Niveau de Résistance 1

          Comme nous pouvons le voir dans le graphique précédent, une ligne de résistance rouge est dessinée au-dessus des prix et elle peut être utilisée comme niveau de rejet à la baisse car il y a un pouvoir d'achat autour de ce niveau. 

          Le programme doit vérifier les hauts des prix et s'il y a une ligne de résistance à chaque tick. Il doit ensuite supprimer la ligne de résistance précédente et créer une ligne rouge actualisée au-dessus des sommets du prix. Nous pouvons dessiner et traiter cette ligne de résistance via MQL5 comme dans le code complet ci-dessous :

          //+------------------------------------------------------------------+
          //|                                       Resistance Line System.mq5 |
          //+------------------------------------------------------------------+
          void OnTick()
            {
             int candles=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
             double pHigh[];
             ArraySetAsSeries(pHigh,true);
             CopyHigh(_Symbol,_Period,0,candles,pHigh);
             int candleHigh = ArrayMaximum(pHigh,0,candles);
             MqlRates pArray[];
             ArraySetAsSeries(pArray,true);
             int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
             ObjectDelete(_Symbol,"resistanceLine");
             ObjectCreate(_Symbol,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);
             ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);
             ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
            }
          //+------------------------------------------------------------------+

          Différences dans ce code :

          Suppression de toute ligne de résistance antérieure portant le nom ’resistanceLine’ :

          ObjectDelete(_Symbol,"resistanceLine");

          Création d'une nouvelle ligne de résistance en utilisant ’OBJ_HLINE’ comme type d'objet :

          ObjectCreate(_Symbol,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high,pArray[0].time,pArray[0].high);

          Détermination de la couleur de la ligne de résistance à l'aide de ’OBJPROP_COLOR’ :

          ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red);

          Détermination du style de la ligne de résistance à l'aide de OBJPROP_STYLE et STYLE_SOLID :

          ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID);

          Détermination de la largeur de la ligne de résistance à l'aide de ’OBJPROP_WIDTH’ :

          ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3);

          Détermination du rayon de la ligne de résistance à l'aide de ’OBJPROP_RAY_RIGHT’ :

          ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);

          Après avoir compilé ce code sans erreur, nous pouvons l'attacher au graphique comme précédemment. Ensuite, l’EA Système de Résistance est attaché au graphique et son action est décrite ci-dessous :

          Ligne de résistance

          Comme nous pouvons le voir dans le graphique précédent, l’EA Système de Résistance est attaché (dans le coin supérieur droit) et nous avons une ligne de résistance en dessous des prix.


          Conclusion

          Maintenant, il est supposé que vous compreniez en détail trois des lignes importantes qui peuvent être utilisées dans notre trading. Les lignes de tendance (à la hausse et à la baisse), les lignes de support et de résistance : nous avons appris ce qu'elles sont et comment les utiliser. Nous avons également appris comment nous pouvons les traiter avec MQL5 pour les dessiner automatiquement en créant notre propre système pour chacune d'entre elles. Vous pouvez également développer ce code en ajoutant des ordres d'envoi pour exécuter des transactions basées sur ces ordres. Vous devez les tester avant de les utiliser sur votre compte réel pour vous assurer qu'ils sont rentables car l'objectif principal de cet article est uniquement éducatif.

          J'espère que cet article vous a été utile et que vous avez appris à utiliser les outils mentionnés en votre faveur en les utilisant comme partie d'un autre système avancé ou individuellement. J'espère donc que vous avez trouvé des informations utiles sur le sujet de cet article ou sur tout autre sujet connexe afin d'obtenir de meilleurs résultats de trading et de les améliorer avec des outils utiles et rentables. J'espère également que vous avez essayé de tester et d'écrire les codes mentionnés par vous-même afin d'en tirer profit et d'améliorer vos compétences en matière de codage.

          Si vous avez trouvé cet article utile et que vous souhaitez lire d'autres articles sur MQL5 et comment concevoir un système de trading en utilisant les indicateurs techniques les plus populaires, vous pouvez lire mon article précédent. Vous pouvez également trouver des articles comme comment concevoir un système de trading basé sur les indicateurs techniques les plus populaires comme la moyenne mobile, le RSI, le MACD, le stochastique, le SAR parabolique, etc.

          Si vous souhaitez également en savoir plus sur les bases de MQL5 et pourquoi et comment concevoir votre système de trading algorithmique, vous pouvez également lire mon article précédent à ce sujet.

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

          Apprenez à concevoir un système de trading à l'aide du Gator Oscillator Apprenez à concevoir un système de trading à l'aide du Gator Oscillator
          Un nouvel article de notre série sur l'apprentissage de la conception d'un système de trading basé sur des indicateurs techniques populaires sera consacré à l'indicateur technique Gator Oscillator et à la création d'un système de trading à l'aide de stratégies simples.
          Modèles de classification dans la bibliothèque Scikit-Learn et leur export vers ONNX Modèles de classification dans la bibliothèque Scikit-Learn et leur export vers ONNX
          Dans cet article, nous allons explorer l'application de tous les modèles de classification disponibles dans la bibliothèque Scikit-Learn pour résoudre la tâche de classification de l'ensemble de données Iris de Fisher. Nous tenterons de convertir ces modèles au format ONNX et d'utiliser les modèles résultants dans les programmes MQL5. Nous comparerons également la précision des modèles originaux avec leurs versions ONNX sur l'ensemble du jeu de données Iris.
          L'Histogramme des prix (Profile du Marché) et son implémentation  en MQL5 L'Histogramme des prix (Profile du Marché) et son implémentation en MQL5
          Le Profile du Marché a été élaboré par le brillant penseur Peter Steidlmayer. Il a suggéré l’utilisation de la représentation alternative de l'information sur les mouvements de marché « horizontaux » et « verticaux » qui conduit à un ensemble de modèles complètement différent. Il a assumé qu'il existe une impulsion sous-jacente du marché ou un modèle fondamental appelé cycle d'équilibre et de déséquilibre. Dans cet article, j’examinerai l'Histogramme des Prix - un modèle simplifié de profil de marché, et décrirai son implémentation dans MQL5.
          Modèles de régression de la bibliothèque Scikit-learn et leur export vers ONNX Modèles de régression de la bibliothèque Scikit-learn et leur export vers ONNX
          Dans cet article, nous allons explorer l'application des modèles de régression du paquet Scikit-learn, tenter de les convertir au format ONNX, et utiliser les modèles résultants dans des programmes MQL5. Nous comparerons également la précision des modèles originaux avec leurs versions ONNX pour la précision flottante et la précision double. Nous examinerons aussi la représentation ONNX des modèles de régression, afin de mieux comprendre leur structure interne et leurs principes opérationnels.