Discussion de l'article "Opérations trading en MQL5 - Combien facile" - page 4

 
Konstantin Efremov:

UPD : Rashid a posté un fichier de bibliothèque ci-dessus, qui a résolu mon problème. C'est triste que la bibliothèque standard ait une erreur. Je vais maintenant étudier la comparaison pour voir s'il est possible de faire quelques changements directement dans EA sans remplacer la bibliothèque, de sorte que tout fonctionne

Ces modifications sont déjà dans la bibliothèque standard. J'ai décidé de répondre à ceux qui ne liront l'article que maintenant.

 

Bien, une belle en effet...

 
<Deleted>
.
 
Andy Obama:
 

Bonjour à tous !

Je continue à étudier le langage de programmation MQL5. J'ai parcouru la quasi-totalité du site à la recherche d'informations qui me soient utiles. La plupart des informations trouvées sur le site sont destinées à des personnes qui ont déjà des connaissances de base en programmation.

Et voici ! J'ai encore trouvé un excellent article, qui m'a aidé à comprendre beaucoup de choses et à affiner mon EA ! Dommage que l'auteur n'ait pas continué à écrire cette série d'articles et se soit limité à 2012. Mais tout de même, j'exprime un GRAND respect à cet homme et lui dis le même GRAND MERCI au nom de tous les débutants !

Avec tout mon respect, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
Les commentaires qui ne se rapportent pas à ce sujet ont été déplacés dans la rubrique "Messages hors sujet".
 
pdev:

Bonjour, Merci pour cet article très utile et aidez-moi à résoudre ce problème. Je suis nouveau sur MT5 et j'apprends à créer des EAs. J'ai donc copié le code d'exemple pour exécuter Ctrade.Buy mais le backtest a échoué. Voici plus d'informations :


1) Compte : Il s'agit d'un compte réel dont la devise de base est le NZD.

2) Paramètres MetaEditor pour le backtest :


3) Code : Copié depuis https://www.mql5.com/fr/articles/481 :


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Journal d'erreurs (Veuillez noter que je ne teste que sur EUR/USD) :

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Réseau 38520 octets d'informations de compte chargés

JO 0 19:36:44.420 Réseau 1482 octets de paramètres de test chargés

QE 0 19:36:44.420 Réseau 188 octets de paramètres d'entrée chargés

FR 0 19:36:44.421 Réseau 443 octets de liste de symboles chargés

IF 0 19:36:44.421 Fichier expert du testeur ajouté : Experts\demo.ex5. 46684 octets chargés

QH 0 19:36:44.433 Tester dépôt initial 10000.00 NZD, effet de levier 1:100

JN 0 19:36:44.437 Initialisation réussie du testeur

ES 0 19:36:44.437 Réseau 46 Kb de données d'initialisation totales reçues

PP 0 19:36:44.437 Testeur Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Symboles EURUSD : symbole à synchroniser

HR 0 19:36:44.800 Symboles EURUSD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

NJ 0 19:36:44.800 Historique EURUSD : synchronisation de l'historique démarrée

GO 0 19:36:44.856 Historique EURUSD : chargement de 27 octets de données d'historique à synchroniser dans 0:00:00.000

RQ 0 19:36:44.856 Historique EURUSD : synchronisation de l'historique de 2012.01.01 à 2017.11.15

EF 0 19:36:44.993 Historique EURUSD,Daily : le cache de l'historique est alloué pour 1010 barres et contient 312 barres de 2014.01.01 00:00 à 2014.12.31 00:00

ND 0 19:36:44.993 Historique EURUSD,Daily : l'historique commence à partir de 2014.01.01 00:00

OL 0 19:36:44.996 Tester EURUSD,Daily (HalifaxPlus-Live) : chaque tic généré

GN 0 19:36:44.996 Tester EURUSD,Daily : test de Experts\demo.ex5 de 2015.01.01 00:00 à 2017.11.15 00:00 commencé

CK 0 19:36:56.288 Symboles NZDUSD : symbole à synchroniser

IS 0 19:36:56.288 Symboles NZDUSD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

JL 0 19:36:56.288 History NZDUSD : synchronisation de l'historique démarrée

HJ 0 19:36:56.575 Historique NZDUSD : chargement de 14 Kb de données d'historique à synchroniser dans 0:00:00.078

LS 0 19:36:56.575 Historique NZDUSD : synchronisation de l'historique de 2013.01.01 à 2017.11.15

CO 0 19:36:56.579 Symboles EURNZD : symbole à synchroniser

OJ 0 19:36:56.580 Symboles EURNZD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

DL 0 19:36:56.580 Historique EURNZD : synchronisation de l'historique démarrée

MK 0 19:36:56.656 History EURNZD : load 27 bytes of history data to synchronize in 0:00:00.000

OD 0 19:36:56.656 Historique EURNZD : synchronisation de l'historique de 2013.01.01 à 2017.11.15

