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

Apprenez à concevoir un système de trading basé sur le MFI de Bill Williams

MetaTrader 5Trading | 23 septembre 2024, 11:35
675 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Voici un nouvel article de notre série sur l'apprentissage de la conception de systèmes de trading basés sur les indicateurs techniques les plus populaires. Nous allons présenter dans cet article un nouvel outil technique qui peut être un complément utile à votre activité de trading, en particulier si vous l'utilisez avec d'autres outils techniques pour obtenir de meilleures informations. Nous allons nous familiariser avec l'Indice de Facilitation du Marché, ou Market Facilitation Index, de Bill Williams (BW MFI). Cet indicateur sera couvert avec les thèmes suivants :

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

Nous utiliserons la plateforme de trading MetaTrader 5 pour tester les stratégies de cet article et nous utiliserons l'IDE MQL5 (MetaQuotes Language) pour construire nos systèmes de trading. Si vous ne savez pas comment les télécharger et les utiliser, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor de mon article précédent pour plus de détails.

Toutes les stratégies mentionnées dans cet article sont uniquement à des fins éducatives. Vous devez les tester avant de les utiliser sur votre compte réel. Ils ont certainement besoin d'être optimisés. Certaines stratégies peuvent ne pas convenir à votre style de trading, car il n'y a rien qui convienne à tout le monde. Il vous sera également très utile, en tant que codeur, d'essayer d'appliquer vous-même ce que vous avez lu, car cela vous aidera à améliorer vos compétences en matière de programmation.

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 utilisez le contenu de cet article sur l'un de vos comptes de trading, vous le faites à vos propres risques et vous en serez le seul responsable.


Définition du BW MFI

Dans cette rubrique, nous allons découvrir en détail l'indicateur Market Facilitation Index (MFI). Il s'agit de l'un des indicateurs techniques développés par le célèbre trader et auteur Bill Williams. Cet indicateur vise à mesurer la direction du marché en étudiant et en analysant le prix et le volume. Cela nous aidera, en tant que traders, à détecter les mouvements futurs du marché et nous donnera des indications sur la force du mouvement actuel des prix : s'il se poursuivra ou s'il s'inversera. Cela peut être très utile pour nous, car cela nous aide à négocier avec le groupe le plus fort du marché et à prendre la bonne décision.

Pour comprendre la situation, nous pouvons analyser le MFI et le volume. Les cas peuvent être les suivants :

  • Si le BW MFI et le volume augmentent, cela indique que les participants au marché sont intéressés par cet instrument financier.
  • Si le BW MFI et le volume diminuent, cela indique que les participants au marché ne sont pas intéressés par cet instrument financier.
  • Si le BW MFI augmente mais que le volume diminue, cela indique que le mouvement actuel n'est pas soutenu par le volume.
  • Si le BW MFI diminue mais que le volume augmente, cela indique qu'il existe un équilibre sur le marché entre les acheteurs et les vendeurs.

Voyons maintenant comment calculer manuellement le BW MFI. Cela aidera à comprendre l'idée principale ou le concept sous-jacent. Nous n'avons pas besoin de le faire aujourd'hui puisque nous pouvons simplement utiliser l'indicateur intégré dans MetaTrader 5. Pour calculer le BW MFI, il faut diviser le résultat par le volume après avoir soustrait les prix haut et bas.

BW MFI = (Haut - Bas) / Volume

Avec :

High => le prix le plus élevé
Low => le prix le plus bas
Volume => le volume actuel

Mais comme je l'ai mentionné ci-dessus, nous n'avons pas besoin de le calculer manuellement. Nous n’avons qu’à le choisir parmi les indicateurs disponibles dans MetaTrader 5. Je vous montre ci-dessous comment procéder.

Ouvrez le terminal MetaTrader 5, sélectionnez le menu Insertion -> Indicateurs -> Bill Williams -> Market Facilitation Index. Il est illustré dans l'image suivante :

Insertion du BW MFI

La fenêtre des paramètres de l'indicateur est ensuite affichée :

Fenêtre BW MFI

1 — la couleur pour indiquer l'augmentation du MFI et du volume.

2 — la couleur pour indiquer le cas où le MFI et le volume diminuent.

3 — la couleur pour indiquer le cas où le MFI augmente et le volume diminue.

