Assistant MQL5 : Création d'Expert Advisors sans programmation
Introduction
Lorsque vous créez des systèmes de trading automatisés, il est nécessaire de rédiger des algorithmes d'analyse de la situation du marché et de génération de signaux de trading, des algorithmes de suivi de vos positions ouvertes, ainsi que des systèmes de gestion de l'argent et de gestion des risques.
Une fois le code des modules rédigé, la tâche la plus difficile est d'assembler toutes les pièces et de déboguer le code source du robot de trading. Ici, le rôle clé est incarné par l'architecture d'interaction des modules : si elle est mal construite, la plupart du temps sera consacrée à la recherche et à la correction des erreurs, et si vous remplacez l'algorithme de n'importe quel module, cela conduira à la réécriture l'intégralité du code source. .
Dans MQL5, l'utilisation de l'approche orientée-objet facilite considérablement l'écriture et le test des systèmes de trading automatisés.
MetaQuotes Software Corp. a élaboré des cours pour implémenter des stratégies de trading. Vous pouvez maintenant générer le code Expert Advisors automatiquement directement dans MetaEditor en sélectionnant les signaux du trading requis (il y en a actuellement 20), suivi (4) et Gestion d’argent (5) modules. En combinant ces modules, vous pouvez obtenir de nombreuses variantes de systèmes de trading prêts à l'emploi.
Vous pouvez également utiliser vos propres classes avec l'implémentation de l'un de ces modules. Créez-les vous-même ou commandez-les via le service Jobs.
Dans cet article, nous examinerons la génération automatique du code source d'Expert Advisor à l'aide de MQL5 Wizard. Et il n'y aura rien à programmer !
1. Création d'un robot de trading à l'aide de l'assistant MQL5
Le code source d'Expert Advisor est généré à l'aide de MQL5 Wizard dans MetaEditor.
Les cours de base des stratégies de trading sont situés dans le dossier '\<client_terminal_directory>\MQL5\Include\Expert\'. Des algorithmes prêts à l'emploi pour les classes de signaux de trading, les classes de positions ouvertes de suivi et les classes d'argent et de gestion des risques se trouvent dans les sous-dossiers Signal, suivi et Argent. L'assistant MQL5 analyse les fichiers de ces dossiers et les utilise pour générer le code d'Expert Advisor.
Pour lancer l'assistant MQL5, vous devez cliquer sur le bouton "Nouveau" de la barre d'outils ou sélectionner "Nouveau" dans le menu "Fichier" (ou simplement appuyer sur Ctrl+N) :
Fig. 1. Lancement de l'assistant MQL5
Sélectionnez ensuite le type de programme que vous souhaitez créer. Dans notre cas, sélectionnez l'option "Expert Advisor (générer)":
Fig. 2. Sélection du type de programme
Étape 1. Propriétés générales de l'Expert Advisor
Ensuite, la boîte de dialogue s'ouvre, dans laquelle vous pouvez définir les propriétés générales d'Expert Advisor :
Fig. 3. Propriétés générales de l'Expert Advisor
Indiquez le nom de votre Expert Advisor, le nom de l'auteur et le lien vers votre site web dans les champs "Nom", "Auteur" et "Lien" (respectivement).
Expert Advisor dispose également des paramètres d'entrée suivants :
- Symbole (le type de chaîne) - Symbole de travail pour Expert Advisor.
- Délai (le type de délai) - Délai de travail pour Expert Advisor.
À l'étape suivante, sélectionnez le type de signaux de trading sur lesquels l'expert tradera.
Étape 2. Sélectionnez le module de Signaux de Trading
L'algorithme d'ouverture et de clôture des positions est déterminé par le module de signaux de trade Les modules de signaux de trade contiennent des règles d'ouverture/clôture/inversion de positions.
La bibliothèque standard comprend des modules de signaux de trade prêts à l'emploi :
- CSignalAC - Le module de signaux basé sur les modèles de marché de l'indicateur Accelerator Oscillator.
- CSignalAMA - Le module de signaux basé sur les modèles de marché de l'indicateur Adaptive Moving Average.
- CSignalAO - Le module de signaux basé sur les modèles de marché de l'indicateur Awesome Oscillator.
- CSignalBearsPower - Le module de signaux basé sur les modèles de marché de l'oscillateur Bears Power.
- CSignalBullsPower - Le module de signaux basé sur les modèles de marché de l'oscillateur Bulls Power.
- CSignalCCI - Le module de signaux basé sur les modèles de marché de l'oscillateur Commodity Channel Index.
- CSignalDeM - Le module de signaux basé sur les modèles de marché de l'oscillateur DeMarker.
- CSignalDEMA - Le module de signaux basé sur les modèles de marché de l'indicateur Double moyenne mobile exponentielle.
- CSignalEnvelopes - Le module de signaux basé sur les modèles de marché de l'indicateurEnvelopes.
- CSignalFrAMA - Le module de signaux basé sur les modèles de marché de l'indicateurFractal Adaptive Moving Average.
- CSignalITF - Le module de filtrage des signaux par le temps.
- CSignalMACD - Le module de signaux basé sur les modèles de marché de l'oscillateur MACD.
- CSignalMA - Le module de signaux basé sur les modèles de marché de l'indicateur Moving Average.
- CSignalSAR - Le module de signaux basé sur les modèles de marché de l'indicateur Parabolic SAR.
- CSignalRSI - Le module de signaux basé sur les modèles de marché de l'oscillateur Relative Strength Index.
- CSignalRVI - Le module de signaux basé sur les modèles de marché de l'oscillateur Relative Vigor Index.
- CSignalStoch - Le module de signaux basé sur les modèles de marché de l'oscillateur Stochastic.
- CSignalTRIX - Le module de signaux basé sur les modèles de marché de l'oscillateur Triple Exponential Average.
- CSignalTEMA - Le module de signaux basé sur les modèles de marché de l'indicateur Triple Exponential Moving Average.
- CSignalWPR - Le module de signaux basé sur les modèles de marché de l'oscillateur Williams Percent Range.
Le type de signaux de trade est sélectionné dans la liste déroulante "Nom".
Après avoir appuyé sur le bouton Suivant, vous verrez une fenêtre :
Fig. 4. Sélection de signaux de trade d'Expert Advisor
Pour ajouter un module de signaux de trade, appuyez sur le bouton "Ajouter".
Ajoutons des signaux de trade, basés sur l'indicateur de moyenne mobile.
Fig. 5. Sélectionnez l'algorithme des signaux de trade
Chaque module de signaux de trade dispose de ses propres paramètres. Vous pouvez utiliser les valeurs par défaut.
Il existe deux modes de création de paramètres. Vous pouvez basculer entre eux en double-cliquant sur le bouton gauche de la souris sur l'icône du paramètre. Si le paramètre a l'icône en surbrillance , il sera alors disponible en tant que variable d'entrée d'Expert Advisor. Ces paramètres peuvent en outre être utilisés pour une optimisation experte dansStrategy Tester.. Si le paramètre a l'icône grise , alors il aura la valeur fixe que vous ne pouvez pas modifier à partir des propriétés d'Expert Advisor.
Le module de signaux de trade apparaîtra dans la liste :
Fig. 6. Le module de signaux de trade a été ajouté
Étape 3. Sélectionnez le module des positions de suivi ouvertes
L'étape suivante consiste à sélectionner le algorithme des positions de suivi ouvertes (Stop Suiveur). L'utilisation du suivi vous permet d'épargner les bénéfices gagnés.
La bibliothèque standard propose plusieurs façons de suivre les positions ouvertes :
- CTrailingNone - Le Stop Suiveur n'est pas utilisé.
- CTrailingFixedPips - Le Stop Suiveur basé sur un niveau d'arrêt fixe.
- CTrailingMA - Le Stop Suiveur basé sur MA.
- CTrailingPSAR - Stop Suiveur basé sur Parabolic SAR.
Dans notre Expert Advisor, sélectionnez "Stop Suiveur basé sur un niveau d'arrêt fixe":
Fig. 7. Sélectionnez l'algorithme des positions ouvertes de suivi
Ce type de suivi a deux paramètres : le StopLevel et le ProfitLevel (en points pour les cotations à 2 et 4 chiffres après la virgule), qui seront utilisés pour suivre les positions ouvertes :
Fig. 9. Définition des paramètres de l'algorithme sélectionné des positions ouvertes suivi
Étape 4. Sélectionnez le module de Gestion de l'Argent et des Risques
À la dernière étape, vous devez sélectionner le système de gestion de l'argent et des risques, qui sera utilisé dans votre Expert Advisor.
Le but de cet algorithme est de déterminer le volume de trading (en lots) pour les opérations de trading, ainsi que la gestion des risques. Lorsque la valeur de la perte dépasse la limite autorisée (par exemple, 10 % des capitaux propres), le module de gestion de l'argent et des risques clôturera de force la position non rentable.
La bibliothèque standard fournit plusieurs implémentations prêtes à l'emploi relatives aux algorithmes de gestion de l'argent et des risques :
- CMoneyFixedLot - Trading avec un volume de trade fixe.
- CMoneyFixedMargin - Trading avec marge fixe.
- CMoneyFixedRisk - Trading avec un risque fixe.
- CMoneyNone - Trading avec un volume de trade minimal autorisé.
- CMoneySizeOptimized - Trading avec un volume de trade optimisé.
Fig. 9. Sélectionnez l'algorithme de gestion de l'argent et des risques
Sélectionnez l'algorithme « Trading avec un volume de trade fixe ».
Le module que nous avons sélectionné a deux paramètres :
- Lots - volume de transactions en lots.
- Pourcentage - pourcentage de risque maximal autorisé.
Fig. 10. Définition des paramètres de l'algorithme sélectionné de gestion de l'argent et des risques
Après avoir cliqué sur "Terminer", le fichier TestExpert.mq5 apparaîtra dans le dossier \teminal_data_filder\MQL5\Experts\. Le nom de fichier correspond au nom indiqué d'Expert Advisor.
2. La structure d'Expert Advisor créée à l'aide de l'assistant MQL5
Le code source d'Expert Advisor, généré par l'assistant MQL5, se présente comme suit :
//+------------------------------------------------------------------+ //| TestExpert.mq5 | //| Copyright 2012, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalMA.mqh> //--- available trailing #include <Expert\Trailing\TrailingFixedPips.mqh> //--- available money management #include <Expert\Money\MoneyFixedLot.mqh> //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="TestExpert"; // Document name ulong Expert_MagicNumber =23689; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points) input int Signal_Expiration =4; // Expiration of pending orders (in bars) input int Signal_MA_PeriodMA =85; // Moving Average(85,0,...) Period of averaging input int Signal_MA_Shift =0; // Moving Average(85,0,...) Time shift input ENUM_MA_METHOD Signal_MA_Method =MODE_SMA; // Moving Average(85,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_MA_Applied =PRICE_CLOSE; // Moving Average(85,0,...) Prices series input double Signal_MA_Weight =1.0; // Moving Average(85,0,...) Weight [0...1.0] //--- inputs for trailing input int Trailing_FixedPips_StopLevel =30; // Stop Loss trailing level (in points) input int Trailing_FixedPips_ProfitLevel=50; // Take Profit trailing level (in points) //--- inputs for money input double Money_FixLot_Percent =10.0; // Percent input double Money_FixLot_Lots =0.1; // Fixed volume //+------------------------------------------------------------------+ //| Global expert object | //+------------------------------------------------------------------+ CExpert ExtExpert; //+------------------------------------------------------------------+ //| Initialization function of the expert | //+------------------------------------------------------------------+ int OnInit() { //--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); } //--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(-2); } //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.StopLevel(Signal_StopLevel); signal.TakeLevel(Signal_TakeLevel); signal.Expiration(Signal_Expiration); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight); //--- Creation of trailing object CTrailingFixedPips *trailing=new CTrailingFixedPips; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(-5); } //--- Set trailing parameters trailing.StopLevel(Trailing_FixedPips_StopLevel); trailing.ProfitLevel(Trailing_FixedPips_ProfitLevel); //--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots); //--- Check all trading objects parameters if(!ExtExpert.ValidationSettings()) { //--- failed ExtExpert.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-9); } //--- ok return(0); } //+------------------------------------------------------------------+ //| Deinitialization function of the expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| "Tick" event handler function | //+------------------------------------------------------------------+ void OnTick() { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| "Trade" event handler function | //+------------------------------------------------------------------+ void OnTrade() { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| "Timer" event handler function | //+------------------------------------------------------------------+ void OnTimer() { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+
Le code de l'Expert Advisor se compose de plusieurs sections.
Section décrivant les propriétés du programme :
#property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00"
Fichiers inclus :
#include <Expert\Expert.mqh> //--- available signals #include <Expert\Signal\SignalMA.mqh> //--- available trailing #include <Expert\Trailing\TrailingFixedPips.mqh> //--- available money management #include <Expert\Money\MoneyFixedLot.mqh>
Le code de la classe CExpert (son instance est utilisée dans Expert Advisor) se trouve dans le fichier Expert.mqh.
Le fichier SignalMA.mqh contient le code source de la classe de signaux de trade sélectionnée - CSignalMA. Le fichier TrailingFixedPips.mqh contient le code source de la classe d'algorithme des positions ouvertes de suivi - CTrailingFixedPips. La gestion de l'argent et des risques sera implémentée par la classe CMoneyFixedLot comprise dans le fichier MoneyFixedLot.mqh.
Viennent ensuite les paramètres d'entrée d'Expert Advisor :
//--- inputs for expert input string Expert_Title ="TestExpert"; // Document name ulong Expert_MagicNumber =23689; // bool Expert_EveryTick =false; // //--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points) input int Signal_Expiration =4; // Expiration of pending orders (in bars) input int Signal_MA_PeriodMA =85; // Moving Average(85,0,...) Period of averaging input int Signal_MA_Shift =0; // Moving Average(85,0,...) Time shift input ENUM_MA_METHOD Signal_MA_Method =MODE_SMA; // Moving Average(85,0,...) Method of averaging input ENUM_APPLIED_PRICE Signal_MA_Applied =PRICE_CLOSE; // Moving Average(85,0,...) Prices series input double Signal_MA_Weight =1.0; // Moving Average(85,0,...) Weight [0...1.0] //--- inputs for trailing input int Trailing_FixedPips_StopLevel =30; // Stop Loss trailing level (in points) input int Trailing_FixedPips_ProfitLevel=50; // Take Profit trailing level (in points) //--- inputs for money input double Money_FixLot_Percent =10.0; // Percent input double Money_FixLot_Lots =0.1; // Fixed volume
Les trois premiers paramètres (Expert_Title, Expert_MagicNumber et Expert_EveryTick) sont généraux. Ils sont toujours présents quels que soient les signaux de trading sélectionnés, les algorithmes de suivi et de gestion de l'argent et des risques.
Le paramètre de chaîne Expert_Title indique le nom de l'Expert Advisor, Expert_MagicNumber indique son ID (cette valeur sera utilisée dans les paramètres des demandes de trade) et le paramètre Expert_EveryTick est utilisé pour définir le mode de fonctionnement d' EA. Si Expert_EveryTick est défini sur vrai, Expert Advisor appellera les fonctions du gestionnaire (vérification des conditions du trade, validation des opérations de trade, position d'ouverture de suivi) chaque fois qu'un nouveau tick arrive pour le symbole de travail.
Après les paramètres généraux d'Expert Advisor viennent les paramètres d'entrée pour l'algorithme de signaux de trade sélectionné (dans notre cas, il s'agit des paramètres utilisés dans la classe CSignalMA).
Nous avons sélectionné la classe CTrailingStopFixedPips de positions ouvertes de suivi. Il suit la position ouverte à une distance fixe déterminée par les niveaux Stop Loss et Take Profit, dont les valeurs sont définies en points "normaux" à 2/4 chiffres. Lorsque le prix se rapproche de la position ouverte par distance, qui dépasse le nombre de points défini par le niveau Trailing_FixedPips_StopLevel, Expert Advisor modifie les valeurs des niveaux Stop Loss et Take Profit (si Trailing_FixedPips_ProfitLevel > 0).
Les paramètres d'entrée Money_FixLot_Percent et Money_FixLot_Lots correspondent aux paramètres de l'algorithme avec un lot de trade fixe, implémenté dans la classe CMoneyFixedLot. Dans notre cas, la trade sera effectué avec un volume fixe égal à la valeur de Money_FixLot_Lots.
La classe CMoneyFixedLot implémente également l'algorithme de gestion des risques : s'il y a une perte (en pourcentage donné des fonds propres actuels) indiquée dans le paramètre Inp_Money_FixLot_Percent, la classe CMoneyFixedLot recommandera à l'Expert Advisor de clôturer de force la position non rentable, et de fait, il sera achevé.
Après les paramètres d'entrée de l'Expert Advisor, l'objet ExtExpert de la classe CExpert est déclaré :
CExpert ExtExpert;
C'est l'instance de la classe de stratégie de trading.
Étant une instance de la classe CExpert, l'objet ExtExpert comporte des références aux objets d’enfants du CExpertSignal (la classe de base des signaux de trade), le CExpertMoney (la classe de base de gestion de l'argent et des risques) et le CExpertTrailing (la classe de base des positions ouvertes de suivi) cours. De plus, la classe CExpert comporte des instances des classes CExpertTrade, SSymbolInfo, CAccountInfo, CPositionInfo, COrderInfo et le conteneur CIndicators.
Pour définir les paramètres d'Expert Advisor, vous devez créer des instances de classes correspondantes et indiquer des références aux objets créés dans la classe ExtExpert.
Examinons la fonction OnInit de l'initialisation d'Expert Advisor. Ici, nous initialisons et configurons les propriétés de la classe ExtExpert.
1. Initialisation de la classe ExtExpert :
//--- Initializing expert if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- failed printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); }
L'objet ExtExpert est initialisé à l'aide de la méthode Init. Ici, nous définissons le symbole, le délai, le drapeau de la méthode appelant à chaque tick, l'ID d'Expert Advisor, et créons et initialisons également des objets privés de classes (à cette étape, les classes CExpertSignal, CExpertMoney et CExpertTrailing sont utilisées comme objets de gestion des signaux, suivi et argent).
Si l'objet ExtExpert ne s'initialise pas correctement, Expert Advisor sera résilié avec le code retour -1.
2. Créez et configurez les propriétés de l'objet Signal
//--- Creating signal CExpertSignal *signal=new CExpertSignal; if(signal==NULL) { //--- failed printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(-2); } //--- ExtExpert.InitSignal(signal); signal.ThresholdOpen(Signal_ThresholdOpen); signal.ThresholdClose(Signal_ThresholdClose); signal.PriceLevel(Signal_PriceLevel); signal.StopLevel(Signal_StopLevel); signal.TakeLevel(Signal_TakeLevel); signal.Expiration(Signal_Expiration); //--- Creating filter CSignalMA CSignalMA *filter0=new CSignalMA; if(filter0==NULL) { //--- failed printf(__FUNCTION__+": error creating filter0"); ExtExpert.Deinit(); return(-3); } signal.AddFilter(filter0); //--- Set filter parameters filter0.PeriodMA(Signal_MA_PeriodMA); filter0.Shift(Signal_MA_Shift); filter0.Method(Signal_MA_Method); filter0.Applied(Signal_MA_Applied); filter0.Weight(Signal_MA_Weight);
La configuration de l'objet signaux de trade consiste en plusieurs étapes :
- Création de l'objet signal et réglage de ses paramètres ;
- Création d'un module de signaux de trade et son ajout à l'instance de classe CExpertSignal.
Si l'objet ExtExpert ne s'initialise pas avec succès, Expert Advisor sera résilié avec un code de retour (de -2 à -3), cela dépend de l'étape à laquelle une erreur s'est produite.
Selon la façon dont les paramètres ont été indiqués dans l'assistant MQL5, le code approprié est généré.
//--- Set signal parameters filter0.PeriodMA(85); //--- Parameter was set as fixed in MQL5 Wizard //--- (gray icon - fixed value equal to 85) filter0.SlowPeriod(Signal_MA_Shift); //--- Parameter was set as input variable //--- (blue icon - input parameter of Expert Advisor)
Si le paramètre est fixé et que sa valeur ne diffère pas de la valeur par défaut, il ne sera pas porté dans le code généré. Dans ce cas, la valeur par défaut du paramètre (indiquée dans la classe correspondante) sera utilisée.
3. Créez et configurez les propriétés de l'objet de suivi
//--- Creation of trailing object CTrailingFixedPips *trailing=new CTrailingFixedPips; if(trailing==NULL) { //--- failed printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(-4); } //--- Add trailing to expert (will be deleted automatically)) if(!ExtExpert.InitTrailing(trailing)) { //--- failed printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(-5); } //--- Set trailing parameters trailing.StopLevel(Trailing_FixedPips_StopLevel); trailing.ProfitLevel(Trailing_FixedPips_ProfitLevel);La configuration de l'objet de suivi consiste également en plusieurs étapes :
- Création de l'objet de suivi ;
- Ajout de suivi à l'expert ;
- Définition des paramètres de suivi.
Si l'objet de suivi ne s'initialise pas avec succès, Expert Advisor sera résilié avec un code de retour (de -4 à -5), qui dépend de l'étape à laquelle une erreur s'est produite.
4. Créez et configurez les propriétés de l'objet argent
//--- Creation of money object CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- failed printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(-6); } //--- Add money to expert (will be deleted automatically)) if(!ExtExpert.InitMoney(money)) { //--- failed printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(-7); } //--- Set money parameters money.Percent(Money_FixLot_Percent); money.Lots(Money_FixLot_Lots);
La configuration de l'objet de gestion de l'argent et des risques consiste également de 4 étapes :
- Création d'objet argent;
- Ajout de l'argent à l'expert ;
- Réglage des paramètres d'argent.
Si l'objet argent ne s'initialise pas avec succès, Expert Advisor sera résilié avec un code de retour (de -6 à -7), cela dépend de l'étape à laquelle une erreur s'est produite.
5. Initialisez tous les indicateurs utilisés dans les classes
//--- Check all trading objects parameters if(!ExtExpert.ValidationSettings()) { //--- failed ExtExpert.Deinit(); return(-8); } //--- Tuning of all necessary indicators if(!ExtExpert.InitIndicators()) { //--- failed printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-9); } //--- ok return(0);
Après avoir créé et initialisé des objets de signaux de trade, de suivi et de gestion de l'argent, la méthode ValidationSettings() d'ExtExpert est appelée. Après cela, la méthode InitIndicators() de l'objet ExtExpert est appelée. Elle initialise les indicateurs utilisés dans les objets signal, suivi et argent.
La gestion des événements OnDeinit, OnTick, OnTrade et OnTimer est effectuée en appelant les méthodes appropriées de la classe ExtExpert.
Si vous souhaitez connaître les détails de l'implémentation des méthodes CExpert, vous pouvez consulter le code source de l'indicateur, situé dans '\<client_terminal_directory>\MQL5\Include\Expert\expert.mqh'.
3. Vérification du conseiller expert créé dans le Testeur de Stratégie MetaTrader 5
Si tous les composants de la Bibliothèque Standard sont présents, le code de l'Expert Advisor généré se compile avec succès :
Figure 10. Compilation réussie du code source d'Expert Advisor créé dans l'assistant MQL5
L'Expert Advisor résultant négociera selon des algorithmes sélectionnés de signaux de trade, de positions ouvertes de suivi et de gestion de l'argent et des risques.
Vous pouvez vérifier le fonctionnement de votre système de trading nouvellement créé à l'aide de Strategy Tester à partir de MetaTrader 5 terminal client . Sur la figure 11, vous pouvez voir les résultats des tests sur les données historiques avec les paramètres par défaut (EURUSD, H1, 2010.01.01-2011.06.01) :
Figure 11. Résultats des tests d’Expert Advisor sur les données historiques (EURUSD, H1)
Le meilleur ensemble de paramètres d'Expert Advisor peut être trouvé après optimization dans MetaTrader 5 Strategy Tester.
Conclusion
L'utilisation des classes de stratégies de trading facilite considérablement la création et le test de vos idées de trading. Désormais, l'intégralité du code source d'Expert Advisor peut être construit directement dans MetaEditor à l'aide de son assistant MQL5 sur la base de modules de bibliothèque standard prêts à l'emploi ou de votre propres modules.
Si vous ne souhaitez pas ou ne pouvez pas rédiger votre propre module de signaux de trading, vous pouvez toujours bénéficier du service Jobs et commander soit un robot de trading complet, soit uniquement les modules requis. Cette approche offre des avantages supplémentaires :
- Le coût de l’élaboration d'un module séparé doit être inférieur au coût de l'ensemble de l'Expert Advisor.
- Le module obtenu peut être réutilisé pour créer à la fois un Expert Advisor autonome et toute une famille de robots de trading (basés sur ce module) à l'aide de l'assistant MQL5.
- Le module commandé doit être strictement conforme aux exigences supplémentaires de l'assistant MQL5, ce qui donne un contrôle supplémentaire sur la qualité du code.
Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/171
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation