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 les Etoile du Matin/Etoile du Soir + CCI - expert pour MetaTrader 5

Vues:
354
Note:
(22)
Publié:
2022.01.31 09:38
\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, il faut ensuite surcharger 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 examinerons les signaux, basés sur les modèles de chandelier d'inversion "Etoile du Matin/Etoile du Soir" (Morning Doji Star/Evening Doji Star), confirmés 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èle de retournement de bougies "Etoile du Matin" et "Etoile du Soir"

1.1. Etoile du Matin

Ce motif indique le renversement de la tendance baissière, il se compose de trois bougies (Fig. 1). Après une longue bougie noire, il y a une bougie (la couleur n'est pas importante) avec un petit corps, qui se trouve à l'extérieur du corps de la bougie noire. Le petit corps d'une bougie signifie que les forces des haussiers et des baissiers sont égales et que le marché est prêt à changer la tendance.

La troisième bougie du modèle est la bougie haussière, son corps ne chevauche pas le corps de la deuxième bougie et le prix de clôture se situe à l'intérieur du corps de la première bougie (baissière). La bougie résultante du modèle est également tracée à la figure 1.

Dans le cas où la deuxième bougie est une bougie de type doji, le modèle est nommé "Morning Doji Star".

Fig. 1. Bougies "Morning Star" et "Morning Doji Star"

Fig. 1. Motifs de chandelier "Etoile du Matin" et "Etoile du Soir"

L'identification du motif "Morning Star" est implémentée dans les méthodes CheckPatternMorningStar() et CheckPatternMorningDoji() de la classe CCandlePattern :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif "Étoile du matin"                  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Etoile du Matin (ou Morning Star)
   if((Open(3)-Close(3)>AvgBody(1))             && // bougie baissière, son corps est supérieur au corps de bougie moyen
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la seconde bougie a un petit corps (inférieur à la moitié du corps moyen)
      (Close(2)<Close(3))                       && // la clôture de la deuxième bougie est inférieure à la clôture de la première 
      (Open(2)<Open(3))                         && // l'ouverture de la deuxième bougie est inférieure à l'ouverture de la première
      (Close(1)>MidOpenClose(3)))                  // la clôture de la dernière bougie terminée est plus haute que le centre de la première
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Vérifie la formation du motif "Morning Doji Star"                |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- Morning Doji Star
   if((Open(3)-Close(3)>AvgBody(1)) && // bougie baissière avec un corps supérieur au corps de bougie moyen 
      (AvgBody(2)<AvgBody(1)*0.1)   && // la deuxième bougie a un très petit corps (doji) 
      (Close(2)<Close(3))           && // la clôture de la deuxième bougie est inférieure à la clôture de la première 
      (Open(2)<Open(3))             && // l'ouverture de la deuxième bougie est inférieure à l'ouverture de la première
      (Open(1)>Close(2))            && // gap vers le haut sur la dernière bougie terminée
      (Close(1)>Close(2)))             // la clôture de la dernière bougie terminée est plus élevée que la clôture de la seconde
      return(true);
//---
   return(false);
  }

Les méthodes CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) et CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) de la classe CCandlePattern sont utilisées pour vérifier la formation des modèles de chandeliers "Morning Star" et "Morning Doji Star".


1.2. Étoile du Soir

Ce schéma indique le renversement de la tendance haussière, il se compose de trois bougies (Fig. 2). Après une longue bougie blanche, il y a une bougie (la couleur n'a pas d'importance) avec un petit corps, qui se trouve à l'extérieur du corps de la bougie blanche. Le petit corps d'une bougie signifie que les forces des haussiers et des baissiers sont égales et que le marché est prêt à changer la tendance.

La troisième bougie du modèle est la bougie baissière, son corps ne chevauche pas le corps de la deuxième bougie et le prix de clôture se situe à l'intérieur du corps de la première bougie (haussière). La bougie résultante du modèle est également tracée à la figure 2.

Pour le cas où la deuxième bougie est une bougie de type doji, le modèle est nommé "Evening Doji Star".

Fig. 2. Modèles de chandeliers "Etoile du soir" et "Evening Doji Star"

Fig. 2. Modèles de chandeliers "Etoile du soir" et "Evening Doji Star"

Voici les méthodes d'identification des motifs « Étoile du soir » et "Evening Doji Star" :

