Accueil Trading Systématique Publication

MQL5 Wizard : Signaux de Trading Basés sur les Candlesticks Hammer/Hanging Man + RSI

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

Le MQL5 Wizard permet de créer des Conseillers Experts prêts à l'emploi basés sur les classes de la bibliothèque standard livrées avec le terminal client (voir Créer des Conseillers Experts Prêts dans MQL5 Wizard pour plus de détails). Il 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 "Stratégies des Meilleurs Traders" (en russe) où de nombreuses stratégies de trading y sont considérées. Ici, nous nous concentrerons sur les motifs de chandeliers d'inversion, confirmés par les oscillateurs Stochastique, CCI, MFI et RSI.

La meilleure façon est de créer une classe séparée, dérivée de CExpertSignal pour vérifier la formation des motifs de chandeliers. Pour la confirmation des signaux de trading générés par les motifs de chandeliers, il suffit d'écrire la classe, dérivée de CCandlePattern et d'y ajouter les fonctionnalités nécessaires (par exemple, confirmation par les oscillateurs).

Nous allons ici considérer les signaux basés sur le motif de chandelier d'inversion "Hammer/Hanging Man", 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 créer des signaux de trading avec des motifs de chandeliers.

1. Motifs de Chandeliers d'Inversion : "Hammer" et "Hanging Man"

1.1. Hammer

Le "Hammer" est un chandelier avec un petit corps et une longue mèche inférieure, formé après un mouvement de prix à la baisse. Le motif "Hammer" indique la fin d'une tendance baissière.

La couleur du corps d'un chandelier n'est pas importante, mais un "Hammer" haussier indique un potentiel haussier plus élevé. Le corps du motif "Hammer" se forme souvent près du minimum de la bougie précédente. Une mèche inférieure plus longue et une mèche supérieure plus courte augmentent le potentiel de renversement du motif.

Fig. 1. Motif de chandelier 'Hammer'

Fig. 1. Motif de chandelier 'Hammer'

La reconnaissance du motif "Hammer" est mise en œuvre dans la méthode CheckPatternHammer() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif de chandelier "Hammer"  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // tendance à la baisse
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // corps dans le 1/3 supérieur
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // écart du corps
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) de la classe CCandlePattern est utilisée pour vérifier la formation du motif de chandelier "Hammer".


1.2. Hanging Man

Le "Hanging Man" est un chandelier avec un petit corps et une longue mèche inférieure, formé après un mouvement de prix à la hausse. Le motif "Hanging Man" indique la fin d'une tendance haussière.

La couleur du corps d'un chandelier n'est pas importante, mais une bougie baissière indique un potentiel baissier plus élevé. Le corps du motif "Hanging Man" se forme souvent près du maximum de la bougie précédente. Une mèche inférieure plus longue et une mèche supérieure plus courte augmentent le potentiel de renversement du motif.

Fig. 2. Motif de chandelier 'Hanging Man'

Fig. 2. Motif de chandelier 'Hanging Man'

La reconnaissance du motif "Hanging Man" est mise en œuvre dans la méthode CheckPatternHangingMan() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif de chandelier "Hanging Man"  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging Man
   if((MidPoint(1)>CloseAvg(2))                                && // tendance à la hausse
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // corps dans le 1/3 supérieur
      (Close(1)>Close(2)) && (Open(1)>Open(2))))                  // écart du corps
      return(true);
//---
   return(false);
  }

La méthode CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) de la classe CCandlePattern est utilisée pour vérifier la formation du motif de chandelier "Hanging Man".



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

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

La fermeture d'une position ouverte dépend des valeurs de RSI. Cela peut se faire dans 2 cas :

  1. si le RSI 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 le RSI atteint les niveaux suivants : 30 pour une position longue et 70 pour une position courte)

Fig. 3. Motif 'Harami', confirmé par l'indicateur RSI

