Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
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 le Croisement des Lignes de l'Indicateur Alligator - expert pour MetaTrader 5

Vues:
350
Note:
(33)
Publié:
2022.01.11 13:14
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

L'Assistant MQL5 permet la création automatique d'Expert Advisors (voir Assistant MQL5 : Création d'Expert Advisors sans programmation).

Il est temps de considérer les signaux de trading, basés sur l'indicateur technique Alligator, présenté par B.Williams dans "Trading Chaos". La stratégie appelée "Signaux basés sur l'Alligator" (lors de la création automatique d'EA dans l'Assistant MQL5).

Le système est basé sur trois moyennes mobiles (lignes des Lèvres, des Dents et de la Mâchoire) et des oscillateurs, calculés en utilisant la différence entre eux. Les signaux de trading sont générés après croisement des lignes de l'Alligator, en fonction de la tendance, déterminée par l'ordre de ces lignes. Dans le cas d'une tendance à la hausse, la ligne des Lèvres (avec une période minimale) est la plus élevée, la suivante est la ligne des Dents et la plus basse est la ligne de la Mâchoire. Le cas similaire mais inverse dans le cas d'une tendance à la baisse.

Les signaux de trading :

  • Ouvreture d'une position longue : croisement des lignes de l'Alligator et augmentation de la distance entre elles en cas de tendance haussière ;
  • Fermeture d'une position longue : croisement vers le haut de la ligne des Lèvres avec la ligne de la Mâchoire ;
  • Ouverture d'une position courte : croisement des lignes de l'Alligator et augmentation de la distance entre elles en cas de tendance baissière ;
  • Fermeture d'une position courte : croisement vers le bas de la ligne des Lèvres avec la ligne de la Mâchoire ;

Cette stratégie est implémentée dans la classe CSignalAlligator.

Figure 1. Signaux de trading, basés sur l'indicateur technique Alligator

Figure 1. Signaux de trading, basés sur l'indicateur technique Alligator


Signaux de trading

La stratégie de trading est implémentée dans CSignalAlligator, elle dispose de méthodes protégées pour simplifier l'accès aux valeurs des indicateurs :

double  Jaw(int ind)              // renvoie la valeur de la ligne de la Mâchoire de la barre
double  Teeth(int ind)            // renvoie la valeur de la ligne des Dents de la barre
double  Lips(int ind)             // renvoie la valeur de la ligne des Lèvres de la barre
double  LipsTeethDiff(int ind)    // renvoie la différence entre les lignes des Lèvres et des Dents
double  TeethJawDiff(int ind)     // renvoie la différence entre les lignes des Dents et de la Mâchoire
double  LipsJawDiff(int ind)      // renvoie la différence entre les lignes des Lèvres et de la Mâchoire
bool     CheckCross(); // utilisé pour vérifier le croisement des lignes de l'Alligator


1. Ouverture d'une position longue

La vérification des conditions de trading présente certaines caractéristiques, causées par le décalage des lignes des Lèvres, des Dents et de la Mâchoire.

Conditions pour ouvrir une position longue :

  • Le CheckCross est utilisé pour déterminer le croisement et augmenter encore la différence entre les lignes ;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) et LipsTeethDiff(-1)>=LipsTeethDiff(0) ; vérification de l'augmentation de la différence entre les lignes des Lèvres et des Dents ;
  • LipsTeethDiff(0)>=0.0 ; la ligne des Lèvres est plus haute que la ligne des Dents ;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  et TeethJawDiff(-1) >=TeethJawDiff(0) ; vérification de l'augmentation de la différence entre les lignes des Dents et de la Mâchoire ;
  • TeethJawDiff(0) >=0.0; la ligne des Dents est plus haute que la ligne de la Mâchoire.
//+------------------------------------------------------------------+
//| Vérifie les conditions d'ouverture d'une position longue (achat) |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& prix,double& sl,double& tp,datetime& expiration)
{
   if(CheckCross()) return(false);
//---
   prix=0.0 ;
   sl   =0.0 ;
   tp   =0.0 ;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>= LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
   m_crossed=true ;
//---
   return(m_crossed);
}


2. Fermeture d'une position longue

Conditions pour fermer une position longue (notez le décalage des lignes):

  • LèvresDiff.dents(-1)<0; la ligne des Lèvres de la barre suivante (à cause du décalage) est plus basse que la ligne des Dents ;
  • LèvresDifflesDents(0)>=0 ; la ligne des Lèvres de la barre actuelle est supérieure/égale à la ligne des Dents ;
  • LèvresDentsDiff(1)>0; la ligne des Lèvres de la barre précédente (complétée) est plus haute que la ligne des Dents.
//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position longue            |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& prix)
{
   prix=0.0 ;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
}


3. Ouverture d'une position courte

