Créez un EA sur MetaTrader 5 avec le MQL5 Wizard : Signaux de Trading basés sur les 3 Corbeaux Noirs/3 Soldats Blancs + MFI

Mike 2011.02.18 21:46 42 0 0
Pièce jointe

Le MQL5 Wizard permet de créer des Conseillers Experts prêts à l'emploi en utilisant les classes de la bibliothèque standard fournies avec le terminal client (pour plus de détails, consultez Créer des Conseillers Experts prêts à l'emploi avec MQL5 Wizard). Cela vous permet de vérifier rapidement vos idées de trading, il vous suffit de créer votre propre classe de signaux de trading. La structure de cette classe et un exemple peuvent être trouvés dans l'article MQL5 Wizard : Comment créer un module de signaux de trading.

L'idée générale est la suivante : la classe des signaux de trading est dérivée de CExpertSignal. Ensuite, il est nécessaire de redéfinir les méthodes virtuelles LongCondition() et ShortCondition() avec vos propres méthodes.

Il existe un livre intitulé "Stratégies des meilleurs traders" (en russe) qui aborde de nombreuses stratégies de trading. Nous allons nous concentrer sur les motifs de chandelier de retournement, confirmés par Stochastique, CCI, MFI et RSI.

La meilleure approche consiste à créer une classe distincte, dérivée de CExpertSignal, pour vérifier la formation des motifs de chandelier. Pour confirmer les signaux de trading générés par les motifs de chandelier, il vous suffit d'écrire une classe dérivée de CCandlePattern et d'y ajouter les fonctionnalités nécessaires (comme la confirmation par des oscillateurs).

Nous allons maintenant examiner les signaux basés sur le motif de chandelier de retournement "3 Corbeaux Noirs/3 Soldats Blancs", confirmés par l'indicateur Market Facilitation Index (MFI). Le module de signaux de trading est basé sur la classe CCandlePattern, il s'agit d'un exemple simple de son utilisation pour créer des signaux de trading avec des motifs de chandelier.


1. Motifs de chandelier de retournement "3 Corbeaux Noirs" et "3 Soldats Blancs"

1.1. 3 Corbeaux Noirs

Un motif de chandelier baissier utilisé pour prédire le retournement de la tendance haussière actuelle. Ce motif se compose de trois chandeliers consécutifs à corps longs qui se sont fermés en dessous de la session précédente, avec chaque ouverture de session se produisant à l'intérieur du corps de la chandelle précédente.

Fig. 1. Motif de chandelier '3 Corbeaux Noirs'

Fig. 1. Motif de chandelier "3 Corbeaux Noirs"

La reconnaissance du motif "3 Corbeaux Noirs" est mise en œuvre dans la méthode CheckPatternThreeBlackCrows de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif de chandelier "3 Corbeaux Noirs"     |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Corbeaux Noirs
   if((Open(3)-Close(3)>AvgBody(1)) && // (long black)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)<MidPoint(3))     && // (lower midpoints)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) de la classe CCandlePattern est utilisée pour vérifier la formation du motif de chandelier "3 Corbeaux Noirs".


1.2. Motif de chandelier 3 Soldats Blancs

Un motif de chandelier haussier utilisé pour prédire le retournement de la tendance baissière actuelle. Ce motif se compose de trois chandeliers consécutifs à corps longs qui se sont fermés plus haut que la session précédente, chaque ouverture de session se produisant à l'intérieur du corps de la chandelle précédente.

Le motif est valide tant que la chandelle du jour deux s'ouvre dans la moitié supérieure de la plage du jour un. À la fin du jour deux, elle doit se fermer près de son sommet, laissant une très petite ou inexistante ombre supérieure. Le même motif est ensuite répété le jour trois.

Fig. 2. Motif de chandelier '3 Soldats Blancs'

Fig. 2. Motif de chandelier "3 Soldats Blancs"

Voici la méthode pour reconnaître le motif "3 Soldats Blancs" :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif de chandelier "3 Soldats Blancs"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 Soldats Blancs
   if((Close(3)-Open(3)>AvgBody(1)) && // long white
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // higher midpoints
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) de la classe CCandlePattern est utilisée pour vérifier la formation du motif de chandelier "3 Soldats Blancs".


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 de la position ouverte 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 une position longue et 30 pour une position courte)
  • si le signal inverse n'est pas confirmé (lorsque l'indicateur MFI atteint les niveaux suivants : 30 pour une position longue et 70 pour une position courte)

Fig. 3. Motif '3 Corbeaux Noirs', confirmé par l'indicateur MFI

Fig. 3. Motif "3 Corbeaux Noirs", confirmé par l'indicateur MFI


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

2.1. Ouvrir une position longue / Fermer une position courte

  1. La formation du motif "3 Soldats Blancs" doit être confirmée par l'indicateur MFI : MFI(1)<40 (la valeur de l'indicateur MFI de la dernière barre 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 la position courte, résultat = 40)                 |
//+------------------------------------------------------------------+
int CBC_WS_MFI::LongCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de travail 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 nouvelles barres
  int idx   =StartIndex();
//--- vérification des conditions d'ouverture de position longue
//--- formation du motif 3 Soldats Blancs et MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))
     result=80;
//--- vérification des conditions de fermeture de 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 motif "3 Corbeaux Noirs" doit être confirmée par l'indicateur MFI : MFI(1)>60 (la valeur de l'indicateur MFI de la dernière barre 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 CBC_WS_MFI::ShortCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de travail 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 nouvelles barres
  int idx   =StartIndex();
//--- vérification des conditions d'ouverture de position courte
//--- formation du motif 3 Corbeaux Noirs et MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))
     result=80;
//--- vérification des conditions de fermeture de 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éation d'un Expert Advisor avec MQL5 Wizard

La classe CBC_WS_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 abc_ws_mfi.mqh (voir les pièces jointes) et de le sauvegarder 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 le redémarrage de 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

Définissons 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

Après cela, nous devons sélectionner 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 Signaux basés sur 3 Corbeaux Noirs/3 Soldats Blancs confirmés par le 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 trade 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_ABC_WS_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 de seuil de signal pour ouvrir [0...100]
input int            Signal_ThresholdClose  =10;     // Valeur de seuil de 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 de seuil de signal pour ouvrir [0...100]
input int            Signal_ThresholdClose  =20;     // Valeur de seuil de 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 de seuil pour l'ouverture et la fermeture des positions.

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

  • Ouvrir la position : 80;
  • Fermer la 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 (en tant que conteneur, il se compose de tous les modules ajoutés) est également utilisé, mais ses méthodes LongCondition() et ShortCondition() retournent toujours 0.

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

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


2.4. Résultats des tests de backtesting

Examinons le backtesting 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=13).

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 not used).

Fig. 11. Résultats des tests de l'Expert Advisor basé sur 3 Corbeaux Noirs/3 Soldats Blancs + MFI

Fig. 11. Résultats des tests de l'Expert Advisor basé sur 3 Corbeaux Noirs/3 Soldats Blancs + MFI


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

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


Liste
Commentaire 0