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 le Croisement de Deux Moyennes Mobiles Lissées de manière Exponentielle - expert pour MetaTrader 5

Vues:
309
Note:
(32)
Publié:
2022.01.11 13:09
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 automatiquement le code des Expert Advisors. Voir Créer des Expert Advisors prêts à l'emploi avec l'Assistant MQL5 pour plus de détails.

Ici, nous allons considérer la stratégie basée sur le croisement de deux moyennes mobiles exponentiellement lissées (EMA rapide et EMA lente). La stratégie appelée "Signaux basés sur le croisement de deux EMA" (lors de la création automatique d'EA dans l'Assistant MQL5).

Les signaux de trading :

  • Achat : l'EMA rapide croise vers le haut l'EMA lente
  • Vente : l'EMA rapide croise à la baisse l'EMA lente

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

Figure 1. Signaux de trading, basés sur le croisement de deux moyennes mobiles lissées de façon exponentielle

Figure 1. Signaux de trading, basés sur le croisement de deux moyennes mobiles lissées de façon exponentielle


Signaux de Trading

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

double   FastEMA(int ind)      // renvoie la valeur de la moyenne mobile rapide de la barre
double   SlowEMA(int ind)      // renvoie la valeur de la moyenne mobile lente de la barre
double   StateEMA(int ind)     // renvoie la différence entre les moyennes mobiles rapides et lentes de la barre


1. Ouverture d'une position longue

Conditions pour ouvrir une position longue :

  • StateEMA(1)>0 et StateEMA(2)<0 : l'EMA rapide a croisé vers le haut l'EMA lente sur la dernière barre terminée.
//+------------------------------------------------------------------+
//| Vérifie les conditions d'ouverture d'une position longue (achat) |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenLong(double& prix,double& sl,double& tp,datetime& expiration)
{
if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   prix=0.0 ;
   sl   =0.0 ;
   tp   =0.0 ;
//---
return(true);
}

2. Fermeture d'une position longue

Conditions pour fermer une position longue :

  • StateEMA(1)<0 et StateEMA(2)>0 : l'EMA rapide a croisé vers le bas l'EMA lente sur la dernière barre complétée.
//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position longue            |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& prix)
{
   if(!(StateEMA(2)>0 && StateEMA(1)<0))    return(false);
//---
   prix=0.0 ;
//---
   return(true);
}


3. Ouverture d'une position courte

Les conditions d'ouverture d'une position courte sont les mêmes que les conditions de clôture d'une position longue.

//+------------------------------------------------------------------+
//| Vérifie les conditions d'ouverture d'une position courte (vente) |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenShort(double& prix,double& sl,double& tp, datetime& expiration)
{
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   prix=0.0 ;
   sl   =0.0 ;
   tp   =0.0 ;
//---
return(true);
}

4. Fermeture d'une position courte

Les conditions de clôture des positions courtes sont les mêmes que les conditions d'ouverture des positions longues.

//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position courte            |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& prix)
{
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   prix=0.0 ;
//---
return(true);
}

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 le croisement de deux EMA" dans l'option "Créer des Expert Advisors prêts à l'emploi" de l'Assistant MQL5 :

Figure 2. Choisissez "Signaux, basés sur le croisement de deux EMA" dans l'Assistant MQL5

Figure 2. Choisissez "Signaux, basés sur le croisement de deux EMA" 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.

De plus, les classes de la bibliothèque Standard contiennent les "Signaux basés sur le croisement de deux MA", implémentés dans la classe CSignalCrossMA. L'idée de trading est similaire, mais elle fournit de nombreuses fonctionnalités supplémentaires (spécifier les types, les décalages et les méthodes de calcul de la moyenne et l'utilisation des niveaux de Take Profit et Stop Loss).

Figure 3. "Signaux, basés sur le croisement de deux MA" dans l'Assistant MQL5

Figure 3. "Signaux, basés sur le croisement de deux MA" dans l'Assistant MQL5


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,   FastPeriod=12, SlowPeriod=24).

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 4. Résultats historiques du backtesting de l'Expert Advisor, basés sur le croisement de deux EMA

Figure 4. Résultats historiques du backtesting de l'Expert Advisor, basés sur le croisement de deux EMA


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

Le crossover_2ema.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/261

Assistant MQL5 - Signaux de Trading Basés sur un Croisement des Prix avec une Moyenne Mobile, confirmé par l'ADX Assistant MQL5 - Signaux de Trading Basés sur un Croisement des Prix avec une Moyenne Mobile, confirmé par l'ADX

Les signaux de trading basés sur le croisement des prix avec l'indicateur de moyenne mobile confirmé par l'ADX 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 Trois Moyennes Mobiles Assistant MQL5 - Signaux de Trading basés sur Trois Moyennes Mobiles

Les signaux de trading basés sur trois moyennes mobiles 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 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.