4 — la couleur pour indiquer le cas où le MFI diminue et le volume augmente.

5 — le type de volume (Tick ou Réel).

6 — l'épaisseur des barres de l'indicateur.

Après avoir déterminé les paramètres ci-dessus et appuyé sur OK, l'indicateur sera attaché au graphique comme dans l'exemple suivant :

BW MFI attaché

Comme vous pouvez le voir dans l'image précédente, l'indicateur apparaît dans la sous-fenêtre du graphique. Il apparaît sous forme de barres avec des valeurs et des couleurs différentes en fonction du prix et du volume basés, d’après les calculs de l'indicateur BW MFI. Chaque couleur et valeur de l'indicateur indique un état spécifique des mouvements de prix.

  • Barre verte : signifie que le BW MFI et le volume augmentent, ce qui indique que les participants du marché sont intéressés par cet instrument.
  • Barre brune : signifie que le BW MFI et le volume diminuent, ce qui indique que personne n'est intéressé par l'instrument.
  • Barre bleue : signifie que le BW MFI augmente et que le volume diminue, ce qui indique que le mouvement du marché n'est pas soutenu par le volume.
  • Barre rose : signifie que le BW MFI diminue et que le volume augmente, ce qui indique qu'il y a un équilibre entre les haussiers et les baissiers.

Stratégie BW MFI

Dans cette rubrique, nous partagerons quelques stratégies simples à utiliser sur la base de l'idée principale de l'indicateur BW MFI à des fins d'éducation. N'oubliez pas qu'ils nécessitent une optimisation, une modification de certains paramètres ou une combinaison avec d'autres indicateurs techniques pour obtenir de meilleurs résultats. Il est donc très important de les tester avant de les utiliser sur votre compte réel afin de vous assurer qu'ils sont rentables et utiles pour votre trading.

Première stratégie : BW MFI - Statut du Mouvement

Sur la base de cette stratégie, nous devons obtenir l'état de l'évolution de l'indicateur BW MFI en fonction de l'ordre des valeurs du MBW MFI et du volume. D'après cela, nous aurons 4 états :

  • Si la valeur actuelle du BW MFI est supérieure à la précédente et si le volume actuel est supérieur au précédent. La barre est donc verte et sera le signal d'un état vert.
  • Si la valeur actuelle du BW MFI est inférieure à la précédente et si le volume actuel est inférieur au précédent. Alors, la barre est marron et sera un signal d'un état de déclin.
  • Si la valeur actuelle du BW MFI est supérieure à la précédente et que le volume actuel est inférieur au précédent. Alors, la barre est bleue et sera le signal d'un faux état.
  • Si la valeur actuelle du BW MFI est inférieure à la précédente et que le volume actuel est supérieur au précédent. Alors, la barre est rose, ce sera le signal d'un état d’équilibre.

Plus simplement :

  • BW MFI actuel > BW MFI précédent et volume actuel > volume précédent ==> état vert - barre verte
  • BW MFI actuel < BW MFI précédent et volume actuel < volume précédent ==> état de déclin - barre brune
  • BW MFI actuel > BW MFI précédent et volume actuel < volume précédent ==> état faux - barre bleue
  • BW MFI actuel < BW MFI précédent et volume actuel > volume précédent ==> état d’équilibre - barre rose

Deuxième stratégie : Signaux du MW MFI

Sur la base de cette stratégie, nous devons obtenir un signal basé sur l'état de l'indicateur BW MFI. Tout d'abord, nous devons déterminer l'état du marché, comme nous l'avons fait dans le cadre de la stratégie précédente. Nous prendrons ensuite notre décision en fonction de ces éléments. Selon cette stratégie, nous aurons 4 signaux :

  • Si l'état est vert, c'est un signal pour trouver une bonne entrée.
  • Si l'état est un déclin, ce sera un signal pour trouver une bonne sortie.
  • Si l'état est faux, il s'agira d'un signal de fausse probabilité de breakout.
  • Si l'état est l’équilibre, c'est le signe que le marché est équilibré.

3ème stratégie : BW MFI avec MA

