Création d'un Expert Advisor MQL5 : Signaux de Trading avec 3 Corbeaux Noirs/3 Soldats Blancs et Stochastique

Mike 2011.02.16 21:50 33 0 0
Pièce jointe

Le MQL5 Wizard vous permet de créer des Expert Advisors prêts à l'emploi à partir des classes de la bibliothèque standard fournies avec le terminal client. C'est un excellent moyen de tester rapidement vos idées de trading. Vous n'avez qu'à créer votre propre classe de signaux de trading. La structure de cette classe et un exemple sont disponibles 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 remplacer les méthodes virtuelles LongCondition() et ShortCondition() par vos propres méthodes.

Un livre intitulé "Stratégies des meilleurs traders" (en russe) aborde de nombreuses stratégies de trading, mais nous allons nous concentrer sur les modèles de chandeliers de retournement, confirmés par les oscillateurs Stochastique, CCI, MFI, et RSI.

Le mieux est de 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 et d'y ajouter les fonctionnalités nécessaires (par exemple, la confirmation par des oscillateurs).

Nous allons examiner les signaux basés sur le modèle de chandeliers de retournement "3 Corbeaux Noirs/3 Soldats Blancs", confirmé par l'indicateur Stochastique. Le module de signaux de trading est basé sur la classe CCandlePattern, qui est un exemple simple de son utilisation pour créer des signaux de trading avec des modèles de chandeliers.


1. Modèles de chandeliers "3 Corbeaux Noirs" et "3 Soldats Blancs"

1.1. 3 Corbeaux Noirs

Un modèle de chandelier baissier qui prédit le retournement de la tendance haussière actuelle. Ce modèle se compose de trois chandeliers consécutifs à corps longs qui ont clôturé en baisse par rapport au jour précédent, avec chaque ouverture de session ayant lieu à l'intérieur du corps de la bougie précédente.

Modèle de chandelier '3 Corbeaux Noirs'

Figure 1. Modèle de chandelier "3 Corbeaux Noirs"

La reconnaissance du modèle "3 Corbeaux Noirs" est implémentée dans la méthode CheckPatternThreeBlackCrows de la classe CCandlePattern :

//+------------------------------------------------------------------+ //| Vérifie la formation du modèle de chandelier "3 Corbeaux Noirs" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Corbeaux Noirs if((Open(3)-Close(3)>AvgBody(1)) && // (long black) (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (midpoints inférieurs) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); } 

La méthode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandelier "3 Corbeaux Noirs".


1.2. Modèle de chandelier 3 Soldats Blancs

Un modèle de chandelier haussier qui prédit le retournement de la tendance baissière actuelle. Ce modèle se compose de trois chandeliers consécutifs à corps longs qui ont clôturé en hausse par rapport au jour précédent, chaque ouverture de session ayant lieu à l'intérieur du corps de la bougie précédente.

Le modèle est valide tant que la bougie du deuxième jour s'ouvre dans la moitié supérieure de la plage du premier jour. À la fin du deuxième jour, elle doit clôturer près de son plus haut, laissant une ombre supérieure très petite ou inexistante. Le même modèle se répète alors le troisième jour.

Modèle de chandelier '3 Soldats Blancs'

Figure 2. Modèle de chandelier "3 Soldats Blancs"

Voici la méthode pour reconnaître le modèle "3 Soldats Blancs" :

//+------------------------------------------------------------------+ //| Vérifie la formation du modèle de chandelier "3 Soldats Blancs" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 Soldats Blancs if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // midpoints supérieurs (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); } 

La méthode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) de la classe CCandlePattern est utilisée pour vérifier la formation du modèle de chandelier "3 Soldats Blancs".


2. Signaux de trading confirmés par l'indicateur Stochastique

Les signaux de trading pour ouvrir une position longue ou courte doivent être confirmés par l'oscillateur Stochastique. La ligne %D doit être supérieure ou inférieure aux niveaux critiques correspondants (30 ou 70).

