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

Apprenez à concevoir un système de trading basé sur l'Oscillateur de Chaikin

MetaTrader 5Trading | 8 mai 2023, 10:03
1 640 1
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Voici un nouvel article qui complète notre série sur l'apprentissage de la conception d'un système de trading à l'aide des indicateurs techniques les plus populaires. Nous allons cette fois apprendre à le faire en utilisant l'Oscillateur de Chaikin.

Nous allons découvrir cet indicateur technique en détail avec les rubriques suivantes :

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

A travers les sujets précédents, nous allons apprendre à créer et concevoir un système de trading basé sur l'Oscillateur de Chaikin, étape par étape. Dans la définition de l’indicateur, nous apprendrons ce qu'est l'Oscillateur de Chaikin, ce qu'il mesure, comment nous pouvons le calculer manuellement pour connaître son concept principal. A travers la stratégie de l'Oscillateur de Chaikin, nous apprendrons comment utiliser cet indicateur à travers des stratégies simples basées sur le concept de base qui le sous-tend . Nous créerons ensuite un plan étape par étape pour chaque stratégie mentionnée afin de nous aider à créer un système de trading pour chacune d'entre elles, en douceur, grâce au plan de la stratégie de l'Oscillateur de Chaikin. Nous créerons enfin un système de trading pour chaque stratégie mentionnée afin de l'exécuter et d'obtenir des signaux automatiquement dans MetaTrader 5, et ce à travers le thème du système de trading de l’Oscillateur de Chaikin.

Nous utiliserons le MQL5 (MetaQuotes Language) pour écrire le code de la stratégie de trading afin de l'exécuter dans MetaTrader 5 pour nous donner des signaux automatiquement. Si vous voulez savoir comment télécharger et utiliser MetaTrader 5 pour utiliser MQL5, vous pouvez lire le sujet sur comment Ecrire du MQL5 dans MetaEditor dans un article précédent.

Avis de Non-Responsabilité : Toutes les informations données dans cet article sont fournies "en l'état", uniquement à des fins d'information et ne sont pas données à des fins de trading ou de conseil. Ces informations ne garantissent aucun type de résultat. Si vous choisissez d'utiliser ce matériel sur l'un de vos comptes de trading, vous le faites à vos risques et périls et vous en êtes le seul responsable.

Commençons maintenant notre article.


Définition de l'Oscillateur de Chaikin

Dans cette partie, nous allons découvrir en détail l'indicateur Chaikin Oscillator, ce qui nous permettra de comprendre son concept de base. L'indicateur Chaikin Oscillator est un indicateur de momentum, créé par Marc Chaikin. Il est évident que l'indicateur porte le nom de son créateur. Il mesure le momentum de la ligne de distribution et d'accumulation à l'aide du MACD (Moving Average Convergence Divergence), la moyenne mobile de convergence divergence. En mesurant cette dynamique, nous pouvons obtenir des informations sur les changements directionnels de la ligne d’accumulation distribution.

Nous pouvons calculer l'Oscillateur de Chaikin manuellement pour mieux comprendre le concept qui le sous-tend en suivant les étapes suivantes :

  1. Calcul du multiplicateur des flux monétaires = ((clôture - bas) - (haut - clôture)) / (haut - bas)
  2. Calcul du volume des flux monétaires = multiplicateur des flux monétaires * volume
  3. Calcul de la ligne d’Accumulation Distribution (ADL) = ADL précédente + volume des flux monétaires actuels
  4. Oscillateur de Chaikin = (MME de l'ADL sur 3 périodes) - (MME de l'ADL sur 10 périodes)

Aujourd'hui, il n'est plus nécessaire de calculer l'indicateur manuellement, vous pouvez simplement l'insérer dans le graphique, puisqu'il est intégré à MetaTrader 5. Tout ce que vous voulez faire, c'est le choisir parmi les indicateurs disponibles. Nous allons voir ici comment nous pouvons le faire pour apprendre le concept principal qui se cache derrière.