Sur la base de cette stratégie, nous utiliserons un autre indicateur technique, la moyenne mobile (MA), pour obtenir un signal d'achat ou de vente. Si l'état est vert et que le prix de clôture est supérieur à la moyenne mobile, il s'agit d'un signal d'achat. Dans l'autre scénario, si l'état est vert et que le prix de clôture est inférieur à la moyenne mobile, il s'agit d'un signal de vente. Cette méthode s'appuie sur les caractéristiques de l'analyse technique, car nous pouvons combiner les outils techniques pour obtenir plus d'informations et voir des perspectives différentes. Vous pouvez également le faire avec d'autres outils techniques pour obtenir plus d'informations, comme un support ou une résistance, le MACD, les moyennes mobiles ou tout autre outil technique utile pour filtrer les signaux générés.

Plus simplement :

  • Etat vert et prix de clôture > MA ==> Signal d'achat
  • État vert et prix de clôture < MA ==> Signal de vente

Plan de la stratégie BW MFI

Dans cette partie, nous allons considérer une étape très importante dans la conception de notre système de trading : un plan détaillé étape par étape pour chaque stratégie mentionnée. Un plan permet de créer le système de trading en douceur, car il visualise ce que nous devons demander à l'ordinateur de faire. Nous pouvons donc considérer cette étape comme une étape de planification de notre stratégie à venir.

 Première stratégie : BW MFI - Statut du Mouvement

Selon cette stratégie, nous devons créer un système de trading pour obtenir un signal du mouvement de l'indicateur BW MFI basé sur la couleur de la barre de l'indicateur, déterminée selon la nature de l'indicateur en comparant 4 valeurs chaque tick pour déterminer la position de chacune d'entre elles. Ces 4 valeurs sont le MFI actuel, le MFI précédent, les volumes actuels et les volumes précédents. Le programme doit les vérifier et déterminer la position de chaque valeur. Lorsque la valeur actuelle du BW MFI est supérieure à la précédente et que, dans le même temps, le volume actuel est supérieur au précédent, le système de trading doit renvoyer un commentaire sur le graphique avec "État vert - Barre verte". C'est le premier cas. La seconde est lorsque le BW MFI actuel est inférieur au précédent et que, dans le même temps, la valeur du volume actuel est inférieure à la précédente, le système de trading renvoie un commentaire sur le graphique avec "Etat de déclin - Barre brune". Le troisième cas est celui où la valeur actuelle du BW MFI est supérieure à la précédente et où, dans le même temps, la valeur du volume actuel est inférieure à la précédente. Le système doit alors renvoyer un commentaire sur le graphique avec la mention "Faux état - barre bleue". Le quatrième et dernier cas est celui où la valeur actuelle du BW MFI est inférieure à la précédente et où la valeur du volume actuel est supérieure à la précédente, nous devons obtenir un commentaire sur le graphique avec "Equilibre - Barre rose".

Le graphique suivant donne le schéma directeur de la stratégie d'état des mouvements :

Schéma directeur du Statut du Mouvement

Deuxième stratégie : Signaux du MW MFI

Selon cette stratégie et après avoir identifié chaque état basé sur les barres de l'indicateur, nous devons créer un système de trading qui peut être utilisé pour afficher un commentaire sur le graphique avec le signal approprié basé sur l’état de l'indicateur BW MFI. Pour ce faire, nous devons créer un système de trading capable de vérifier les 4 états à chaque tick et de renvoyer un signal approprié en fonction de ceux-ci. Si l'état du BW MFI est un état vert identifié dans le système de trading, nous devons obtenir un signal sous la forme d'un commentaire sur le graphique avec "Trouver une bonne entrée". Dans le deuxième cas, lorsque l'on vérifie l'état de l'indicateur et que l'on constate qu'il s'agit d'un état de déclin, il faut que le système de trading renvoie un signal sous la forme d'un commentaire sur le graphique avec la mention "Trouver une bonne sortie". Le troisième scénario, ou état, consiste à vérifier l'état du BW MFI et à constater qu'il s'agit d'un faux état. Le système de trading doit alors renvoyer un commentaire sur le graphique en tant que signal avec une "probabilité de fausse rupture". Le dernier état est celui où, après avoir vérifié qu'il s'agit d'un état d’équilibre, nous devons obtenir un commentaire sur le graphique en tant que signal avec "Le marché est équilibré".

Le graphique suivant donne le schéma directeur de la stratégie des signaux :

Plan des Signaux du BW MFI

