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 du MACD - expert pour MetaTrader 5

Vues:
356
Note:
(34)
Publié:
2022.01.11 13:10
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).

Ici, nous allons considérer les signaux de trading, basés sur le croisement des lignes de l'indicateur MACD. La stratégie appelée "Signaux basés sur le croisement des lignes du MACD" (lors de la création automatique d'EA dans l'Assistant MQL5).

La ligne principale de l'indicateur MACD est calculée comme une différence entre l'EMA rapide et l'EMA lente. La ligne de signal du MACD est calculée comme la ligne principale, lissée avec la période PeriodSignal.

Les signaux de trading :

  • Achat : croisement vers le haut de la ligne principale et de la ligne de signal de l'indicateur MACD.
  • Vente : croisement à la baisse de la ligne principale et de la ligne de signal de l'indicateur MACD.

Cette stratégie est mise en œuvre dans la classe CSignalMACD des classes de stratégie de trading de la bibliothèque standard MQL5 (située dans MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figure 1. Signaux de trading, basés sur le croisement de la ligne principale du MACD et de la ligne de signal

Figure 1. Signaux de trading, basés sur le croisement de la ligne principale du MACD et de la ligne de signal


Signaux de trading

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

double  MainMACD(int ind)      // renvoie la valeur de la ligne MACD principale de la barre
double  SignalMACD(int ind)    // renvoie la valeur du signal MACD ligne de la barre
double  StateMACD(int ind)     // renvoie la différence entre la ligne principale du MACD et la ligne de signal
int     ExtStateMACD(int ind); // renvoie le nombre de changements de signe de la différence entre les lignes principale et de signal 


1. Ouverture d'une position longue

Conditions pour ouvrir une position longue :

  • ExtStateMACD(1)==1; cela signifie que la ligne principale a croisé vers le haut la ligne de signal du MACD
//+------------------------------------------------------------------+
//| Vérifie les conditions d'ouverture d'une position longue (achat) |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& prix,double& sl,double& tp,datetime & expiration)
{
   prix=0.0 ;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point ;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point ;
//---
return(ExtStateMACD(1)==1);
}


2. Fermeture d'une position longue

Conditions pour fermer une position longue :

  • ExtStateMACD(1)==1; cela signifie que la ligne principale a croisé vers le bas la ligne de signal du MACD
//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position longue            |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& prix)
{
   prix=0.0 ;
//---
return(ExtStateMACD(1)==-1);
}


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 CSignalMACD::CheckOpenShort(double& prix,double& sl,double& tp,datetime & expiration)
{
   prix=0.0 ;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point ;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point ;
//---
return(ExtStateMACD(1)==-1);
}


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 CSignalMACD::CheckCloseShort(double& prix)
{
   prix=0.0 ;
//---
return(ExtStateMACD(1)==1);
}

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 en tant que "Signaux basés sur le croisement des lignes du MACD" dans l'option "Créer des Expert Advisors prêts à l'emploi" de l'Assistant MQL5 :

Figure 2. Sélectionnez "Signaux basés sur le croisement des lignes du MACD" dans l'Assistant MQL5

Figure 2. Sélectionnez "Signaux basés sur le croisement des lignes du MACD" 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, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

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 des lignes MACD croisées

Figure 3. Résultats des tests de l'Expert Advisor avec des signaux de trading, basés sur des lignes MACD croisées


Pièces jointes : La classe SignalMACD.mqh avec CSignalMACD (incluse dans la bibliothèque standard MQL5) se trouve dans le dossier MQL5\Include\Expert\Signal. Le testmacd.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/262

Assistant MQL5 - Signaux de Trading Basés sur le Croisement de Deux Moyennes Mobiles Lissées de manière Exponentielle Assistant MQL5 - Signaux de Trading Basés sur le Croisement de Deux Moyennes Mobiles Lissées de manière Exponentielle

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

Les signaux de trading basés sur le croisement des lignes de l'indicateur technique Alligator 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.