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 Prix avec l'indicateur Moyenne Mobile - expert pour MetaTrader 5

Vues:
725
Note:
(33)
Publié:
2022.01.11 12:45
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 examinerons la stratégie basée sur le croisement des prix avec l'indicateur de moyenne mobile. La stratégie appelée "Signaux basés sur le croisement des prix avec MA" (lors de la création automatique d'un EA dans l'Assistant MQL5).

Les signaux de trading :

  • Achat : croisement à la hausse du prix avec la moyenne mobile.
  • Vente : croisement à la baisse du prix avec la moyenne mobile.
  • Le contrôle d'augmentation/diminution de la MM est utilisé pour filtrer les faux signaux.

Cette stratégie est implémentée dans la classe CSignalMA des classes de stratégie de trading 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 des prix avec la moyenne mobile

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

Signaux de Trading

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

double  MA(int ind)          // renvoie la valeur de la moyenne mobile de la barre
double  Open(int ind)        // renvoie le prix d'ouverture de la barre
double  Close(int ind)       // renvoie le cours de clôture de la barre
double  StateMA(int ind)     // renvoie une valeur positive si la moyenne augmente et négative si elle diminue
double  StateOpen(int ind)   // renvoie la différence entre le cours d'ouverture et la moyenne mobile 
double  StateClose(int ind)  // renvoie la différence entre le cours de clôture et la moyenne mobile
Les valeurs de prix et d'indicateur de la barre 0 (non terminée) peuvent changer, il est donc nécessaire d'effectuer la vérification des conditions de trading à l'aide des données des barres complétées (formées).

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

2. Fermeture d'une position longue

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

  • Open(1)>MA(1) : le prix d'ouverture est supérieur à la moyenne mobile ;
  • Close(1)<MA(1) : le cours de clôture est inférieur à la moyenne mobile ;
  • MA(1)<MA(2) : contrôle la baisse de la moyenne mobile (pour filtrer les faux signaux).
//+-------------------------------------------------------------------+
//| Vérifie les conditions pour fermer la position longue             |
//+-------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& prix)
{
   prix=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. 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 CSignalMA::CheckOpenShort(double& prix,double& sl,double& tp,datetime & expiration)
{
   prix=0.0 ;
   sl   =0.0 ;
   tp   =0.0 ;
//--- le prix a franchi la moyenne mobile à la hausse et la moyenne mobile diminuereturn(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
}


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 CSignalMA::CheckCloseShort(double& prix)
{
   prix=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é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 des prix avec la MM" 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 des prix avec la MM" dans l'Assistant MQL5

Figure 2. Choisissez "Signaux basés sur le croisement des prix avec la MM" 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 personnalisée : 1.1.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 Trailing Stop n'est pas utilisé (Trailing not used).

Croisement avec la Moyenne Mobile

Figure 3. Résultats historiques du backtesting de l'Expert Advisor, sur la base d'un croisement de prix avec la MA

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

Un modèle d'Expert Advisor Un modèle d'Expert Advisor

Ce code est un modèle d'Expert Advisor, écrit par Valery Mazurenko (non utilisé) pour l'ATC-2010.

Ticks Ticks

Exemple de graphique en ticks.

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 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.