Utiliser le MQL5 Wizard pour Créer des Signaux de Trading avec MACD

Mike 2011.01.14 21:55 23 0 0
Pièce jointe

MQL5 Wizard permet de créer automatiquement des Systèmes de Trading (EA). Vous pouvez consulter notre article sur MQL5 Wizard : Créer des Systèmes de Trading sans Programmation pour plus de détails.

Dans cet article, nous allons nous concentrer sur les signaux de trading basés sur le croisement des lignes principales et de signal de l'indicateur MACD. Cette stratégie s'appelle "Signaux basés sur le croisement des lignes principales et de signal MACD" lors de la création d'un EA automatiquement avec le MQL5 Wizard.

La ligne principale de l'indicateur MACD est calculée comme la différence entre la moyenne mobile exponentielle (EMA) rapide et l'EMA lente. La ligne de signal du MACD est le lissage de la ligne principale, avec une période définie par PeriodSignal.

Les signaux de trading :

  • Achat : croisement à la hausse 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 implémentée dans la classe CSignalMACD de la Bibliothèque Standard de MQL5 (située dans MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figure 1. Signaux de trading, basés sur le croisement des lignes principales et de signal MACD

Figure 1. Signaux de trading, basés sur le croisement des lignes principales et de signal MACD


Signaux de trading

La stratégie de trading est mise en œuvre dans la classe CSignalMACD, qui dispose de méthodes protégées pour simplifier l'accès aux valeurs des indicateurs :

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


1. Ouvrir une position longue

Conditions pour ouvrir une position longue :

  • ExtStateMACD(1)==1 ; cela signifie que la ligne principale a croisé à la hausse la ligne de signal MACD.
//+------------------------------------------------------------------+
//| Vérifie les conditions pour ouvrir une position longue (achat)      |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=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. Fermer une position longue

Conditions pour fermer une position longue :

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


3. Ouvrir une position courte

Les conditions pour ouvrir une position courte sont les mêmes que celles pour fermer une position longue.

//+------------------------------------------------------------------+
//| Vérifie les conditions pour ouvrir une position courte (vente)     |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=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. Fermer une position courte

Les conditions pour fermer une position courte sont les mêmes que celles pour ouvrir une position longue.

//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer une position courte              |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Créer un Expert Advisor avec MQL5 Wizard

Pour créer un robot de trading basé sur cette stratégie, il suffit de choisir les propriétés de signal comme "Signaux basés sur le croisement des lignes principales et de signal MACD" dans l'option "Créer des Experts Prêts à l'Emploi" du MQL5 Wizard :

Figure 2. Sélectionnez les signaux basés sur le croisement des lignes principales et de signal MACD dans MQL5 Wizard

Figure 2. Sélectionnez les signaux basés sur le croisement des lignes principales et de signal MACD dans MQL5 Wizard

Ensuite, vous devrez spécifier l'algorithme de trailing stop et le système de gestion de l'argent et des risques nécessaires. Le code de l'Expert Advisor sera créé automatiquement, vous pourrez le compiler et le tester dans le Strategy Tester du terminal client MetaTrader 5.


Résultats des Tests

Examinons le backtesting de l'Expert Advisor sur des 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é un volume fixe (Trading Fixed Lot, 0.1), l'algorithme de Trailing Stop n'est pas utilisé (Trailing non utilisé).

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

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


Pièces jointes : Le fichier SignalMACD.mqh avec la classe CSignalMACD (inclus dans la Bibliothèque Standard MQL5) se trouve dans le dossier MQL5\Include\Expert\Signal. Le fichier testmacd.mq5 contient le code de l'Expert Advisor, créé avec le MQL5 Wizard.

Liste
Commentaire 0