Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Facebook !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Experts

Assistant MQL5 - Signaux de Trading Basés sur la Couverture de Nuage Noir/Ligne de Perçée (Dark Cloud Cover/Piercing Line) + RSI - expert pour MetaTrader 5

Vues:
199
Note:
(19)
Publié:
2022.01.11 13:25
\MQL5\Include\Expert\Signal\MySignals\
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

L'Assistant MQL5 permet de créer des Expert Advisors prêts à l'emploi basés sur les classes de la bibliothèque standard livrées avec le terminal client (voir Création d'Expert Advisors prêts à l'emploi dans l'Assistant MQL5 pour les détails). Il permet de vérifier rapidement vos idées de trading, tout ce dont vous avez besoin est de créer votre propre classe de signaux de trading. La structure de cette classe et cet exemple se trouvent dans l'article Assistant MQL5 : Comment créer un module de signaux de trading.

L'idée générique 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() avec vos propres méthodes.

Il existe un livre "Stratégies des meilleurs traders" (en russe), de nombreuses stratégies de trading y sont envisagées, nous nous concentrerons sur les modèles de chandeliers d'inversion, confirmés par Stochastique, Oscillateurs CCI, MFI et RSI.

Le meilleur moyen est de créer la classe séparée, dérivée de CExpertSignal pour vérifier la formation des modèles de chandeliers. Pour la confirmation des signaux de trading, générés par les modèles de chandeliers, il suffit d'écrire la classe, dérivée de CCandlePattern et d'y ajouter les fonctionnalités nécessaires (par exemple, la confirmation par des oscillateurs).

Ici, nous allons considérer les signaux, basés sur le modèle de chandelier d'inversion "Couverture de nuage sombre/ligne de perçage", confirmé par l'indicateur RSI. 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 de retournement « Dark Cloud Cover » et « Piercing Line »

1.1. Dark Cloud Cover

C'est un chandelier baisser de retournement qui se produit à la fin de la tendance haussière. Un long chandelier blanc se forme le premier jour et un gap se crée le deuxième jour. Cependant, le deuxième jour se termine en dessous du point médian du premier jour.

Fig. 1. Motif de chandeliers "Dark Cloud Cover"

Figure 1. Motif de chandeliers "Dark Cloud Cover"

La reconnaissance du motif "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))             && // (close dans le corps précédent)
      (MidOpenClose(2)>CloseAvg(1))  && // (tendance haussière)
      (Open(1)>High(2)))                // (open sur un nouveau plus haut)
      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

Le gap vers le bas 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 plus bas pourrait se former. Cette action sur les prix n'est pas aussi perceptible avec les graphiques à barres qu'avec les graphiques en chandeliers. Plus la pénétration de la clôture du deuxième jour dans le corps du premier jour est importante, plus le signal d'inversion réussira probablement.

Fig. 2. Motif de chandelier "Ligne de Perçée"

Fig. 2. Motif de chandelier "Ligne de Perçée"

La reconnaissance du motif "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))            && // (close dans le corps précédent) 
      (MidOpenClose(2)<CloseAvg(2)) && // (tendance baissière)
      (Open(1)<Low(2)))                // (open plus bas que le plus bas précédent) 
      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 motif de chandelier "Piercing Line".


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 du RSI doit être inférieure/supérieure aux niveaux critiques (40 pour la position longue et 60 pour la position courte).

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

  1. si le RSI a atteint le niveau critique inverse (70 pour la position longue et 30 pour la position courte)
  2. si le signal inverse n'est pas confirmé (lorsque le RSI atteint les niveaux suivants : 30 pour la position longue et 70 pour la position courte)

Fig. 3. Motif "Dark Cloud Cover", confirmé par l'indicateur RSI

Fig. 3. Motif "Dark Cloud Cover", confirmé par l'indicateur RSI


  • int CDC_PL_RSI::LongCondition() - vérifie les conditions d'ouverture d'une position longue (retourne 80) et de clôture de la position courte (retourne 40) ;
  • int CDC_PL_RSI::ShortCondition() - vérifie les conditions d'ouverture d'une position courte (retourne 80) et de clôture de la position longue (retourne 40).

2.1. Ouverture d'une position longue/Cloôture d'une position courte

  1. La formation du motif "Ligne de Perçée" doit être confirmée par l'indicateur RSI : RSI(1)<40 (la valeur du RSI de la dernière barre 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 CDC_PL_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 la situation de trading uniquement sur les nouvelles barres
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du motif Piercing Line et RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40))
     result=80;
//--- vérification des conditions pour fermer la position courte
//--- croisement de la ligne de signal avec les niveaux de surachat/survente (à la hausse de 30, à la hausse de 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- retourne le résultat
   return(result);
  }

2.2. Ouverture d'une position courte/Clôture d'une position longue

  1. La formation du motif "Dark Cloud Cover" doit être confirmée par l'indicateur RSI : RSI(1)>60 (la valeur de l'indicateur RSI de la dernière barre 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é (position courte ouverte, résultat=80)   |
//| 2) Sortie du marché (fermer position longue, résultat=40)        |
//+------------------------------------------------------------------+
int CDC_PL_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 la situation de trading uniquement sur les nouvelles barres
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du motif Dark Cloud Cover et RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60))
     result=80;
