Utiliser MQL5 Wizard pour Créer des Signaux de Trading avec Dark Cloud Cover et Piercing Line

Mike 2011.02.25 19:49 14 0 0
Pièce jointe

Le MQL5 Wizard vous permet de créer des conseillers experts prêts à l'emploi basés sur les classes de la bibliothèque standard fournies avec le terminal client (voir Créer des conseillers experts prêts à l'emploi dans MQL5 Wizard pour plus de détails). C'est un excellent moyen de tester rapidement vos idées de trading, il vous suffit de créer votre propre classe de signaux de trading.

L'idée générale est la suivante : 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.

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 modèles de chandeliers de retournement, confirmés par des indicateurs tels que 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 modèles de chandeliers. Pour confirmer les signaux de trading générés par ces modèles, il suffit d'écrire une classe dérivée de CCandlePattern et d'y ajouter les caractéristiques nécessaires (par exemple, la confirmation par des oscillateurs).

Nous allons examiner les signaux basés sur les modèles de chandeliers de retournement "Dark Cloud Cover/Piercing Line", confirmés par l'indicateur Market Facilitation Index (MFI). Le module de signaux de trading est basé sur la classe CCandlePattern, qui est un exemple simple d'utilisation pour créer des signaux de trading avec des modèles de chandeliers.


1. Modèles de chandeliers de retournement : "Dark Cloud Cover" et "Piercing Line"

1.1. Dark Cloud Cover

Il s'agit d'un modèle de retournement baissier qui se produit à la fin d'une tendance haussière. Un long chandelier blanc est formé le premier jour et un écart à la hausse est créé le deuxième jour. Cependant, le deuxième jour se clôture en dessous du point médian du premier jour.

Fig. 1. Modèle de chandelier 'Dark Cloud Cover'

Fig. 1. Modèle de chandelier "Dark Cloud Cover"

La reconnaissance du modèle "Dark Cloud Cover" est implémentée dans la méthode CheckPatternDarkCloudCover() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandelier "Dark Cloud Cover" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (long blanc)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (fermeture à l'intérieur du corps précédent)
      (MidOpenClose(2)>CloseAvg(1))  && // (tendance haussière)
      (Open(1)>High(2)))                // (ouverture à un nouveau sommet)
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandelier "Dark Cloud Cover".


1.2. Piercing Line

L'écart à la baisse le deuxième jour perpétue la tendance baissière. Cependant, la clôture du deuxième jour est au-dessus du point médian du corps du premier jour. Cela suggère aux baissiers qu'un creux pourrait se former. Cette action des prix n'est pas aussi discernable sur les graphiques en barres que sur les graphiques en chandeliers. Plus la pénétration de la clôture du deuxième jour dans le corps du premier jour est grande, plus le signal de retournement sera probablement réussi.

Fig. 2. Modèle de chandelier 'Piercing Line'

Fig. 2. Modèle de chandelier "Piercing Line"

La reconnaissance du modèle "Piercing Line" est implémentée dans la méthode CheckPatternPiercingLine() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandelier "Piercing Line" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (long blanc)
      (Open(2)-Close(2)>AvgBody(1)) && // (long noir)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (fermeture à l'intérieur du corps précédent) 
      (MidOpenClose(2)<CloseAvg(2)) && // (tendance baissière)
      (Open(1)<Low(2)))                // (ouverture plus basse que le précédent bas) 
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandelier "Piercing Line".


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 cet indicateur doit être inférieure à 40 (pour les positions longues) ou supérieure à 60 (pour les positions courtes).

La clôture d'une position ouverte dépend des valeurs de l'indicateur MFI. Cela peut se faire dans deux cas :

  1. si le MFI a atteint le niveau critique opposé (70 pour une position longue et 30 pour une position courte)
  2. 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. Modèle 'Dark Cloud Cover' confirmé par l'indicateur MFI

Fig. 3. Modèle "Dark Cloud Cover" confirmé par l'indicateur MFI


  • int CDC_PL_MFI::LongCondition() - vérifie les conditions pour ouvrir une position longue (retourne 80) et fermer la position courte (retourne 40);
  • int CDC_PL_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 modèle "Morning Star" 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 une position courte, résultat=40)                 |
//+------------------------------------------------------------------+
int CDC_PL_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 nouvelles barres
  int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du modèle Piercing Line et MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40))
     result=80;
//--- vérification des conditions pour fermer une position courte
//--- croisement de la ligne 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 "Dark Cloud Cover" 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 CDC_PL_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 nouvelles barres
  int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du modèle Dark Cloud Cover et MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60))
     result=80;
//--- vérification des conditions pour fermer une position longue
//--- croisement de la ligne 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 CDC_PL_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 adc_pl_mfi.mqh (voir les 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 les 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écifions 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, nous devons sélectionner les modules de signaux de trading utilisés.

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

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

Dans notre cas, nous utilisons uniquement un module de signaux de trading.

Ajout du module de signaux : Signaux basés sur Dark Cloud Cover/Piercing Line confirmés par MFI :

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

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

Module de signaux de trading ajouté :

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

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

Vous pouvez sélectionner toutes les propriétés 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_ADC_PL_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 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é des valeurs fixes des seuils :

  • Ouvrir position : 80;
  • Fermer 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 consiste en 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'averaging des votes. Dans notre cas, nous avons : module principal + 1 module de signaux de trading, donc nous devons tenir compte de ce fait lors de la définition des valeurs seuils. En raison de ce fait, le ThresholdOpen et le 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 définies à 0, ce qui signifie que la fermeture des positions se fera uniquement lorsque les conditions de fermeture seront vraies.


2.4. Résultats du backtesting historique

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=49, MA_period=11).

Dans la création de l'Expert Advisor, nous avons utilisé le volume fixe (Trading avec lot fixe, 0.1), l'algorithme de Trailing Stop n'est pas utilisé (Trailing non utilisé).

Fig. 11. Résultats de test de l'Expert Advisor basé sur Dark Cloud Cover/Piercing Line + MFI

Fig. 11. Résultats de test de l'Expert Advisor basé sur Dark Cloud Cover/Piercing Line + 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 attaché dans expert_adc_pl_mfi.mq5.


Liste
Commentaire 0