Rejoignez notre page de fans
![Experts](https://c.mql5.com/i/code/expert.png)
Assistant MQL5 - Signaux de Trading Basés sur les motifs Hammer/Hanging Man + Stochastique - expert pour MetaTrader 5
- Vues:
- 276
- Note:
- Publié:
- 2022.01.11 13:29
-
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 le modèle de chandelier d'inversion "Hammer/Hanging Man", confirmé par l'indicateur Stochastique. 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 inversés "Hammer" et "Hanging Man"
1.1. Hammer
Le "Hammer" (Marteau) est un chandelier avec un petit corps et une longue mèche inférieure, formé après un mouvement de baisse des prix. Le motif "Hammer" indique la fin d'une tendance baissière.
La couleur d'un corps de chandelier n'est pas importante, mais le marteau haussier indique un potentiel haussier plus élevé. Le corps du motif "Hammer" se formait souvent près du minimum de la bougie précédente. La mèche inférieure plus longue et la mèche supérieure plus courte conduisent à un potentiel plus élevé du motif d'inversion.
Fig. 1. Modèle de chandelier "Hammer"
La reconnaissance du motif "Hammer" est implémentée dans la méthode CheckPatternHammer() de la classe CCandlePattern :
//+------------------------------------------------------------------+ //| Vérifie la formation du modèle "Hammer" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer() { //--- Hammer if((MidPoint(1)<CloseAvg(2)) && // tendance baissière (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // corps dans le tiers supérieur (Close(1)<Close(2)) && (Open(1)<Open(2))) // gap 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 modèle 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 "Pendu" (Hanging Man) indique la fin d'une tendance haussière.
La couleur d'un corps de chandelier n'est pas importante, mais une bougie baissière indique un potentiel baissier plus élevé. Le corps du motif "Hanging Man" s'est souvent formé près du maximum de la bougie précédente. La mèche inférieure plus longue et la mèche supérieure plus courte conduisent à un potentiel plus élevé du motif d'inversion.
Figure 2. Modèle de chandelier "Hanging Man"
La reconnaissance du motif "Hanging Man" est implémentée dans la méthode CheckPatternHangingMan() de la classe CCandlePattern :
//+------------------------------------------------------------------+ //| Vérifie la formation du motif "Hanging Man " | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan() { //--- Hanging man if((MidPoint(1)>CloseAvg(2)) && // tendance hausière (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // corps dans le tiers supérieur (Close(1)>Close(2)) && (Open(1)>Open(2)))) // gap 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 modèle de chandelier "Hanging Man".
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 du signal doit être supérieure/inférieure au niveau critique correspondant (30 ou 70).
La fermeture de la position ouverte dépend des valeurs de l'indicateur %D. Cela peut se faire dans 2 cas :
- si la ligne %D a atteint le niveau critique opposé (80 pour la position longue et 20 pour la position courte)
- si le signal inverse n'est pas confirmé (lorsque la ligne %D atteint les niveaux suivants : 20 pour la position longue et 80 pour la position courte)
Figure 3. Motif "Hammer", confirmé par l'indicateur stochastique
- int CH_HM_Stoch::LongCondition() - vérifie les conditions d'ouverture d'une position longue (retourne 80) et de clôture de la position courte (retourne 40) ;
- int CH_HM_Stoch::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
La formation du motif "Hammer" 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 barre complétée doit être inférieure à 30).
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 CH_HM_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'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 Hammer et ligne de signal <30 if (CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (StochSignal(1)<30)) result=80; //--- vérification des conditions pour fermer la position courte //--- croisement de la ligne de signal des niveaux de surachat/survente (à la baisse 20, à la hausse 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- retourne le résultat return(result); }
2.2. Ouverture d'une position courte/Clôture d'une position longue
La formation du motif "Hanging Man" 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 mesure complétée doit être supérieure à 70).
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é (position courte ouverte, résultat=80) | //| 2) Sortie du marché (fermer position longue, résultat=40) | //+------------------------------------------------------------------+ int CH_HM_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'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 Hanging Man et ligne de signal >70 if (CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (StochSignal(1)>70)) 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 80, à la hausse de 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- retourne le résultat return(result); }
2.3. Création d'un Expert Advisor à l'aide de l'Assistant MQL5
La classe CH_HM_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 ach_hm_stoch.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
Précisons le nom 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
Dans notre cas, nous n'utilisons qu'un seul module de signaux de trading.
Ajout du module "Signaux basés sur Hammer/Hanging Man confirmés par Stochastique" des signaux de trading :
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
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
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
En appuyant sur le bouton "Terminer", nous obtiendrons le code de l'Expert Advisor généré, situé dans Expert_AH_HM_Stoch.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.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, 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 Hammer/Hanging Man + 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 l'Assistant MQL5 est joint dans expert_ah_hm_stoch.mq5.
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/314
![Assistant MQL5 - Signaux de Trading Basés sur un Harami Haussier/Harami Baissier + RSI](https://c.mql5.com/i/code/expert.png)
Les signaux de trading basés sur le modèle de chandelier "Harami Haussier/Harami Baissier", 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 un Harami Haussier/Harami Baissier + MFI](https://c.mql5.com/i/code/expert.png)
Les signaux de trading basés sur le modèle de chandelier "Harami Haussier/Harami Baissier", 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 motifs Hammer/Hanging Man + CCI](https://c.mql5.com/i/code/expert.png)
Les signaux de trading basés sur le modèle de chandelier "Hammer/Hanging Man", 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 motifs Hammer/Hanging Man + MFI](https://c.mql5.com/i/code/expert.png)
Les signaux de trading basés sur le modèle de chandelier "Hammer/Hanging Man", confirmé par l'indicateur Market Facilitation Index (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.