Nous pouvons l'insérer dans le graphique en cliquant sur le menu Insérer dans MetaTrader 5 --> Indicateurs --> Oscillateurs --> Chaikin Oscillator. L'image suivante illustre ces étapes :

Insertion de l’Oscillateur de Chaikin

Après avoir choisi l'indicateur Chaikin Oscillator, la fenêtre des paramètres de l'indicateur est affichée :

 Paramètres de l’Oscillateur de Chaikin

1- Le type de volume

2- La période de la moyenne mobile rapide

3- La période de la moyenne mobile lente

4- Le type de moyenne mobile

5- La couleur de la ligne de l'indicateur

6- Le type de ligne de l'indicateur

7- L'épaisseur de la ligne de l'indicateur

Après avoir déterminé ses paramètres et appuyé sur "OK", l'indicateur est insérer dans le graphique de la manière suivante :

L’Oscillateur de Chaikin est attaché

Comme nous pouvons le voir, l'indicateur est inséré dans la partie inférieure de l'image précédente et montre que la ligne de l'indicateur oscille au-dessus et en dessous du niveau Zéro.


Stratégie de l'Oscillateur de Chaikin

Dans cette rubrique, nous allons apprendre des stratégies simples pour utiliser l'indicateur Oscillateur de Chaikin en se basant sur son concept principal. Ce sera une bonne approche pour réfléchir à la manière d’utiliser un autre outil technique pour améliorer notre décision. Je dois également vous confirmer ici qu'il faut s'assurer de tester toute stratégie avant de l'utiliser sur votre compte réel afin de s'assurer qu'elle vous conviendra, surtout si vous l'avez apprise par le biais d'un sujet éducatif comme celui-ci.

  • 1ère stratégie : Oscillateur Chaikin Crossover (Croisement de l’Oscillateur de Chaikin)

Selon cette stratégie, nous devons obtenir des signaux d'achat, ou de vente, basés sur le croisement entre la valeur de Chaikin actuelle et le niveau zéro. Lorsque la valeur actuelle de Chaikin est supérieure à zéro, c’est un signal d'achat. Au contraire, lorsque la valeur actuelle de Chaikin devient inférieure à zéro, il s'agit d'un signal de vente.

Plus simplement :

Valeur actuelle de Chaikin > niveau 0 --> signal d'achat

Valeur actuelle de Chaikin < niveau 0 --> signal de vente

  • 2ème stratégie : Mouvement de l'Oscillateur de Chaikin :

Selon cette stratégie, nous devons obtenir un signal avec le mouvement de la courbe de l'indicateur de Chaikin basé sur ses 2 dernières valeurs. Lorsque la valeur actuelle de Chaikin est supérieure à la valeur précédente, il s'agit d'un signal de mouvement haussier. Inversement, lorsque la valeur actuelle de Chaikin est inférieure à la valeur précédente, il s'agit d'un signal de mouvement baissier.

Plus simplement :

Valeur actuelle de Chaikin > valeur précédente de Chaikin --> mouvement haussier

Valeur actuelle de Chaikin < valeur précédente de Chaikin --> mouvement baissier

  • 3ème stratégie : Oscillateur de Chaikin - Tendance Haussière

Selon cette stratégie, pendant une tendance haussière, nous devons savoir si la hausse est forte ou s'il y a une divergence baissière en évaluant les valeurs maximales actuelles et précédentes et les valeurs de Chaikin actuelles et précédentes. Si le sommet actuel est supérieur au sommet précédent et que la valeur de Chaikin actuelle est supérieure à la valeur de Chaikin précédente, il s'agit d'un signal de fort mouvement haussier pendant la tendance haussière. Si le sommet actuel est supérieur au sommet précédent et que la valeur de Chaikin actuelle est inférieure à la valeur de Chaikin précédente, il s'agit d'un signal de divergence baissière.

Plus haut actuel > Plus haut précédent et Chaikin actuel > Chaikin précédent --> Fort mouvement haussier pendant la tendance haussière.