3ème stratégie : BW MFI avec MA

Selon cette stratégie, nous devons créer un système de trading capable de renvoyer un signal d'achat ou de vente sur la base de l'indicateur BW MFI et d’une moyenne mobile simple. Le système de trading doit vérifier en permanence le prix de clôture, la moyenne mobile simple actuelle et l'état de l'indicateur BW MFI actuel après avoir identifié ses 4 états à chaque tick. Si le système de trading constate que le cours de clôture est supérieur à la valeur actuelle de la moyenne mobile simple et que, dans le même temps, l'état actuel du BW MFI est vert, le système de trading doit renvoyer un signal d'achat sous la forme d'un commentaire sur le graphique. S'il constate que le prix de clôture est inférieur à la moyenne mobile simple actuelle et que, dans le même temps, l'état du BW MFI actuel est vert, le système de trading doit renvoyer un signal de vente sous la forme d'un commentaire sur le graphique. S'il y a autre chose, le système de trading ne doit rien renvoyer.

Le graphique suivant est le plan de la stratégie BW MFI avec MA :

Plan de BW MFI avec MA

Système de trading BW MFI

Nous allons commencer à créer notre système de trading pour chaque stratégie mentionnée dans cette partie de l'article. Nous commençons à créer un système de trading simple qui renvoie un commentaire sur le graphique avec la valeur actuelle du MBW MFI afin de l'utiliser comme base pour les autres stratégies. Voici les étapes à suivre :

Créez un tableau BWMFIArray de type double, qui est l'un des types réels permettant de renvoyer des valeurs avec des fractions.

double BWMFIArray[];

Triez les données de ce tableau en utilisant la fonction "ArraySetAsSeries". Ses paramètres sont :

  • array[] : pour déterminer le tableau créé BMWFIArray.
  • flag : Sens d'indexation du tableau, qui sera ’true’.
ArraySetAsSeries(BWMFIArray,true);

Créez une variable entière BWMFIDef et définissez l'Indice de Facilitation du Marché de Bill Williams à l'aide de la fonction "iBWMFI", qui renvoie un handle de l'indicateur Ses paramètres sont :

  • symbol : pour déterminer le symbole souhaité, nous utiliserons _Symbol pour le symbole actuel.
  • period : pour déterminer la période, nous utiliserons _PERIOD qui s'appliquera à la période actuelle.
  • applied_volume : pour déterminer le type de volume, nous utiliserons VOLUME_TICK.
int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);

Définissez les données et stockez les résultats à l'aide de la fonction "CopyBuffer" pour BWMFIArray. Ses paramètres sont :

  • indicator_handle : pour déterminer le handle de l'indicateur, nous utiliserons BWMFIDef.
  • 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 BWMFIArray.
CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);

Obtenez la valeur actuelle de BWMFI après avoir créé une variable de type double BWMFIVal. Nous utiliserons ensuite la fonction NormalizeDouble pour arrondir les chiffres.

  • value : Nous utiliserons BWMFIArray[0] pour la valeur actuelle.
  • digits : Nous utiliserons 5 pour le nombre de décimales.
double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);

Utilisez la fonction Comment pour faire apparaître la valeur du BW MFI actuel.

Comment("BW MFI Value = ",BWMFIVal);

Voici le code complet, en un seul bloc, de ce système de trading :

//+------------------------------------------------------------------+
//|                             Simple Market Facilitation Index.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   ArraySetAsSeries(BWMFIArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   Comment("BW MFI Value = ",BWMFIVal);
  }
//+------------------------------------------------------------------+

Après avoir compilé les lignes de code précédentes sans erreurs, cet expert sera visible dans la fenêtre du Navigateur dans le dossier Expert Advisors du terminal de trading MetaTrader 5 :

BW MFI navigator

En glissant et déposant l'expert du Simple Market Facilitation Index sur le graphique désiré, sa fenêtre sera affichée comme suit :

Fenêtre BW MFI

Après avoir coché ’Autoriser le Trading Algorithmique’ et appuyé sur OK, nous pouvons constater que l'EA est attaché comme ci-dessous :

Simple BW MFI attaché

Nous sommes maintenant prêts à recevoir des signaux identiques à ceux de l'exemple de test suivant :

Signal Simple BW MFI