IN 0 19:36:56.665 Trade 2015.01.02 03:00:00 market buy 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 achat 0,10 EURUSD à 1,20549 effectué(basé sur l'ordre #2)

FH 0 19:36:56.666 Trades 2015.01.02 03:00:00 deal performed [#2 buy 0.10 EURUSD at 1.20549]

OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordre exécuté achat 0.10 à 1.20549 [#2 achat 0.10 EURUSD à 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 La méthode Buy() a été exécutée avec succès. Return code=10009 (fait à 1.20549)

NM 2 19:37:15.823 Historique NZDUSD 2016.09.21 23:01:00 : historique corrompu détecté (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Historique NZDUSD 2016.09.21, mauvais conteneur détecté, doit être resynchronisé

LQ 2 19:37:16.106 Tester l'historique erreur 9 dans une fonction non définie

OH 2 19:37:16.106 Le testeur s'est arrêté à 0% de l'intervalle de test avec l'erreur '20 NZDUSD'.


Merci de me dire ce qui ne va pas et comment résoudre ce problème.

[Supprimé]  
pdev:

Bonjour, Merci pour cet article très utile et aidez-moi à résoudre ce problème. Je suis nouveau sur MT5 et j'apprends à créer des EAs. J'ai donc copié le code d'exemple pour exécuter Ctrade.Buy mais le backtest a échoué. Voici plus d'informations :


1) Compte : Il s'agit d'un compte réel dont la devise de base est le NZD.

2) Paramètres MetaEditor pour le backtest :


3) Code : Copié depuis https://www.mql5.com/fr/articles/481 :


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Journal d'erreurs (Veuillez noter que je ne teste que sur EUR/USD) :

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Réseau 38520 octets d'informations de compte chargés

JO 0 19:36:44.420 Réseau 1482 octets de paramètres de test chargés

QE 0 19:36:44.420 Réseau 188 octets de paramètres d'entrée chargés

FR 0 19:36:44.421 Réseau 443 octets de liste de symboles chargés

IF 0 19:36:44.421 Fichier expert du testeur ajouté : Experts\demo.ex5. 46684 octets chargés

QH 0 19:36:44.433 Tester dépôt initial 10000.00 NZD, effet de levier 1:100

JN 0 19:36:44.437 Initialisation réussie du testeur

ES 0 19:36:44.437 Réseau 46 Kb de données d'initialisation totales reçues

PP 0 19:36:44.437 Testeur Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Symboles EURUSD : symbole à synchroniser

HR 0 19:36:44.800 Symboles EURUSD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

NJ 0 19:36:44.800 Historique EURUSD : synchronisation de l'historique démarrée

GO 0 19:36:44.856 Historique EURUSD : chargement de 27 octets de données d'historique à synchroniser dans 0:00:00.000

RQ 0 19:36:44.856 Historique EURUSD : synchronisation de l'historique de 2012.01.01 à 2017.11.15

EF 0 19:36:44.993 Historique EURUSD,Daily : le cache de l'historique est alloué pour 1010 barres et contient 312 barres de 2014.01.01 00:00 à 2014.12.31 00:00

ND 0 19:36:44.993 Historique EURUSD,Daily : l'historique commence à partir de 2014.01.01 00:00

OL 0 19:36:44.996 Tester EURUSD,Daily (HalifaxPlus-Live) : chaque tic généré

GN 0 19:36:44.996 Tester EURUSD,Daily : test de Experts\demo.ex5 de 2015.01.01 00:00 à 2017.11.15 00:00 commencé

CK 0 19:36:56.288 Symboles NZDUSD : symbole à synchroniser

IS 0 19:36:56.288 Symboles NZDUSD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

JL 0 19:36:56.288 History NZDUSD : synchronisation de l'historique démarrée

HJ 0 19:36:56.575 Historique NZDUSD : chargement de 14 Kb de données d'historique à synchroniser dans 0:00:00.078

LS 0 19:36:56.575 Historique NZDUSD : synchronisation de l'historique de 2013.01.01 à 2017.11.15

CO 0 19:36:56.579 Symboles EURNZD : symbole à synchroniser

OJ 0 19:36:56.580 Symboles EURNZD : symbole synchronisé, 3624 octets d'informations sur le symbole reçus

DL 0 19:36:56.580 Historique EURNZD : synchronisation de l'historique démarrée

MK 0 19:36:56.656 History EURNZD : load 27 bytes of history data to synchronize in 0:00:00.000

OD 0 19:36:56.656 Historique EURNZD : synchronisation de l'historique de 2013.01.01 à 2017.11.15

IN 0 19:36:56.665 Trade 2015.01.02 03:00:00 market buy 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 achat 0,10 EURUSD à 1,20549 effectué(basé sur l'ordre #2)

FH 0 19:36:56.666 Trades 2015.01.02 03:00:00 deal performed [#2 buy 0.10 EURUSD at 1.20549]

OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 ordre exécuté achat 0.10 à 1.20549 [#2 achat 0.10 EURUSD à 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 La méthode Buy() a été exécutée avec succès. Return code=10009 (fait à 1.20549)

NM 2 19:37:15.823 Historique NZDUSD 2016.09.21 23:01:00 : historique corrompu détecté (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 Historique NZDUSD 2016.09.21, mauvais conteneur détecté, doit être resynchronisé

LQ 2 19:37:16.106 Tester l'historique erreur 9 dans une fonction non définie

OH 2 19:37:16.106 Le testeur s'est arrêté à 0% de l'intervalle de test avec l'erreur '20 NZDUSD'.


Merci de me dire ce qui ne va pas et comment résoudre ce problème.

 

Dans l'article sur l'ouverture d'ordres limites et d'ordres stop partout dans le monde.

double price=1000*point;

Je me demande si ceux qui écrivent que l'article les a aidés insèrent le code de l'article ?