Plus haut actuel > plus haut précédent et Chaikin actuel < Chaikin précédent --> divergence baissière.

  • 4ème stratégie : Oscillateur de Chaikin - Tendance Baissière

Selon cette stratégie, pendant une tendance baissière, nous devons savoir si le mouvement de baisse est fort ou s'il y a une divergence haussière en évaluant les valeurs basses actuelles et précédentes et les valeurs de Chaikin actuelles et précédentes. Si le plus bas actuel est inférieur au plus bas précédent et que la valeur de Chaikin actuelle est inférieure à la précédente, il s'agit d'un fort mouvement baissier au cours de la tendance baissière. Si le plus bas actuel est plus bas que le précédent et que le Chaikin actuel est plus haut que le précédent, il s'agit d'un signal de divergence haussière.

Plus bas actuel < plus bas précédent et Chaikin actuel < Chaikin précédent --> Fort mouvement baissier pendant la tendance baissière

Plus bas actuel < plus bas précédent et Chaikin actuel > Chaikin précédent --> divergence haussière


Plan de la stratégie de l'Oscillateur de Chaikin

Dans cette rubrique, nous allons concevoir un plan détaillé qui nous aidera à créer notre système de trading pour chaque stratégie. Cette étape est très importante car elle organisera nos idées de manière à atteindre notre objectif. C’est parti.

  • 1ère stratégie : Oscillateur Chaikin Crossover (Croisement de l’Oscillateur de Chaikin)

Selon cette stratégie, nous devons créer un système de trading qui affiche un commentaire spécifique sur le graphique une fois qu'une condition spécifique est remplie. Le système de trading doit vérifier la valeur de l'Oscillateur de Chaikin à chaque tick. Lorsque cette valeur devient supérieure au niveau 0, le système de trading doit afficher sur le graphique un commentaire avec un signal d'achat et la valeur actuelle de Chaikin, chacun sur une ligne séparée. Dans l'autre scénario, le système de trading doit afficher un commentaire avec un signal de vente et la valeur actuelle de Chaikin, chacun sur une ligne séparée, lorsque la valeur de Chaikin est passée en dessous du niveau 0.

Voici une illustration de ce plan :