Comme nous pouvons le voir sur le graphique précédent, nous avons un signal basé sur cette stratégie de trading qui apparaît sous la forme d'un commentaire avec la valeur actuelle du BW MFI dans le coin supérieur gauche.

Première stratégie : BW MFI - Statut du Mouvement

Nous pouvons trouver le code complet suivant pour créer ce type de système de trading :

//+------------------------------------------------------------------+
//|                                     BW MFI - Movement Status.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }
   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }
  }
//+------------------------------------------------------------------+

Voici les différences dans ce code :

Création de 2 tableaux BWMFIArray et volArray, et tri des données dans ces tableaux à l'aide de la fonction "ArraySetAsSeries".

   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
Création de variables entières pour BWMFIDef et volDef. Définition du Bill Williams Market Facilitation Index à l'aide de la fonction "iBWMFI" et des Volumes à l'aide de la fonction "iVolumes" pour renvoyer les poignées de l'indicateur. Les paramètres sont les mêmes pour les deux :
  • symbol : pour déterminer le symbole souhaité, nous utiliserons _Symbol pour le symbole actuel.
  • period : pour déterminer la période, nous utiliserons _PERIOD qui s'appliquera à la période actuelle.
  • applied_volume : pour déterminer le type de volume, nous utiliserons VOLUME_TICK.
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);

Définition des données et stockage des résultats à l'aide de la fonction "CopyBuffer" pour volArray.

CopyBuffer(volDef,0,0,3,volArray);

Définir les valeurs actuelles et précédentes BW MFI et des volumes :

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);

Conditions de la stratégie :

Dans le cas de la barre verte,

   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }

Dans le cas de la barre brune,

   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }

Dans le cas de la barre bleue,

   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }

Dans le cas de la barre rose,

   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }

Après avoir compilé le code précédent sans erreur et l'avoir exécuté, nous constatons qu'il est attaché au graphique de la même manière que ce qui suit :

Statut du Mouvement attaché

Comme nous pouvons le voir, l'EA est attaché dans le coin supérieur droit de la figure précédente. Nous sommes prêts à recevoir les signaux de ce système de trading comme les exemples suivants de tests :

Dans le cas du signal d'état vert,

Statut du Mouvement - Signal vert

 

Comme nous pouvons le voir dans la figure précédente, nous avons le signal d'un état vert dans le coin supérieur gauche.

Dans le cas de l'état de déclin :

Statut du Mouvement - Signal de Déclin

Le signal d'un déclin basé sur cette stratégie est indiqué en commentaire dans le coin supérieur gauche.

Dans le cas du faux état :

Statut du Mouvement - Faux signal

La même chose que dans l'exemple précédent où nous avons reçu un signal d'un faux état basé sur ce système de trading.

Dans le cas de l'état d’équilibre :

Statut du Mouvement - Signal d’équilibre

Nous avons un signal d'état d’équilibre comme commentaire dans le coin supérieur gauche du graphique basé sur cette stratégie de trading. 

Deuxième stratégie : Signaux du MW MFI

Voici le code complet du système de trading de cette stratégie.

//+------------------------------------------------------------------+
//|                                               BW MFI Signals.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   
   if(greenState)
     {
      Comment("Find a good entry");
     }
   if(fadeState)
     {
      Comment("Find a good exit");
     }
   if(fakeState)
     {
      Comment("False breakout Probability");
     }
   if(squatState)
     {
      Comment("Market is Balanced");
     }
  }
//+------------------------------------------------------------------+

Différences dans ce code :

Déclaration des variables booléennes pour les 4 états - green (vert), fade (déclin), fake (faux) et squat (équilibre) - à des conditions spécifiques de chaque état,

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Conditions de la stratégie :

Dans le cas de l'état vert :

   if(greenState)
     {
      Comment("Find a good entry");
     }

Dans le cas de l'état de déclin :

   if(fadeState)
     {
      Comment("Find a good exit");
     }

Dans le cas du faux état :

   if(fakeState)
     {
      Comment("False breakout Probability");
     }

Dans le cas de l'état d’équilibre :

   if(squatState)
     {
      Comment("Market is Balanced");
     }

Après avoir compilé et exécuté ce code, nous pouvons constater que l'EA est attaché au graphique comme suit :

Signaux du BW MFI attaché

