Créer un Expert Advisor avec MQL5 Wizard : Signaux de Trading Basés sur Bullish et Bearish Harami + MFI

Mike 2011.03.17 19:32 28 0 0
Pièce jointe

Le MQL5 Wizard est un outil formidable pour créer des Experts Advisors prêts à l'emploi, basés sur les classes de la bibliothèque standard fournies avec le terminal client. Vous pouvez tester rapidement vos idées de trading en créant votre propre classe de signaux de trading. La structure de cette classe et un exemple sont disponibles dans l'article MQL5 Wizard : Comment créer un module de signaux de trading.

L'idée générale est que la classe de signaux de trading est dérivée de CExpertSignal. Ensuite, il est nécessaire de remplacer les méthodes virtuelles LongCondition() et ShortCondition() par vos propres méthodes.

Un livre intitulé "Stratégies des meilleurs traders" (en russe) présente de nombreuses stratégies de trading. Nous nous concentrerons sur les modèles de chandeliers de retournement, confirmés par Stochastique, CCI, MFI et RSI.

Le meilleur moyen est de créer une classe distincte dérivée de CExpertSignal pour vérifier la formation de modèles de chandeliers. Pour confirmer les signaux de trading générés par les modèles de chandeliers, il suffit d'écrire une classe dérivée de CCandlePattern et d'y ajouter les fonctionnalités nécessaires (par exemple, confirmation par les oscillateurs).

Nous allons examiner les signaux basés sur les modèles de retournement "Bullish Harami" et "Bearish Harami", confirmés par l'indicateur MFI. Le module de signaux de trading est basé sur la classe CCandlePattern, c'est un exemple simple de son utilisation pour créer des signaux de trading avec des modèles de chandeliers.

1. Modèles de Chandeliers Bullish et Bearish Harami

1.1. Bullish Harami

Le modèle de retournement Bullish Harami se forme dans une tendance baissière lorsqu'une grande chandelle est suivie par une chandelle plus petite dont le corps est situé à l'intérieur de la plage verticale du corps plus grand. Ce modèle indique que la tendance baissière pourrait s'inverser, signalant qu'il est temps d'entrer en position longue. La deuxième chandelle s'ouvre avec un écart à la hausse.

Fig. 1. Modèle de chandeliers Bullish Harami

Fig. 1. Modèle de chandeliers Bullish Harami

La reconnaissance du modèle "Bullish Harami" est mise en œuvre dans la méthode CheckPatternBullishHarami() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandeliers "Bullish Harami" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // la dernière bougie complétée est haussière
     ((Open(2)-Close(2)>AvgBody(1))  && // la bougie précédente est baissière
     ((Close(1)<Open(2))              && // le prix de clôture de la bougie haussière est inférieur au prix d'ouverture de la bougie baissière
      (Open(1)>Close(2)))             && // le prix d'ouverture de la bougie haussière est supérieur au prix de clôture de la bougie baissière
      (MidPoint(2)<CloseAvg(2)))         // tendance baissière
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandeliers "Bullish Harami".

1.2. Bearish Harami

Le modèle de retournement Bearish Harami se forme dans une tendance haussière lorsque une grande chandelle est suivie par une chandelle plus petite dont le corps est situé à l'intérieur de la plage verticale du corps plus grand. Ce modèle indique que la tendance haussière pourrait s'inverser, signalant qu'il est temps d'entrer en position courte. La deuxième chandelle s'ouvre avec un écart à la baisse.

Plus la deuxième chandelle (noire) est petite, plus la probabilité de retournement est élevée.

Fig. 2. Modèle de chandeliers Bearish Harami

Fig. 2. Modèle de chandeliers Bearish Harami

La reconnaissance du modèle "Bearish Harami" est mise en œuvre dans la méthode CheckPatternBearishHarami() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandeliers "Bearish Harami" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // dernière bougie complétée est baissière
     ((Close(2)-Open(2)>AvgBody(1))  && // la bougie précédente est haussière
     ((Close(1)>Open(2))              && // prix de clôture de la bougie baissière est supérieur au prix d'ouverture de la bougie haussière
      (Open(1)<Close(2)))             && // prix d'ouverture de la bougie baissière est inférieur au prix de clôture de la bougie haussière
      (MidPoint(2)>CloseAvg(2)))         // tendance haussière
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandeliers "Bearish Harami".

2. Signaux de Trading Confirmés par l'Indicateur MFI

Les signaux de trading pour ouvrir une position longue ou courte doivent être confirmés par l'indicateur MFI. La valeur de l'indicateur MFI doit être inférieure à 40 (pour les positions longues) ou supérieure à 60 (pour les positions courtes).