Plan de la stratégie Oscillateur Chaikin Crossover

  • 2ème stratégie : Chaikin Oscillator Movement (Mouvement de l'Oscillateur de Chaikin)

Sur la base de cette stratégie, le système de trading doit vérifier 2 valeurs et décider laquelle est plus grande que l'autre à chaque tick. Ces 2 valeurs sont la valeur actuelle de l'Oscillateur de Chaikin et sa valeur précédente. Lorsque la valeur actuelle est supérieure à la précédente, le système de trading doit renvoyer un commentaire avec : L'Oscillateur de Chaikin monte, la valeur de Chaikin actuelle, la valeur de Chaikin précédente, chacune sur une ligne séparée. Lorsque la valeur actuelle est inférieure à la précédente, le système de trading doit renvoyer un commentaire avec : L'Oscillateur de Chaikin est en baisse, valeur actuelle de Chaikin, valeur précédente de Chaikin.

Voici le schéma de cette stratégie :

Plan du Mouvement de l'Oscillateur de Chaikin

  • 3ème stratégie : Oscillateur de Chaikin - Tendance Haussière

Selon cette stratégie, le système de trading doit vérifier 4 valeurs à chaque tick, à savoir le sommet actuel, le sommet précédent, le Chaikin actuel et le Chaikin précédent. Après avoir vérifié ces valeurs, le système de trading doit décider laquelle est la plus grande entre les sommets actuels et précédents et entre les valeurs Chaikin actuelles et précédentes. Lorsque le sommet actuel est supérieur au sommet précédent et que la valeur de Chaikin actuelle est supérieure à la valeur de Chaikin précédente, le système de trading doit afficher un commentaire de fort mouvement haussier pendant la tendance haussière, la valeur haute actuelle, la valeur haute précédente, la valeur de Chaikin actuelle et la valeur de Chaikin précédente, chaque valeur doit également être sur une ligne séparée. Dans l'autre scénario, lorsque le sommet actuel est supérieur au sommet précédent et que le Chaikin actuel est inférieur au Chaikin précédent, le système de trading doit afficher un commentaire sur le graphique avec une divergence baissière, la valeur haute actuelle, la valeur haute précédente, la valeur de Chaikin actuelle, la valeur de Chaikin précédente, et chaque valeur doit être dans une ligne séparée.

Voici le schéma de cette stratégie :

Schéma de l'Oscillateur de Chaikin

  • 4ème stratégie : Oscillateur de Chaikin - Tendance Baissière

Sur la base de cette stratégie, nous devons créer un système de trading qui vérifie continuellement 4 valeurs à chaque tick. Ces valeurs sont la valeur basse actuelle, la valeur basse précédente, la valeur de Chaikin actuelle et la valeur de Chaikin précédente. Le système doit ensuite décider si la valeur basse actuelle est inférieure à la valeur basse précédente et si la valeur de Chaikin actuelle est inférieure à la valeur de Chaikin précédente. Dans ce cas, le système de trading doit renvoyer un commentaire sur le graphique avec un fort mouvement à la baisse, la valeur basse actuelle, la valeur basse précédente, la valeur de Chaikin actuelle et la valeur de Chaikin précédente, chaque valeur dans une ligne séparée. L'autre scénario pour détecter la divergence, lorsque la valeur basse actuelle est inférieure à la valeur basse précédente et que la valeur de Chaikin actuelle est supérieure à la valeur de Chaikin précédente, nous avons besoin que le système de trading renvoie un commentaire avec une divergence haussière, la valeur basse actuelle, la valeur basse précédente, la valeur de Chaikin actuelle et la valeur de Chaikin précédente, chaque valeur dans une ligne séparée.

L'image suivante représente ce plan :

Oscillateur de Chaikin - Plan de la tendance baissière

L’Oscillateur de Chaikin est en hausse

Système de trading de l’Oscillateur de Chaikin

Dans cette partie, nous allons apprendre comment transformer les stratégies mentionnées en un système de trading fonctionnant automatiquement en codant avec MQL5. Nous allons donc commencer à coder un système de trading simple pour faire apparaître la valeur actuelle de l'Oscillateur de Chaikin sur le graphique sous forme de commentaire. Nous utiliserons ensuite ce système de trading comme base pour toutes nos stratégies. Ce qui suit est destiné à la création de ce système de trading.

  • Création d'un tableau des valeurs de l'Oscillateur de Chaikin de type "double". Le type "double" est l'un des types de données à virgule flottante.
double chaiArray[];
  • Nous allons trier ce tableau créé à partir des données actuelles en utilisant la fonction "ArraySetAsSeries" qui renvoie une valeur booléenne. Les paramètres de l'option "ArraySetAsSeries" sont les suivants :
    • Un tableau[]
    • Un drapeau
ArraySetAsSeries(chaiArray,true);
  • Création d'une variable entière chaiDef pour définir l'Oscillateur de Chaikin en utilisant la fonction "iChaikin". Cette fonction renvoie un handle sur l'indicateur de l'Oscillateur de Chaikin qui nous permettra de manipuler cet indicateur. Les paramètres de cette fonction sont les suivants :
    • symbol, pour définir le nom du symbole. Nous utiliserons "_Symbol" pour l’appliquer sur le graphique actuel.
    • period, pour définir la période. Nous utiliserons "_Period" pour l’appliquer à la période en cours.
    • fast_ma_period, pour définir la longueur de la moyenne mobile rapide. Nous mettrons 3 par défaut.
    • slow_ma_period, pour définir la longueur de la moyenne mobile lente. Nous mettrons 10 par défaut.
    • ma_method, pour déterminer le type de la moyenne mobile. Nous utiliserons une moyenne mobile exponentielle (MODE_EMA).
    • applied_volume, pour déterminer le type de volume. Nous utiliserons le volume par tick (VOLUME_TICK).
int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);
  • Copie des données des prix dans le tableau chaiArray en utilisant la fonction "CopyBuffer" qui renvoie le nombre de données copiées ou -1 en cas d'erreur. Les paramètres de cette fonction sont les suivants :
    • indicator_handle, pour spécifier le handle sur l’indicateur. Nous spécifierons la définition de l'indicateur "chaiDef".
    • buffer_num, pour définir le numéro de buffer de l'indicateur. Nous mettrons 0 pour spécifier que c’est le premier buffer.
    • start_pos, pour définir la position de départ. Nous mettrons 0.
    • count, pour définir le nombre d’éléments à copier. Nous mettrons 3.
    • buffer[], pour passer le tableau cible. Nous mettrons "chaiArray".