//+------------------------------------------------------------------+
//| Vérifie la formation du motif "Etoile du Soir"                   |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Étoile du soir (ou Evening Star)
   if((Close(3)-Open(3)>AvgBody(1))             && // bougie haussière avec un corps supérieur au corps moyen 
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // la seconde bougie a un petit corps (moins de la moitié de la moyenne)
      (Close(2)>Close(3))                       && // la clôture de la deuxième bougie est plus élevée que la clôture de la première
      (Open(2)>Open(3))                         && // l'ouverture de la deuxième bougie est supérieure à l'ouverture de la première
      (Close(1)<MidOpenClose(3)))                  // la fermeture de la dernière bougie terminée est inférieure au centre de la première
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Vérifie la formation du motif "Evening Doji Star"                |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- Evening Doji Star
   if((Close(3)-Open(3)>AvgBody(1)) && // bougie haussière avec un corps supérieur à la moyenne 
      (AvgBody(2)<AvgBody(1)*0.1)   && // la deuxième bougie a un très petit corps (doji)  
      (Close(2)>Close(3))           && // la clôture de la deuxième bougie est plus élevée que la clôture de la première
      (Open(2)>Open(3))             && // l'ouverture de la deuxième bougie est supérieure à l'ouverture de la première
      (Open(1)<Close(2))            && // gap le bas sur la dernière bougie terminée
      (Close(1)<Close(2)))             // la clôture de la dernière bougie terminée est inférieure à la clôture de la seconde
      return(true);
//---
   return(false);
  }

Les méthodes CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) et CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) de la classe CCandlePattern sont utilisées pour vérifier la formation des modèles de chandeliers "Evening Star" et "Evening Doji Star".


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

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

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

Fig. 3. Le motif "Etoile du Soir", confirmé par l'indicateur CCI

Fig. 3. Le motif "Etoile du Soir", confirmé par l'indicateur CCI


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

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

  1. La formation du motif "Etoile du Matin" doit être confirmée par l'indicateur CCI : CCI(1)<-50 (la valeur du CCI de la dernière barre 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 à 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 CMS_ES_CCI::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 pour les nouvelles barres
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position longue
//--- formation du motif Etoile du Matin et CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (CCI(1)<-50))
     result=80;
//--- vérification des conditions pour fermer la 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;
//--- retourne le résultat
   return(result);
  }

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

  1. La formation du motif "Etoile du Soir" doit être confirmée par l'indicateur CCI : CCI(1)>50 (la valeur de l'indicateur CCI de la dernière barre complétée doit être supérieure à 50).

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

//+------------------------------------------------------------------+
//| 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 la position longue, résultat = 40)   |
//+------------------------------------------------------------------+
int CMS_ES_CCI::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 pour les nouvelles barres
   int idx   =StartIndex();
//--- vérification des conditions pour ouvrir une position courte
//--- formation du motif Etoile du Soir et CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (CCI(1)>50))
     result=80;
//--- vérification des conditions pour clôturer une position longue
//--- croisement de la ligne de signal des niveaux de surachat/survente (baisse de -80, baisse de 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- retourne le résultat
   return(result);
  }


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

La classe CMS_ES_CCI n'est pas incluse dans les classes de la Bbibliothèque Standard, pour l'utiliser, il est nécessaire de télécharger le fichier acms_es_cci.mqh (voir pièces jointes) et de l'enregistrer dans le client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. La même chose doit être faite avec le fichier Candlepatterns.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 "Signaux basés sur les étoiles du matin/du soir confirmés par CCI" des signaux de trading :

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_AMS_ES_CCI.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 des données historiques (EURUSD H1, période de test : 2009.01.01-2011.03.16, PeriodCCI=25, MA_period=5).

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 Morning/Evening Stars + CCI

Fig. 11. Résultats des tests de l'Expert Advisor, basés sur Morning/Evening Stars + CCI


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 attaché dans expert_ams_es_cci.mq5.


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

Assistant MQL5 - Signaux de Trading Basés sur les Lignes de Rencontres Haussières/Baissières + RSI Assistant MQL5 - Signaux de Trading Basés sur les Lignes de Rencontres Haussières/Baissières + RSI

Les signaux de trading basés sur le modèle de chandelier "Lignes de Rencontre Haussières/Baissières", confirmé par l'indicateur Relative Strength Index (RSI) 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 Lignes de Rencontres Haussières/Baissières + MFI Assistant MQL5 - Signaux de Trading Basés sur les Lignes de Rencontres Haussières/Baissières + MFI

Les signaux de trading basés sur le modèle de chandelier "Lignes de Rencontre Haussières/Baissières", confirmé par l'Indice de Facilitation du Marché (MFI, Market Facilitation Index) 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 + MDI Assistant MQL5 - Signaux de Trading Basés sur les Etoile du Matin/Etoile du Soir + MDI

Les signaux de trading basés sur les modèles de chandelier "Etoile du Matin/Etoile du Soir", confirmés par l'Indice de Facilitation du Marché (MFI, Market Facilitation Index) 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 + RSI Assistant MQL5 - Signaux de Trading Basés sur les Etoile du Matin/Etoile du Soir + RSI

Les signaux de trading basés sur les modèles de chandelier "Etoile du Matin/Etoile du Soir", confirmés par l'indicateur Relative Strength Index (RSI) 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.