//--- vérification des conditions pour fermer la position longue
//--- croisement de la ligne de signal des niveaux de surachat/survente (à la baisse de 70, à la baisse de 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- retourne le résultat
   return(result);
  }


2.3. Création d'un Expert Advisor à l'aide de l'Assistant MQL5

La classe CDC_PL_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 adc_pl_rsi.mqh (voir pièces jointes) et de l'enregistrer dans le dossier client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. La même chose doit être faite avec le fichier acandlepatterns.mqh. Vous pouvez l'utiliser dans l'Assistant MQL5 après le redémarrage de MetaEditor.

Pour créer un Expert Advisor, lancez l'Assistant MQL5 :

Fig. 4. Création d'un Expert Advisor à l'aide de l'Assistant MQL5

Fig. 4. Création d'un Expert Advisor à l'aide de l'Assistant MQL5

Précisons 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 du signal de l'Expert Advisor

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

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

Ajout du module de signaux de trading "Signaux basés sur la Couverture de Nuages Noirs/Ligne de Perçée confirmée par le RSI" :

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

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

Module de signaux de trading ajouté :

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

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

Vous pouvez sélectionner n'importe quelle propriété de fin, mais nous utiliserons "Trailing Stop not used":

Fig. 9. Propriétés de suivi de l'Expert Advisor

Fig. 9. Propriétés de suivi de l'Expert Advisor

Concernant les propriétés de money management, nous utiliserons "Trading with fixed trade volume":

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_RSI.mq5, il 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 de fermeture [0...100]
input double         Signal_PriceLevel      =0.0 ; // Niveau de prix pour exécuter une transaction
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 de fermeture [0...100]
input double         Signal_PriceLevel      =0.0 ; // Niveau de prix pour exécuter une transaction
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 des 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 :

  • Ouvreture de position: 80 ;
  • Clôture de position : 40.

L'Expert Advisor, généré par l'Assistant MQL5, ouvre et ferme la position en utilisant les "votes" des modules de signaux de trading. Le vote du module principal (en tant que conteneur, il est constitué de 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 le calcul de la moyenne des "votes". Dans notre cas, nous avons :  module principal + 1 module de signaux de trading, nous devons donc prendre ce fait en compte lors de la définition des valeurs de seuil. De ce fait, ThresholdOpen et ThresholdClose doivent être définis sur 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 sur 0, cela signifie que la fermeture des positions ne sera effectuée que lorsque les conditions de fermeture seront vraies.


2.4. Résultats du backtesting de l'historique

Considérons le backtesting de l'Expert Advisor sur les données historiques (EURUSD H1, période de test : 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14).

Lors de la création de l'Expert Advisor, nous avons utilisé le volume fixe (Trading Fixed Lot, 0.1), l'algorithme Trailing Stop n'est pas utilisé (Trailing not used).

Fig. 11. Résultats des tests de l'Expert Advisor, basés sur Dark Cloud Cover/Piercing Line + RSI

Fig. 11. Résultats des tests de l'Expert Advisor, basés sur Dark Cloud Cover/Piercing Line + RSI


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 l'Assistant MQL5 est joint dans expert_ad_pl_rsi.mq5.


Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/300

Assistant MQL5 - Signaux de Trading Basés sur la Couverture de Nuages Noirs/Ligne de Perçée + MFI Assistant MQL5 - Signaux de Trading Basés sur la Couverture de Nuages Noirs/Ligne de Perçée + MFI

Les signaux de trading basés sur le modèle de chandelier "Dark Cloud Cover/Piercing Line", confirmé par l'indicateur de l'Indice de Facilitation du Marché (MFI) sont pris en compte. Le code de l'Expert Advisor basé sur cette stratégie peut être généré automatiquement à l'aide de l'Assistant MQL5.

Assistant MQL5 - Signaux de Trading Basés sur la Couverture de Nuages Noirs/Ligne de Perçée + CCI Assistant MQL5 - Signaux de Trading Basés sur la Couverture de Nuages Noirs/Ligne de Perçée + CCI

Les signaux de trading basés sur le modèle de chandelier "Dark Cloud Cover/Piercing Line", confirmé par l'indicateur Commodity Channel Index (CCI) sont pris en compte. Le code de l'Expert Advisor basé sur cette stratégie peut être généré automatiquement à l'aide de l'Assistant MQL5.

Assistant MQL5 - Signaux de Trading Basés sur les Etoile du Matin/Etoile du Soir + Stochastique Assistant MQL5 - Signaux de Trading Basés sur les Etoile du Matin/Etoile du Soir + Stochastique

Les signaux de trading basés sur le modèle de chandelier "Etoile du Matin/Etoile du Soir", confirmés par l'indicateur stochastique, sont pris en compte. Le code de l'Expert Advisor basé sur cette stratégie peut être généré automatiquement à l'aide de l'Assistant MQL5.

Assistant MQL5 - Signaux de Trading Basés sur l'Avalement Haussier/l'Avalement Baissier + Stochastique Assistant MQL5 - Signaux de Trading Basés sur l'Avalement Haussier/l'Avalement Baissier + Stochastique

Les signaux de trading basés sur le modèle de chandelier "Bullish Engulfing/Bearish Engulfing", confirmé par l'indicateur stochastique sont pris en compte. Le code de l'Expert Advisor basé sur cette stratégie peut être généré automatiquement à l'aide de l'Assistant MQL5.