CopyBuffer(chaiDef,0,0,3,chaiArray);
  • Obtention de la valeur de l'Oscillateur de Chaikin en utilisant la fonction "NormalizeDouble" de type double après avoir créé une variable double "chaiVal". Les paramètres de "Normalizedouble" sont les suivants :
    • value, pour déterminer le nombre à normaliser. Nous spécifierons "chaiArray[0]". 0 permet de retourner la valeur actuelle.
    • digits, pour déterminer le nombre de chiffres après la virgule. Nous mettrons 6.
int chaiVal = NormalizeDouble(chaiArray[0],6);
  • Utilisation de la fonction "comment" pour renvoyer la valeur actuelle de l'Oscillateur de Chaikin sous forme de commentaire sur le graphique.
Comment("Chaikin Oscillator Value is ",chaiVal);

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

//+------------------------------------------------------------------+
//|                                    Simple Chaikin Oscillator.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);

   Comment("Chaikin Oscillator Value is ",chaiVal);

  }
//+------------------------------------------------------------------+

Après avoir compilé ce code, nous pouvons trouver le fichier de ce programme dans la fenêtre du Navigateur dans le dossier Expert Advisors :

Navigator

Pour exécuter cet Expert Advisor, nous le glissons et le déposons sur le graphique. Après quoi, la fenêtre suivante du programme s'affiche :

Fenêtre de l'Oscillateur de Chaikin Simple

Après avoir appuyé sur "OK", l’Expert Advisor sera attaché au graphique :.

Oscillateur de Chaikin Simple attaché

Comme nous pouvons le voir dans le coin supérieur droit du graphique précédent, l'expert est maintenant attaché au graphique. Les signaux sont ensuite générés :

Signal de l'Oscillateur de Chaikin

Comme nous pouvons le voir dans l'exemple précédent, dans le coin supérieur gauche du graphique, nous avons maintenant un commentaire avec la valeur actuelle de l'Oscillateur de Chaikin. Si nous voulons nous assurer que la valeur générée sera la même que celle générée par l'indicateur intégré dans MetaTrader5, nous pouvons insérer l'indicateur avec les mêmes paramètres . Nous trouverons alors les valeurs des deux comme suit :

Oscillateur de Chaikin - même signal

Comme nous pouvons le voir dans le coin droit du graphique, l’Expert Advisor est attaché au graphique. Dans le coin gauche, nous pouvons trouver la valeur générée par l'expert, qui est la même que la valeur de l'indicateur inséré dans la sous-fenêtre.

  • 1ère stratégie : Oscillateur Chaikin Crossover (Croisement de l’Oscillateur de Chaikin)

Le code complet permettant de créer un système de trading basé sur cette stratégie est présenté ci-dessous :

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator 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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);
   
   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

  }
//+------------------------------------------------------------------+

Voici les différences dans le code :

Conditions du croisement de l'Oscillateur de Chaikin :

En cas de signal d'achat :

   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

En cas de signal de vente :

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

Après avoir compilé ce code, nous trouverons le fichier de l'Expert Advisor dans la fenêtre du Navigateur comme suit :

Navigator 1

Après l'avoir glissé et déposé sur le graphique, la fenêtre de l'expert s'affiche comme suit :

Fenêtre de Chaikin Oscillator Crossover

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

Chaikin Oscillator Crossover attaché