Fig. 3. Motif 'Harami', confirmé par l'indicateur RSI


  • int CH_HM_RSI::LongCondition() - vérifie les conditions pour ouvrir une position longue (retourne 80) et fermer la position courte (retourne 40);
  • int CH_HM_RSI::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 "Hammer" doit être confirmée par l'indicateur RSI : RSI(1)<40 (la valeur du RSI de la dernière bougie complétée doit être inférieure à 40).

  2. La position courte doit être fermée si l'indicateur RSI 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 position longue, résultat=80) |
//| 2) Sortie du marché (fermer position courte, résultat=40) |
//+------------------------------------------------------------------+
int CH_HM_RSI::LongCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de fonctionnement du Conseiller Expert
//--- idx=0 - dans ce cas, le Conseiller Expert vérifie les conditions de trading à chaque tick
//--- idx=1 - dans ce cas, le Conseiller Expert vérifie les conditions de trading uniquement lors des nouvelles bougies
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du motif Hammer et RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (RSI(1)<40))
     result=80;
//--- vérification des conditions pour fermer une position courte
//--- croisement de la ligne de signal des niveaux surachetés/survendus (à la hausse 30, à la hausse 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- retourner le résultat
   return(result);
  }

2.2. Ouvrir une Position Courte/Fermer une Position Longue

  1. La formation du motif "Hanging Man" doit être confirmée par l'indicateur RSI : RSI(1)>60 (la valeur du RSI de la dernière bougie complétée doit être supérieure à 60).

  2. La position longue doit être fermée si l'indicateur RSI a franchi à la baisse 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 position courte, résultat=80) |
//| 2) Sortie du marché (fermer position longue, résultat=40) |
//+------------------------------------------------------------------+
int CH_HM_RSI::ShortCondition()
  {
   int result=0;
//--- idx peut être utilisé pour déterminer le mode de fonctionnement du Conseiller Expert
//--- idx=0 - dans ce cas, le Conseiller Expert vérifie les conditions de trading à chaque tick
//--- idx=1 - dans ce cas, le Conseiller Expert vérifie les conditions de trading uniquement lors des nouvelles bougies
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du motif Hanging Man et RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (RSI(1)>60))
     result=80;
//--- vérification des conditions pour fermer une position longue
//--- croisement de la ligne de signal des niveaux surachetés/survendus (vers le bas 70, vers le bas 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- retourner le résultat
   return(result);
  }


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

La classe CH_HM_RSI 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 ach_hm_rsi.mqh (voir 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 candlepatterns.mqh. Vous pourrez l'utiliser dans MQL5 Wizard après le redémarrage de MetaEditor.

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

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

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

Spécifions le nom du Conseiller Expert :

Fig. 5. Propriétés générales du Conseiller Expert

Fig. 5. Propriétés générales du Conseiller Expert

Ensuite, nous devons sélectionner les modules de signaux de trading utilisés.

Fig. 6. Propriétés des signaux du Conseiller Expert

Fig. 6. Propriétés des signaux du Conseiller Expert

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

Ajout du module de signaux Basés sur Hammer/Hanging Man confirmé par RSI :

Fig. 7. Propriétés des signaux du Conseiller Expert

Fig. 7. Propriétés des signaux du Conseiller Expert

Module de signaux de trading ajouté :

Fig. 8. Propriétés des signaux du Conseiller Expert

Fig. 8. Propriétés des signaux du Conseiller Expert

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

Fig. 9. Propriétés de trailing du Conseiller Expert

Fig. 9. Propriétés de trailing du Conseiller Expert

Concernant les propriétés de gestion de l'argent, nous utiliserons "Trading avec volume de trade fixe" :

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

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

En appuyant sur le bouton "Terminer", nous obtiendrons le code du Conseiller Expert généré, situé dans Expert_AH_HM_RSI.mq5, qui sera sauvegardé dans terminal_data_folder\MQL5\Experts\.

Les paramètres d'entrée par défaut du Conseiller Expert 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 des signaux de trading, nous avons spécifié les valeurs fixes des seuils :

  • Ouverture de position : 80;
  • Fermeture de position : 40.
Commentaire (0)