Nous pouvons voir que l'EA des Signaux du BW MFI est attaché au graphique dans le coin supérieur droit. Nous pouvons obtenir nos signaux basés sur ce système de trading de la manière suivante :

Dans le cas de la recherche d'un bon signal d'entrée :

Trouver un bon signal d'entrée

Comme nous pouvons le voir, notre signal de recherche d'une bonne entrée se trouve dans le coin supérieur gauche du graphique sous forme de commentaire.

Dans le cas de la recherche d'un bon signal de sortie :

Trouver un bon signal de sortie

Comme nous pouvons le voir, notre signal de recherche d'une bonne sortie figure dans le coin supérieur gauche du graphique sous forme de commentaire.

Dans le cas d'un faux signal de probabilité de rupture :

Signaux du BW MFI - Faux signal de rupture

Comme nous pouvons le voir, notre signal de probabilité de fausse rupture figure dans le coin supérieur gauche du graphique sous forme de commentaire.

Dans le cas où le marché est un signal équilibré :

Signaux du BW MFI - Signal d’équilibre

Comme nous pouvons le constater, notre signal d'équilibre du marché figure dans le coin supérieur gauche du graphique sous la forme d'un commentaire.

3ème stratégie : BW MFI avec MA

Voici le code complet de ce système de trading basé sur la stratégie que nous allons combiner entre le BW MFI et la moyenne mobile.

//+------------------------------------------------------------------+
//|                                               BW MFI with MA.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   double maArray[];
   MqlRates pArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   ArraySetAsSeries(maArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);
   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }
   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }
      else
         Comment("");
  }
//+------------------------------------------------------------------+

Voici les différences dans ce code :

Création de deux tableaux supplémentaires pour maArray, de type double, et pArray de type MqlRates :

   double maArray[];
   MqlRates pArray[];

Tri des données dans maArray en utilisant la fonction "ArraySetAsSeries" :

ArraySetAsSeries(maArray,true);

Création d'une variable entière pour maDef et définition de la moyenne mobile en utilisant la fonction "iMA" pour renvoyer le handle de l'indicateur. Ses paramètres sont :

  • symbol : pour déterminer le nom du symbole. Nous utiliserons _SYMBOL à appliquer pour le graphique actuel.
  • period : pour déterminer la période, nous utiliserons _PERIOD pour la période actuelle. Vous pouvez également utiliser PERIOD_CURRENT dans le même but.
  • ma_period : pour déterminer la période moyenne, nous utiliserons 10.
  • ma_shift : pour déterminer le décalage horizontal si nécessaire. Nous mettrons 0 car nous n'avons pas besoin de déplacer la MA.
  • ma_method : pour déterminer le type de moyenne mobile, nous choisirons SMA (Simple Moving Average).
  • applied_price : pour déterminer le type de prix utilisé dans le calcul, nous utiliserons le prix de clôture.
int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

Obtention des données historiques de MqlRates en utilisant la fonction "CopyRates" :

  • symbol_name : pour déterminer le nom du symbole, nous utiliserons _Symbol pour le symbole actuel.
  • timeframe : pour déterminer la période, nous utiliserons _Period pour appliquer pour la période actuelle.
  • start_pos : pour déterminer le point de départ ou la position, nous utiliserons 0 pour partir de la position actuelle.
  • count : pour déterminer le nombre de copies à effectuer, nous utiliserons 10.
  • rates_array[] : pour déterminer la cible du tableau à copier, nous utiliserons pArray.
int data=CopyRates(_Symbol,_Period,0,10,pArray);

Définition des données et stockage des résultats à l'aide de la fonction "CopyBuffer" pour les tableaux BWMFIArray, volArray et maArray.

   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);

Obtention des valeurs du BW MFI actuel, des volumes, de la moyenne mobile simple et du prix de clôture en plus des valeurs précédentes du BW MFI et des volumes.

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;

Création de variables bool pour les états vert, déclin, faux et équilibre :

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Conditions de cette stratégie :

Dans le cas d'un signal d'achat :

   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }

En cas de signal de vente :

   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }

Dans le cas contraire :

      else
         Comment("");

Après avoir compilé ce code et l'avoir exécuté, nous le trouverons attaché au graphique de la manière suivante :

 BW MFI avec MA attaché