Comme nous pouvons le voir dans le coin supérieur droit, l'expert Chaikin Oscillator Crossover est attaché au graphique. Nous pouvons maintenant voir les signaux générés selon cette stratégie. Voici un exemple.

En cas de signal d'achat :

Chaikin Oscillator Crossover - signal d'achat

Comme nous pouvons le voir dans le coin supérieur gauche du graphique, le signal d'achat a été généré lorsque la valeur de l'Oscillateur de Chaikin a dépassé le niveau 0.

En cas de signal de vente :

Croisement de l'oscillateur de Chaikin - signal de vente

Comme nous pouvons le voir dans le coin supérieur gauche du graphique, le signal de vente a été généré lorsque la valeur de l'Oscillateur de Chaikin est passée sous le niveau 0.

  • 2ème stratégie : Mouvement de l'Oscillateur de Chaikin

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

//+------------------------------------------------------------------+
//|                                  Chaikin Oscillator Movement.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Les différences dans ce code sont les suivantes :

Définition des valeurs actuelles et précédentes de l'Oscillateur de Chaikin :

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Conditions de la stratégie.

En cas de hausse :

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

En cas de baisse :

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Après avoir compilé ce code, nous le trouverons dans la fenêtre du Navigateur sous la forme suivante :

 Navigator 2

Après avoir glissé et déposé l'expert sur le graphique, la fenêtre du programme est affichée :

Fenêtre de l’expert Chaikin Oscillator Movement

Après avoir appuyé sur "OK", il sera attaché au graphique de la manière suivante :

Mouvement de l'Oscillateur de Chaikin attaché

Voici des exemples de signaux générés sur la base de cette stratégie.

En cas de hausse des données actuelles :

Mouvement de l'Oscillateur de Chaikin - signal de hausse avec les données actuelles

En cas de hausse avec les données précédentes :

Mouvement de l'Oscillateur de Chaikin - signal de hausse avec les données précédentes

Comme on peut le voir dans les graphiques précédents, 3 lignes apparaissent dans le coin supérieur gauche :

  • L'Oscillateur de Chaikin augmente
  • La valeur actuelle de l'Oscillateur de Chaikin
  • La valeur précédente de l'Oscillateur de Chaikin

L'autre scénario en cas de baisse, avec les données actuelles :

Mouvement de l'Oscillateur de Chaikin - signal de baisse avec les données actuelles

En cas de baisse, avec les données précédentes :

Mouvement de l'Oscillateur de Chaikin - signal de baisse avec les données précédentes

Comme nous pouvons le voir dans les graphiques précédents, nous avons un commentaire affiché sur le graphique dans le coin supérieur gauche :

L'Oscillateur de Chaikin est en baisse.

La valeur actuelle de l'Oscillateur de Chaikin.

La valeur précédente de l'Oscillateur de Chaikin.

  • 3ème stratégie : Oscillateur de Chaikin - Tendance Haussière

Vous trouverez ci-dessous le code complet permettant de créer un système de trading selon cette stratégie :

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator - Uptrend.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 chaiArray[];
   MqlRates priceArray[];

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

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentHighVal=NormalizeDouble(priceArray[2].high,6);
   double prevHighVal=NormalizeDouble(priceArray[1].high,6);

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Les différences dans ce code sont les suivantes :