La fermeture des positions ouvertes dépend des valeurs de l'indicateur MFI. Cela peut se faire dans deux cas :

  • si le MFI a atteint le niveau critique opposé (70 pour position longue et 30 pour position courte)
  • si le signal inverse n'est pas confirmé (lorsque l'indicateur MFI atteint les niveaux suivants : 30 pour position longue et 70 pour position courte)

Fig. 3. Modèle Bullish Harami, confirmé par l'indicateur MFI

Fig. 3. Modèle Bullish Harami, confirmé par l'indicateur MFI


  • int CBH_BH_MFI::LongCondition() - vérifie les conditions pour ouvrir une position longue (renvoie 80) et fermer une position courte (renvoie 40);
  • int CBH_BH_MFI::ShortCondition() - vérifie les conditions pour ouvrir une position courte (renvoie 80) et fermer une position longue (renvoie 40).

2.1. Ouvrir une position longue/Fermer une position courte

  1. La formation du modèle "Bullish Harami" doit être confirmée par l'indicateur MFI : MFi(1)<40 (la valeur de l'indicateur MFI de la dernière bougie complétée doit être inférieure à 40).

  2. La position courte doit être fermée si l'indicateur MFI a franchi à la hausse les niveaux critiques (70 ou 30).

//+------------------------------------------------------------------+
//| Vérifie les conditions d'entrée et de sortie du marché |
//| 1) Entrée sur le marché (ouvrir une position longue, résultat=80) |
//| 2) Sortie du marché (fermer une position courte, résultat=40) |
//+------------------------------------------------------------------+
int CBH_BH_MFI::LongCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de fonctionnement de l'Expert Advisor
//--- idx=0 - dans ce cas, l'EA vérifie les conditions de trading à chaque tick
//--- idx=1 - dans ce cas, l'EA vérifie les conditions de trading uniquement aux bougies de nouvelles
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du modèle Bullish Harami et MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40))
     result=80;
//--- vérification des conditions pour fermer une position courte
//--- croisement de la ligne de signal des niveaux de surachat/survente (à la hausse 30, à la hausse 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- retour du résultat
   return(result);
  }

2.2. Ouvrir une position courte/Fermer une position longue

  1. La formation du modèle "Bearish Harami" doit être confirmée par l'indicateur MFI : MFI(1)>60 (la valeur de l'indicateur MFI de la dernière bougie complétée doit être supérieure à 60).

  2. La position longue doit être fermée si l'indicateur MFI a franchi à la hausse les niveaux critiques (70 ou 30).

//+------------------------------------------------------------------+
//| Vérifie les conditions d'entrée et de sortie du marché |
//| 1) Entrée sur le marché (ouvrir une position courte, résultat=80) |
//| 2) Sortie du marché (fermer une position longue, résultat=40) |
//+------------------------------------------------------------------+
int CBH_BH_MFI::ShortCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de fonctionnement de l'Expert Advisor
//--- idx=0 - dans ce cas, l'EA vérifie les conditions de trading à chaque tick
//--- idx=1 - dans ce cas, l'EA vérifie les conditions de trading uniquement aux bougies de nouvelles
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du modèle Bearish Harami et MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60))
     result=80;
//--- vérification des conditions pour fermer une position longue
//--- croisement de la ligne de signal des niveaux de surachat/survente (à la hausse 70, à la baisse 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- retour du résultat
   return(result);
  }

2.3. Créer un Expert Advisor avec MQL5 Wizard

La classe CBH_BH_MFI n'est pas incluse dans les classes de la bibliothèque standard. Pour l'utiliser, il est nécessaire de télécharger le fichier abh_bh_mfi.mqh (voir pièces jointes) et de l'enregistrer dans le dossier client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Il en va de même pour le fichier acandlepatterns.mqh. Vous pourrez l'utiliser dans MQL5 Wizard après avoir redémarré le MetaEditor.

Pour créer un Expert Advisor, lancez le MQL5 Wizard :

Fig. 4. Création d'un Expert Advisor avec MQL5 Wizard

Fig. 4. Création d'un Expert Advisor avec MQL5 Wizard

Spécifiez le nom de l'Expert Advisor :

Fig. 5. Propriétés générales de l'Expert Advisor

Fig. 5. Propriétés générales de l'Expert Advisor

Ensuite, sélectionnez les modules de signaux de trading utilisés.

Fig. 6. Propriétés des signaux de l'Expert Advisor

Fig. 6. Propriétés des signaux de l'Expert Advisor

Dans notre cas, nous n'utilisons qu'un seul module de signaux de trading.