Dans le cas d'un signal d'achat :

BW MFI avec MA - signal d'achat

Comme nous pouvons le voir dans le coin supérieur gauche, nous avons un signal d'achat qui est apparu comme un commentaire sur le graphique.

En cas de signal de vente :

BW MFI avec MA - signal de vente

Comme nous pouvons le voir dans le coin supérieur gauche, nous avons un signal de vente qui est apparu comme un commentaire sur le graphique. Grâce à ce qui précède dans cette rubrique, nous avons appris à créer différents systèmes de trading basés sur les stratégies mentionnées.

Conclusion

A la fin de cet article, vous êtes supposé avoir compris le concept principal de l'indicateur technique Market Facilitation Index qui a été développé par Bill Williams. Vous devez maintenant savoir comment le calculer manuellement et comment l'insérer sur le graphique de la plateforme de trading MetaTrader 5, ainsi que comment interpréter ses résultats. Nous avons également appris à l'utiliser. À cette fin, nous avons envisagé quelques stratégies simples basées sur le concept principal :

  • Stratégie BW MFI - Statut du Mouvement : elle peut être utilisée pour obtenir les états du marché sur la base des barres de l'indicateur en tant que signal sur le graphique (états vert, déclin, faux et équilibre).
  • Stratégie Signaux du BW MFI : elle peut être utilisée pour obtenir des signaux sur le graphique avec la décision appropriée basée sur l'indicateur BW MFI (trouver une bonne entrée, trouver une bonne sortie, probabilité de fausse rupture, et le marché est équilibré).
  • Stratégie BW MFI avec MA : elle peut être utilisée pour obtenir des signaux d'achat et de vente basés sur le BW MFI et l'indicateur de moyenne mobile simple.

Je conseille à tout le monde d'essayer d'utiliser des outils techniques supplémentaires pour obtenir de meilleurs résultats et avoir une vue d'ensemble du marché. Vous devez également les tester avant de les utiliser dans vos transactions réelles afin de vous assurer qu'elles vous sont utiles. Le concept principal de cet article est de partager des informations à des fins éducatives uniquement. Nous avons ensuite conçu des plans étape par étape pour chaque stratégie afin de nous aider à créer nos systèmes de trading facilement pour les utiliser dans MetaTrader 5. Nous les avons appris et créés en utilisant le langage MQL5.

J'espère que cet article vous sera utile et qu'il vous permettra d'approfondir votre connaissance de ce sujet ou de tout autre sujet connexe afin d'améliorer votre trading. J'espère également que vous avez essayé d'appliquer ce que vous avez appris dans cet article en écrivant des codes par vous-même - si vous voulez améliorer vos compétences en programmation MQL5, c'est une étape très importante dans tout processus d'apprentissage. Si vous souhaitez lire d'autres articles similaires sur l'apprentissage de la création d'un système de trading basé sur les indicateurs techniques les plus populaires, vous pouvez lire mes autres articles de cette série, et j'espère qu'ils vous seront également utiles.

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

Développer un Expert Advisor de trading à partir de zéro (partie 29) : La plateforme parlante Développer un Expert Advisor de trading à partir de zéro (partie 29) : La plateforme parlante
Dans cet article, nous allons apprendre à faire parler la plateforme MetaTrader 5. Et si nous rendions l'EA plus amusant ? Le trading sur les marchés financiers est souvent ennuyeux et monotone, mais nous pouvons rendre ce travail moins fatigant. Veuillez noter que ce projet peut être dangereux pour les personnes qui ont des problèmes de dépendance. Mais d'une manière générale, cela rend les choses moins ennuyeuses.
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.
Développer un Expert Advisor à partir de zéro (partie 30) : CHART TRADE en tant qu'indicateur ? Développer un Expert Advisor à partir de zéro (partie 30) : CHART TRADE en tant qu'indicateur ?
Aujourd'hui, nous allons à nouveau utiliser Chart Trade. Mais cette fois-ci, il s'agira d'un indicateur sur le graphique pouvant être présent ou non sur le graphique.
Comment traiter les niveaux avec MQL5 Comment traiter les niveaux avec MQL5
Dans cet article, vous découvrirez comment traiter les lignes les plus importantes telles que les lignes de tendance, de support et de résistance avec MQL5.