Utilisez MQL5 Wizard pour Créer des Signaux de Trading Basés sur les Bullish/Bearish Meeting Lines et RSI

Mike 2011.03.24 20:39 20 0 0
Pièce jointe

Le MQL5 Wizard 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. 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 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 de 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), où de nombreuses stratégies de trading sont abordées. Nous allons nous concentrer sur les modèles de bougies de retournement, confirmés par des oscillateurs comme 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 bougies. Pour la confirmation des signaux de trading générés par les modèles de bougies, il suffit d'écrire une classe dérivée de CCandlePattern et d'y ajouter les fonctionnalités nécessaires (par exemple, la confirmation par les oscillateurs).

Ici, nous allons considérer les signaux basés sur le modèle de bougie "Bullish Meeting Lines", confirmé par l'indicateur RSI (Relative Strength Index). Le module de signaux de trading est basé sur la classe CCandlePattern, c'est un exemple simple d'utilisation pour créer des signaux de trading avec des modèles de bougies.

1. Modèles de bougies "Meeting Lines"

1.1. Bullish Meeting Lines

Le modèle se compose de deux bougies (baissière et haussière) avec des prix de clôture égaux (ou très proches). Le corps des deux bougies doit être supérieur à la longueur moyenne des corps.

Le modèle "Bullish Meeting Lines" indique un retournement d'une tendance baissière.

Fig. 1. Modèle

Fig. 1. Modèle "Bullish Meeting Lines"

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

//+--------------------------------------------------------------------+
//| Vérifie la formation du modèle "Bullish Meeting Lines" |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // longue noire
     ((Close(1)-Open(1))>AvgBody(1))             && // longue blanche
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // fermeture doji
      return(true);
//---
   return(false);
  }

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


1.2. Bearish Meeting Lines

Le modèle se compose de deux bougies (haussière et baissière) avec des prix de clôture égaux (ou très proches). Le corps des deux bougies doit être supérieur à la longueur moyenne des corps.

Le modèle "Bearish Meeting Lines" indique un retournement d'une tendance haussière.

Fig. 2. Modèle

Fig. 2. Modèle "Bearish Meeting Lines"

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

//+--------------------------------------------------------------------+
//| Vérifie la formation du modèle "Bearish Meeting Lines" |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // longue blanche
     ((Open(1)-Close(1)>AvgBody(1))             && // longue noire
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // fermeture doji
      return(true);
//---
   return(false);
  }

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



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/superieure à des niveaux critiques (40 pour une position longue et 60 pour une position courte).

La clôture d'une position ouverte dépend des valeurs de l'indicateur RSI. Cela peut se faire dans deux 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. Modèle

Fig. 3. Modèle "Bearish Meeting Lines", confirmé par l'indicateur RSI


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

2.1. Ouvrir une position longue/Fermer une position courte

  1. La formation du modèle "Bullish Meeting Lines" doit être confirmée par l'indicateur RSI : RSI(1)<40 (la valeur du RSI de la dernière barre clôturé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 pour entrer et sortir du marché |
//| 1) Entrée sur le marché (ouvrir une position longue, résultat=80) |
//| 2) Sortie du marché (fermer position courte, résultat=40) |
//+------------------------------------------------------------------+
int CML_RSI::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 barres de nouvelles
  int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du modèle Bullish Meeting Lines et RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (RSI(1)<40))
     result=80;
//--- vérification des conditions pour fermer la position courte
//--- croisement de la ligne signal des niveaux de surachat/survente (à la hausse 30, à la hausse 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(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 Meeting Lines" doit être confirmée par l'indicateur RSI : RSI(1)>60 (la valeur de l'indicateur RSI de la dernière barre clôturé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 pour entrer et sortir du marché |
//| 1) Entrée sur le marché (ouvrir une position courte, résultat=80) |
//| 2) Sortie du marché (fermer position longue, résultat=40) |
//+------------------------------------------------------------------+
int CML_RSI::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 barres de nouvelles
  int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du modèle Bearish Meeting Lines et RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (RSI(1)>60))
     result=80;
//--- vérification des conditions pour fermer la position longue
//--- croisement de la ligne signal des niveaux de surachat/survente (à la baisse 70, à la baisse 30)
  if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- retour du résultat
   return(result);
  }


2.3. Créer un Expert Advisor avec MQL5 Wizard

La classe CML_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 acml_rsi.mqh (voir les pièces jointes) et de le sauvegarder dans le dossier client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Il faut faire de même avec 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é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

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 utilisons uniquement un module de signaux de trading.

Ajout du module "Signaux basés sur les Bullish/Bearish Meeting Lines confirmés par le RSI" :

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_AML_RSI.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 à ouvrir [0...100]
input int            Signal_ThresholdClose  =10;     // Valeur seuil du signal à 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 à ouvrir [0...100]
input int            Signal_ThresholdClose  =20;     // Valeur seuil du signal à 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 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 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() renvoient 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 cela en compte lors de la définition des valeurs seuils. À cause de ce fait, les seuils d'ouverture et de fermeture 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 ne sera effectuée que lorsque les conditions de fermeture seront vraies.


2.4. Résultats du backtesting historique

Considérons le backtesting de l'Expert Advisor sur des données historiques (EURUSD H1, période de test : 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3).

Dans 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 de test de l'Expert Advisor, basé sur les Bullish/Bearish Meeting Lines + RSI

Fig. 11. Résultats de test de l'Expert Advisor, basé sur les Bullish/Bearish Meeting Lines + RSI


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

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


Liste
Commentaire 0