Ajout du module de signaux "Signals basés sur Bullish Harami/Bearish Harami confirmés par MFI" :

Fig. 7. Propriétés des signaux de l'Expert Advisor

Fig. 7. Propriétés des signaux de l'Expert Advisor

Module de signaux de trading ajouté :

Fig. 8. Propriétés des signaux de l'Expert Advisor

Fig. 8. Propriétés des signaux de l'Expert Advisor

Vous pouvez sélectionner n'importe quelle propriété de trailing, mais nous allons utiliser "Trailing Stop non utilisé" :

Fig. 9. Propriétés de trailing de l'Expert Advisor

Fig. 9. Propriétés de trailing de l'Expert Advisor

Concernant les propriétés de gestion de l'argent, nous allons utiliser "Trading avec un volume de transactions fixe" :

Fig. 10. Propriétés de gestion de l'argent de l'Expert Advisor

Fig. 10. Propriétés de gestion de l'argent de l'Expert Advisor

En appuyant sur le bouton "Terminer", nous obtiendrons le code de l'Expert Advisor généré, situé dans Expert_ABH_BH_MFI.mq5, qui sera enregistré dans terminal_data_folder\MQL5\Experts\.

Les paramètres d'entrée par défaut de l'Expert Advisor généré :

//--- entrées pour le signal principal
input int            Signal_ThresholdOpen   =10;     // Valeur seuil du signal pour ouvrir [0...100]
input int            Signal_ThresholdClose  =10;     // Valeur seuil du signal pour fermer [0...100]
input double         Signal_PriceLevel      =0.0;    // Niveau de prix pour exécuter un deal
input double         Signal_StopLevel       =50.0   // Niveau de Stop Loss (en points)
input double         Signal_TakeLevel       =50.0    // Niveau de Take Profit (en points)

doit être remplacé par :

//--- entrées pour le signal principal
input int            Signal_ThresholdOpen   =40;     // Valeur seuil du signal pour ouvrir [0...100]
input int            Signal_ThresholdClose  =20;     // Valeur seuil du signal pour fermer [0...100]
input double         Signal_PriceLevel      =0.0    // Niveau de prix pour exécuter un deal
input double         Signal_StopLevel       =0.0    // Niveau de Stop Loss (en points)
input double         Signal_TakeLevel       =0.0    // Niveau de Take Profit (en points)

Les paramètres d'entrée Signal_ThresholdOpen/Signal_ThresholdClose permettent de spécifier les niveaux seuils pour ouvrir et fermer des positions.

Dans le code des méthodes LongCondition() et ShortCondition() de la classe de signaux de trading, nous avons spécifié les valeurs fixes du seuil :

  • Ouvrir une position : 80;
  • Fermer une position : 40.

L'Expert Advisor, généré par MQL5 Wizard, ouvre et ferme des positions en utilisant les "votes" des modules de signaux de trading. Le vote du module principal (comme conteneur, il se compose de tous les modules ajoutés) est également utilisé, mais ses méthodes LongCondition() et ShortCondition() renvoient toujours 0.

Les résultats des votes du module principal sont également utilisés dans la moyenne des "votes". Dans notre cas, nous avons : module principal + 1 module de signaux de trading, donc nous devons prendre cela en compte lors de la définition des valeurs seuils. En raison de ce fait, les ThresholdOpen et ThresholdClose doivent être définis respectivement comme 40=(0+80)/2 et 20=(0+40)/2.

Les valeurs des paramètres d'entrée Signal_StopLevel et Signal_TakeLevel sont définies à 0, ce qui signifie que la fermeture des positions ne se fera que lorsque les conditions de fermeture seront vraies.


2.4. Résultats de l'Analyse Rétroactive

Examinons l'analyse rétroactive de l'Expert Advisor sur des données historiques (EURUSD H1, période de test : 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=11).

Lors de la création de l'Expert Advisor, nous avons utilisé un volume fixe (Trading Fixed Lot, 0.1), l'algorithme de Trailing Stop n'est pas utilisé (Trailing non utilisé).

Fig. 11. Résultats des tests de l'Expert Advisor, basé sur Bullish Harami /Bearish Harami + MFI

Fig. 11. Résultats des tests de l'Expert Advisor, basé sur Bullish Harami /Bearish Harami + MFI


Le meilleur ensemble de paramètres d'entrée peut être trouvé en utilisant le Strategy Tester du terminal client MetaTrader 5.

Le code de l'Expert Advisor, créé par MQL5 Wizard, est joint dans expert_abh_bh_mfi.mq5.

Liste
Commentaire 0