Création de 2 tableaux ChaiArray (de la même manière que nous l'avons appris) et priceArray en utilisant la fonction "MqlRates" qui stocke des informations sur les prix, les volumes et l'écart.

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

Définition des valeurs actuelle et précédente de l'Oscillateur de Chaikin.

int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Définition des valeurs des sommets actuels et précédents.

double currentHighVal=NormalizeDouble(priceArray[2].high,6);
double prevHighVal=NormalizeDouble(priceArray[1].high,6);

Conditions de cette stratégie :

En cas de mouvement fort pendant la tendance haussière :

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

En cas de divergence baissière :

   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Après avoir compilé ce code, nous le trouverons en tant qu'expert dans le Navigateur :

Navigator 3

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

Fenêtre Chaikin Oscillator - Tendance haussière

Après avoir appuyé sur "Ok", l'expert est attaché au graphique comme ci-dessous :

Oscillateur de Chaikin - Tendance haussière attaché

Voici des exemples de signaux générés à partir de ce système de trading.

Dans le cas d'un mouvement fort avec les données actuelles :

Oscillateur de Chaikin - Tendance haussière - forte - données actuelles

En cas de fort mouvement, avec les données précédentes :

Oscillateur de Chaikin - Tendance haussière - forte - données précédentes

Comme nous pouvons le voir dans les deux graphiques précédents, nous avons 5 lignes de commentaires dans le coin supérieur gauche du graphique :

  •  Une forte hausse pendant la tendance haussière
  • La valeur haute actuelle
  • La valeur haute précédente
  • La valeur actuelle de Chaikin
  • La valeur précédente de Chaikin

Dans l'autre scénario, lorsque nous avons une divergence baissière avec les données actuelles :

Oscillateur de Chaikin - Tendance haussière - divergence - données actuelles

En cas de divergence baissière avec les données précédentes :

Oscillateur de Chaikin - Tendance haussière - divergence - données précédentes

Comme nous pouvons le voir dans les deux graphiques précédents, nous avons un commentaire formé de 5 lignes :

Divergence baissière.

La valeur haute actuelle.

La valeur haute précédente.

La valeur actuelle de Chaikin.

La valeur précédente de Chaikin.

  • 4ème stratégie : Oscillateur de Chaikin - Tendance Baissière

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

//+------------------------------------------------------------------+
//|                               Chaikin Oscillator - Downtrend.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 chaiArray[];
   MqlRates priceArray[];

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

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentLowVal=NormalizeDouble(priceArray[2].low,6);
   double prevLowVal=NormalizeDouble(priceArray[1].low,6);

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

La différence dans ce code réside dans les conditions de cette stratégie :

En cas de forte baisse pendant la tendance baissière :

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

En cas de divergence haussière :

   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Après avoir compilé ce code, nous trouverons l'expert de cette stratégie dans la fenêtre du Navigateur :

Navigator 4

En glissant et déposant cet expert sur le graphique, la fenêtre du programme est affiché de la façon suivante :

Fenêtre Chaikin Oscillator - Tendance baissière

Après avoir appuyé sur "OK", l'expert est attaché au graphique :

Chaikin Oscillator - Tendance baissière attaché

Voici des exemples de signaux générés à partir de cette stratégie lors de tests :

En cas de forte baisse pendant la tendance baissière avec les données actuelles :

Oscillateur de Chaikin - Tendance baissière - forte - données actuelles

En cas de forte baisse, avec les données précédentes :

Oscillateur de Chaikin - Tendance baissière - forte - données précédentes

Comme nous pouvons le voir dans les deux graphiques précédents, nous avons un commentaire formé de 5 lignes :

  • Fort mouvement de baisse pendant la tendance baissière
  • La valeur basse actuelle
  • La valeur basse précédente
  • La valeur actuelle de Chaikin
  • La valeur précédente de Chaikin

Dans l'autre scénario de divergence haussière, voici des exemples de signaux générés :

En cas de divergence haussière avec les données actuelles :

Oscillateur de Chaikin - Tendance baissière - divergence - données actuelles

En cas de divergence haussière avec les données précédentes :

Oscillateur de Chaikin - Tendance baissière - divergence - données précédentes 

Comme nous pouvons le voir dans les deux graphiques précédents, nous avons un commentaire formé de 5 lignes :

  • Divergence haussière
  • La valeur basse actuelle
  • La valeur basse précédente
  • La valeur actuelle de Chaikin
  • La valeur précédente de Chaikin


Conclusion

Avec les sujets précédents, nous avons découvert l'Oscillateur de Chaikin en détail. Nous avons appris ce qu'il est, ce qu'il mesure, comment nous pouvons le calculer manuellement et comment nous pouvons utiliser et insérer l'indicateur intégré de MetaTrader 5. Nous avons également appris comment l'utiliser simplement en nous basant sur son concept principal, car nous avons appris plusieurs stratégies :

  • Croisement de l'Oscillateur de Chaikin : pour obtenir des signaux d'achat et de vente basés sur le croisement du niveau 0.
  • Mouvement de l'Oscillateur de Chaikin : pour obtenir des signaux nous informant du mouvement de la ligne de l'indicateur, si elle est à la hausse ou à la baisse.
  • Oscillateur de Chaikin - Tendance haussière : pour obtenir des signaux lorsque nous avons un fort mouvement haussier pendant la tendance haussière, ou s'il y a une divergence baissière.
  • Oscillateur de Chaikin - Tendance baissière : pour obtenir des signaux lorsque nous avons un fort mouvement baissier pendant la tendance baissière, ou s'il y a une divergence haussière.

Nous avons également conçu un schéma directeur pour chaque stratégie afin de nous aider à créer un système de trading pour chacune d'entre elles. Il s'agit d'une étape très importante pour organiser notre idée afin d'atteindre notre objectif en douceur. Nous avons appris à créer un système de trading pour chaque stratégie afin de générer des signaux automatiquement après les avoir exécutés dans MetaTrader 5 pour faciliter et améliorer notre trading et obtenir de meilleurs résultats, tout en économisant notre temps.

Je vous confirme à nouveau que vous devez tester toute stratégie avant de l'utiliser sur votre compte réel car il n'y a rien qui convienne à tout le monde. Ce sur quoi je dois insister ici, c'est sur la nécessité d'appliquer ce que vous apprenez et de pratiquer par vous-même si vous avez besoin d'améliorer vos compétences en programmation. La pratique est un facteur important dans tout parcours d'apprentissage et de développement. J'espère que cet article vous sera utile. Vous pouvez lire d'autres articles de cette série sur la façon de concevoir un système de trading basé sur les indicateurs techniques les plus populaires.

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

Derniers commentaires | Aller à la discussion (1)
Gerard Willia G J B M Dinh Sy
Gerard Willia G J B M Dinh Sy | 10 mai 2023 à 17:06
Merci
Algorithmes d'optimisation de la population : Essaim de Particules (OEP ou PSO en anglais) Algorithmes d'optimisation de la population : Essaim de Particules (OEP ou PSO en anglais)
Dans cet article, j'examinerai l'algorithme populaire d'Optimisation par Essaims Particulaires (OEP ou Particle Swarm Optimization - PSO). Précédemment, nous avons abordé les caractéristiques importantes des algorithmes d'optimisation telles que la convergence, le taux de convergence, la stabilité et l'évolutivité, et nous avons développé un banc d'essai et examiné l'algorithme RNG le plus simple.
Apprenez à concevoir un système de trading basé sur l'Ecart-Type (Standard Deviation) Apprenez à concevoir un système de trading basé sur l'Ecart-Type (Standard Deviation)
Voici un nouvel article de notre série sur la conception d’un système de trading à l'aide des indicateurs techniques les plus populaires sur la plateforme de trading MetaTrader 5. Dans ce nouvel article, nous allons apprendre à concevoir un système de trading basé sur l'indicateur Standard Deviation (écart-type).
Algorithmes d'optimisation de la population Algorithmes d'optimisation de la population
Cet article est une introduction à la classification des algorithmes d'optimisation (Optimization Algorithm - OA). L'article tente de créer un banc d'essai (un ensemble de fonctions), pouvant être utilisé pour comparer les OA et, peut-être, identifier l'algorithme le plus universel parmi tous ceux qui sont largement connus.
Développer un Expert Advisor de trading à partir de zéro (Partie 17) : Accès aux données sur le web (3) Développer un Expert Advisor de trading à partir de zéro (Partie 17) : Accès aux données sur le web (3)
Dans cet article, nous poursuivons notre étude sur la manière d'obtenir des données à partir du web et de les utiliser dans un Expert Advisor. Cette fois-ci, nous allons élaborer un système alternatif.