Accueil Trading Systématique Publication

MQL5 Wizard : Créez des Signaux de Trading avec Bullish Harami/Bearish Harami et CCI

Pièce jointe
311.zip (6.48 KB, Télécharger 0 fois)

Le MQL5 Wizard vous permet de créer des Systèmes de Trading prêts à l'emploi à partir des classes de la bibliothèque standard fournies avec le terminal client (pour plus de détails, consultez Créer des Systèmes de Trading dans MQL5 Wizard). Cela vous permet de tester 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 sont présenté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 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 des modèles de chandeliers inversés, confirmés par les oscillateurs Stochastique, CCI, MFI et RSI.

La meilleure approche consiste à créer une classe séparée 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 les modèles de chandeliers, il suffit d'écrire la classe, dérivée de CCandlePattern, en ajoutant les fonctionnalités nécessaires (par exemple, la confirmation par les oscillateurs).

Nous allons ici examiner les signaux basés sur le modèle de chandelier inversé "Bullish Harami/Bearish Harami", confirmé par l'indicateur CCI. Le module de signaux de trading est basé sur la classe CCandlePattern, c'est un exemple simple de son utilisation pour la création de signaux de trading avec des modèles de chandeliers.

1. Modèles de chandeliers "Bullish Harami" et "Bearish Harami"

1.1. Bullish Harami

Le modèle "Bullish Harami" se forme dans une tendance baissière lorsque une grande bougie est suivie d'une bougie plus petite dont le corps est situé dans l'intervalle vertical 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 bougie s'ouvre avec un gap haussier. Plus la seconde bougie (blanche) est petite, plus l'inversion est probable.

Modèle de chandelier Bullish Harami

Fig. 1. Modèle de chandelier "Bullish Harami"

La reconnaissance du modèle "Bullish Harami" est implémentée dans la méthode CheckPatternBullishHarami() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandelier "Bullish Harami"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // la dernière bougie complétée est haussière (jour blanc)
     ((Open(2)-Close(2)>AvgBody(1))  && // la bougie précédente est baissière, son corps est supérieur à la moyenne (long noir)
     ((Close(1)<Open(2))              && // le prix de clôture de la bougie haussière est inférieur à l'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 chandelier "Bullish Harami".


1.2. Bearish Harami

Le modèle "Bearish Harami" se forme dans une tendance haussière lorsque une grande bougie est suivie d'une bougie plus petite dont le corps est situé dans l'intervalle vertical 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 bougie s'ouvre avec un gap baissier.

Plus la seconde bougie (noire) est petite, plus l'inversion est probable.

Modèle de chandelier Bearish Harami

Fig. 2. Modèle de chandelier "Bearish Harami"

La reconnaissance du modèle "Bearish Harami" est implémentée dans la méthode CheckPatternBearishHarami() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du modèle de chandelier "Bearish Harami"   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // la dernière bougie complétée est baissière (jour noir)
     ((Close(2)-Open(2)>AvgBody(1))  && // la bougie précédente est haussière, son corps est supérieur à la moyenne (long blanc)
     ((Close(1)>Open(2))              && // le prix de clôture de la bougie baissière est supérieur à l'ouverture de la bougie haussière
      (Open(1)<Close(2)))             && // le 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 chandelier "Bearish Harami".


2. Signaux de Trading confirmés par l'indicateur CCI

Les signaux de trading pour ouvrir une position longue ou courte doivent être confirmés par l'indicateur CCI. La valeur du CCI doit être supérieure ou inférieure aux niveaux critiques (-50 pour une position longue et 50 pour une position courte).

La fermeture de la position ouverte dépend des valeurs du CCI. Cela peut se faire dans deux cas :

  • si la ligne CCI a atteint le niveau critique opposé (80 pour une position longue et -80 pour une position courte)
  • si le signal inverse n'est pas confirmé (lorsque le CCI atteint les niveaux suivants : -80 pour une position longue et 80 pour une position courte)

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

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

  • int CBH_BH_CCI::LongCondition() - vérifie les conditions pour ouvrir une position longue (retourne 80) et fermer une position courte (retourne 40);
  • int CBH_BH_CCI::ShortCondition() - vérifie les conditions pour ouvrir une position courte (retourne 80) et fermer une position longue (retourne 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 CCI : CCI(1)<-50 (la valeur du CCI de la dernière bougie complétée doit être inférieure à -50).

  2. La position courte doit être fermée si l'indicateur CCI a franchi à la hausse le niveau critique -80 ou a franchi à la baisse le niveau critique 80.

//+------------------------------------------------------------------+
//| Vérifie les conditions d'entrée et de sortie du marché            |
//| 1) Entrée sur le marché (ouvrir position longue, résultat=80)     |
//| 2) Sortie du marché (fermer position courte, résultat=40)        |
//+------------------------------------------------------------------+
int CBH_BH_CCI::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 lors des bougies de nouvelles
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du modèle Bullish Harami et CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
//--- vérification des conditions pour fermer une position courte
//--- croisement de la ligne de signal des niveaux de surachat/survente (à la baisse -80, à la baisse -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     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 CCI : CCI(1)>50 (la valeur de l'indicateur CCI de la dernière bougie complétée doit être supérieure à 50).

  2. La position longue doit être fermée si l'indicateur CCI a franchi à la baisse le niveau -80 ou 80.

//+------------------------------------------------------------------+
//| Vérifie les conditions d'entrée et de sortie du marché            |
//| 1) Entrée sur le marché (ouvrir position courte, résultat=80)    |
//| 2) Sortie du marché (fermer position longue, résultat=40)        |
//+------------------------------------------------------------------+
int CBH_BH_CCI::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 lors des bougies de nouvelles
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du modèle Bearish Harami et CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
//--- vérification des conditions pour fermer une position longue
//--- croisement de la ligne de signal des niveaux de surachat/survente (à la baisse -80, à la hausse 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- retour du résultat
   return(result);
  }


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

La classe CBH_BH_CCI 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 acbh_bh_cci.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 candlepatterns.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é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 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 Bullish Harami/Bearish Harami confirmés par CCI" :

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 utiliserons "Trading avec un volume 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_CCI.mq5, qui sera enregistré dans le dossier 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 vous 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 de signaux de trading, nous avons spécifié les valeurs fixes des seuils :

  • Ouverture de position : 80;
  • Fermeture de 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'averaging des votes. Dans notre cas, nous avons : module principal + 1 module de signaux de trading, donc nous devons prendre en compte ce fait lors de la définition des valeurs seuils. En raison de ce fait, les ThresholdOpen et ThresholdClose doivent être définis respectivement à 40=(0+80)/2 et 20=(0+40)/2.

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


2.4. Résultats des tests de rétroaction

Examinons les tests de l'Expert Advisor sur des données historiques (EURUSD H1, période de test : 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

Dans la création de l'Expert Advisor, nous avons utilisé le volume fixe (Trading Fixed Lot, 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 Bullish Harami/Bearish Harami + CCI

Fig. 11. Résultats de test de l'Expert Advisor, basé sur Bullish Harami/Bearish Harami + CCI


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

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


Articles connexes

Commentaire (0)