La fermeture de la position ouverte dépend des valeurs de l'indicateur %D. Cela peut être effectué dans deux cas :

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

Modèle '3 Soldats Blancs' confirmé par l'indicateur Stochastique

Fig. 3. Modèle "3 Soldats Blancs", confirmé par l'indicateur Stochastique

La vérification des conditions de trading pour l'entrée et la sortie est implémentée dans deux méthodes :

  • int CBC_WS_Stoch::LongCondition() - vérifie les conditions pour ouvrir une position longue (retourne 80) et fermer une position courte (retourne 40);
  • int CBC_WS_Stoch::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 "Trois Soldats Blancs" doit être confirmée par l'indicateur Stochastique : StochSignal(1)<30 (la valeur de la ligne de signal de l'indicateur Stochastique de la dernière bougie fermée doit être inférieure à 30).

  2. La position courte doit être fermée si la ligne de signal de l'indicateur Stochastique a franchi à la hausse les niveaux 20 ou 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 CBC_WS_Stoch::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'E.A. vérifie les conditions de trading à chaque tick //--- idx=1 - dans ce cas, l'E.A. 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 modèle 3 Soldats Blancs et ligne de signal<30 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30)) result=80; //--- vérification des conditions pour fermer la position courte //--- croisement de la ligne de signal des niveaux surachetés/survendus (descendant 20, montant 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(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 "Trois Corbeaux Noirs" doit être confirmée par l'indicateur Stochastique : StochSignal(1)>70 (la valeur de la ligne de signal de l'indicateur Stochastique de la dernière bougie fermée doit être supérieure à 70).

  2. La position longue doit être fermée si la ligne de signal de l'indicateur Stochastique a franchi à la baisse les niveaux 80 ou 20.

//+------------------------------------------------------------------+ //| 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 CBC_WS_Stoch::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'E.A. vérifie les conditions de trading à chaque tick //--- idx=1 - dans ce cas, l'E.A. 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 modèle 3 Corbeaux Noirs et ligne de signal>70 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70)) result=80; //--- vérification des conditions pour fermer la position longue //--- croisement de la ligne de signal des niveaux surachetés/survendus (descendant 80, montant 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- retour du résultat return(result); } 


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

La classe CBC_WS_Stoch 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 acbc_ws_stoch.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 le redémarrage du MetaEditor.

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

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 :

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.

Propriétés de signal de l'Expert Advisor

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

Dans notre cas, nous utilisons uniquement un module de signaux de trading.

Ajout du module Signaux basés sur 3 Corbeaux Noirs/3 Soldats Blancs confirmés par Stochastique :

Propriétés de signal de l'Expert Advisor

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

Module de signaux de trading ajouté :

Propriétés de signal de l'Expert Advisor

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

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

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 transaction fixe" :

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_ABC_WS_Stoch.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 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 l'ouverture et la fermeture de positions.

Dans le code des méthodes LongCondition() et ShortCondition() de la classe de signaux de trading, nous avons spécifié les valeurs fixes du seuil :

  • 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 comprend tous les modules ajoutés) est également utilisé, mais ses méthodes LongCondition() et ShortCondition() renvoient toujours 0.

Les résultats de vote 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 en tenir compte lors de la définition des valeurs seuils. À cause de ce fait, le ThresholdOpen et le ThresholdClose 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 se fera uniquement lorsque les conditions de fermeture seront vraies.


2.4. Résultats des tests de backtesting

Considérons le backtesting de l'Expert Advisor sur des données historiques (EURUSD H1, période de test : 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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 non utilisé).


Résultats des tests de l'Expert Advisor, basé sur 3 Corbeaux Noirs/3 Soldats Blancs + Stochastique

Fig. 11. Résultats des tests de l'Expert Advisor, basé sur 3 Corbeaux Noirs/3 Soldats Blancs + Stochastique


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 MQL5 Wizard, est joint dans expert_abc_ws_stoch.mq5.


Liste
Commentaire 0