Utiliser MQL5 Wizard pour des Signaux de Trading avec Croisements de Moyennes Mobiles

Mike 2011.01.08 00:03 16 0 0
Pièce jointe

MQL5 Wizard permet de générer automatiquement le code des systèmes de trading. Pour plus de détails, consultez Créer des Systèmes de Trading Prêts à l'Emploi avec MQL5 Wizard.

Dans cet article, nous allons examiner une stratégie basée sur les croisements de prix avec l'indicateur de moyenne mobile. Cette stratégie est appelée "Signaux basés sur le croisement de prix avec la MA" lors de la création d'un EA automatiquement dans MQL5 Wizard.

Signaux de Trading :

  • Achat : croisement à la hausse du prix avec la moyenne mobile.
  • Vente : croisement à la baisse du prix avec la moyenne mobile.
  • La vérification de l'augmentation/diminution de la MA est utilisée pour filtrer les faux signaux.

Cette stratégie est implémentée dans la classe CSignalMA de la bibliothèque standard MQL5 (située dans MQL5\Include\Expert\Signal\SignalMA.mqh).

Figure 1. Signaux de trading basés sur le croisement de prix avec la moyenne mobile

Figure 1. Signaux de trading basés sur le croisement de prix avec la moyenne mobile

Signaux de Trading

La stratégie de trading est implémentée dans la classe CSignalMA, qui possède plusieurs méthodes protégées pour simplifier l'accès aux indicateurs et aux valeurs de prix :

double  MA(int ind)          // retourne la valeur de la moyenne mobile de la bougie
double  Open(int ind)        // retourne le prix d'ouverture de la bougie
double  Close(int ind)       // retourne le prix de clôture de la bougie
double  StateMA(int ind)     // retourne une valeur positive si la moyenne augmente et négative si elle diminue
double  StateOpen(int ind)   // retourne la différence entre le prix d'ouverture et la moyenne mobile
double  StateClose(int ind)   // retourne la différence entre le prix de clôture et la moyenne mobile
Les valeurs de prix et d'indicateur de la bougie 0 (non complétée) peuvent changer, il est donc nécessaire de vérifier les conditions de trading en utilisant les données des bougies complètes.

1. Ouvrir une position longue

Conditions pour ouvrir une position longue (croisement de prix avec la MA et vérification de l'augmentation de la MA) :

  • Open(1) < MA(1) : le prix d'ouverture est inférieur à la moyenne mobile ;
  • Close(1) > MA(1) : le prix de clôture est supérieur à la moyenne mobile ;
  • MA(1) > MA(2) : vérification de l'augmentation de la moyenne mobile (pour filtrer les faux signaux).
//+------------------------------------------------------------------+
//| Vérifie les conditions pour ouvrir une position longue (achat)     |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- le prix a croisé à la hausse la MA et la MA augmente
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

2. Fermer une position longue

Conditions pour fermer une position longue (croisement de prix avec la MA et vérification de la diminution de la MA) :

  • Open(1) > MA(1) : le prix d'ouverture est supérieur à la moyenne mobile ;
  • Close(1) < MA(1) : le prix de clôture est inférieur à la moyenne mobile ;
  • MA(1) < MA(2) : vérification de la diminution de la moyenne mobile (pour filtrer les faux signaux).
//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer une position longue              |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- le prix a croisé la moyenne mobile à la baisse et la moyenne mobile diminue
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


3. Ouvrir une position courte

Les conditions pour ouvrir une position courte sont les mêmes que les conditions de fermeture d'une position longue.

//+------------------------------------------------------------------+
//| Vérifie les conditions pour ouvrir une position courte (vente)    |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- le prix a croisé à la hausse la moyenne mobile et la moyenne mobile diminue
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


4. Fermer une position courte

Les conditions pour fermer une position courte sont les mêmes que les conditions d'ouverture d'une position longue.

//+------------------------------------------------------------------+
//| Vérifie les conditions pour fermer une position courte             |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- le prix a croisé la moyenne mobile à la hausse et la moyenne mobile augmente
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

Créer un Expert Advisor avec MQL5 Wizard

Pour créer un robot de trading basé sur cette stratégie, vous devez sélectionner les propriétés de signal comme "Signaux basés sur le croisement de prix avec la MA" dans l'option "Créer des Systèmes de Trading Prêts à l'Emploi" de MQL5 Wizard :

Figure 2. Choisir

Figure 2. Choisir "Signaux basés sur le croisement de prix avec MA" dans MQL5 Wizard

Ensuite, vous devez spécifier le système de trailing stop et le système de gestion des risques nécessaires. Le code de l'Expert Advisor sera généré 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 personnalisée : 01.01.2010-05.01.2011, MA_period=12, MA_Shift=0).

Lors de la création de l'Expert Advisor, nous avons utilisé le volume fixe (Trading Fixed Lot, 0.1), l'algorithme de Trailing Stop n'est pas utilisé (Trailing non utilisé).

Crossover avec Moyenne Mobile

Figure 3. Résultats de backtesting historique de l'Expert Advisor, basé sur le croisement de prix avec la MA

Pièces jointes : Le fichier SignalMA.mqh avec la classe CSignalMA (incluse dans la bibliothèque standard MQL5) est situé dans le dossier MQL5\Include\Expert\Signal. Le fichier crossoverma.mq5 contient le code de l'Expert Advisor créé avec MQL5 Wizard.

Liste
Commentaire 0