Conditions pour ouvrir une position courte :

  • Le CheckCross est utilisé pour déterminer le croisement et augmenter encore la différence entre les lignes ;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) et LipsTeethDiff(-1)<=LipsTeethDiff(0) ; vérification de l'augmentation de la différence entre les lignes des Lèvres et des Dents ;
  • LipsTeethDiff(0)<=0.0 ; la ligne des Lèvres de la barre actuelle est inférieure à la ligne des Dents ;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) et TeethJawDiff(-1)<=TeethJawDiff(0) ; vérification de l'augmentation de la différence entre les lignes des Dents et de la Mâchoire ;
  • TeethJawDiff(0) <=0.0 ; la ligne des Dents de la barre actuelle est inférieure à la ligne de la Mâchoire ;
//+------------------------------------------------------------------+
//| Vérifie les conditions d'ouverture d'une position courte (vente) |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& prix,double& sl,double& tp,datetime& expiration)
{
   if(CheckCross()) return(false);
//---
   prix=0.0 ;
   sl   =0.0 ;
  tp   =0.0 ;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<= LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
   m_crossed=true ;
//---
   return(m_crossed);
}


4. Fermeture d'une position courte

Conditions pour fermer une position courte :

  • LèvresDiff.dents(-1)>0 ; la ligne des Lèvres de la barre suivante (à cause du décalage) est plus haute que la ligne des Dents ;
  • LipsTeethDiff(0)<=0; la ligne des Lèvres de la barre actuelle est inférieure/égale à la ligne des Dents ;
  • LèvresDentsDiff(1)<0; la ligne des Lèvres de la barre précédente (complétée) est plus basse que la ligne des Dents.
//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position courte            |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& prix)
{
   prix=0.0 ;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
}

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

Pour créer un robot de trading basé sur la stratégie, vous devez choisir les propriétés du signal comme "Signaux basés sur l'Alligator" dans l'option "Créer des Expert Advisors prêts à l'emploi" de l'Assistant MQL5 :

Figure 2. Sélectionnez "Signaux basés sur l'Alligator" dans l'Assistant MQL5

Figure 2. Sélectionnez "Signaux basés sur l'Alligator" dans l'Assistant MQL5

Ensuite, vous devez spécifier l'algorithme du stop suiveur et le système de gestion des fonds et des risques. Le code de l'Expert Advisor sera créé automatiquement, vous pouvez le compiler et le tester dans le Strategy Tester du terminal client MetaTrader 5.


Résultats des Tests

Considérons le backtesting de l'Expert Advisor sur les données historiques (EURUSD H1, période de test : 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod =2, Appliqué=5, CrossMeasure=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).

Figure 3. Résultats des tests de l'Expert Advisor avec des signaux de trading, basés sur l'indicateur Alligator

Figure 3. Résultats des tests de l'Expert Advisor avec des signaux de trading, basés sur l'indicateur Alligator


Le profit peut être augmenté si vous utilisez le filtrage des transactions et tenez compte des caractéristiques du marché, en fonction du temps. La classe CSignalITF vous permettra d'ajouter le filtre horaire intraday. Les meilleurs temps peuvent être trouvés en utilisant le Testeur de stratégie du terminal client MetaTrader 5. Voir l'exemple dans Assistant MQL5 - Signaux de Trading Basés sur le Croisement de deux EMA avec Filtre de temps intraday.


Pièces jointes : La classe SignalAlligator.mqh avec CSignalAlligator doit être placée dans le dossier terminal_data_folder\MQL5\Include\Expert\Signal.

Le fichier expert_alligator.mq5 contient le code de l'Expert Advisor, créé à l'aide de l'Assistant MQL5.

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

Assistant MQL5 - Signaux de Trading Basés sur le Croisement de Deux EMA en intraday Assistant MQL5 - Signaux de Trading Basés sur le Croisement de Deux EMA en intraday

Les signaux de trading basés sur le croisement des prix de deux moyennes mobiles lissées de manière exponentielle en intraday 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 le Croisement des Lignes du MACD Assistant MQL5 - Signaux de Trading Basés sur le Croisement des Lignes du MACD

Les signaux de trading basés sur le croisement des lignes du MACD (CSignalMACD de la bibliothèque standard MQL5) 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 des Modèles de Renversement de Bougies Assistant MQL5 - Signaux de Trading Basés sur des Modèles de Renversement de Bougies

Les signaux de trading basés sur des modèles de renversement de bougies 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 3 Corbeaux Noirs/3 Soldats Blancs + Stochastique Assistant MQL5 - Signaux de Trading Basés sur 3 Corbeaux Noirs/3 Soldats Blancs + Stochastique

Les signaux de trading basés sur le modèle de chandelier "3 Black Crows/3 White Soldiers", 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.