Auto-apprentissage du langage MQL5 à partir de zéro - page 79

 
Valeriy Yastremskiy:

Artem Trishkin m'a répondu à la même question, car c'est un lien (uppersand), donc il peut se placer n'importe où. Il faudrait essayer sans espaces pour la pureté de l'expérience.

Merci, Valery ! Je tiendrai compte de ce point si je rencontre un jour un problème similaire.

Joyeux Noël !

Sincèrement, Vladimir.

 

Bon trading et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai modifié un peu le code publié précédemment et voici ce que j'ai obtenu :

input string Symbol_Main="EURUSD";          //Валютная пара, на которую ставим советник
input ENUM_TIMEFRAMES Time_Frame=PERIOD_H1; //Таймфрейм, на который ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары и таймфрейм, на который будем устанавливать советник. */
   /* Если текущий график валютной пары и текущий таймфрейм совпадают со входными параметрами */
   if(_Symbol==Symbol_Main && _Period==Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника разрешена! Продолжим!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   /* Если текущий график валютной пары и текущий таймфрейм не совпадают со входными параметрами */
   if(_Symbol!=Symbol_Main && _Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадают валютная пара и таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий график валютной пары не совпадает со входным параметром */
   if(_Symbol!=Symbol_Main)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадает валютная пара! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий таймфрейм не совпадает со входным параметром */
   if(_Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадет таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Peut-être que quelqu'un en aura besoin.

Salutations, Vladimir.

 

Bonne journée et bonne humeur à tous !

J'ai un peu de temps libre et j'ai décidé de poursuivre mon auto-apprentissage. Mais tout à coup, j'ai rencontré un problème. Auparavant, lorsque j'ai fait une demande comme celle-ci au serveur de commerce dans mon conseiller expert Trailing_Stop_(v.2).mq5 :

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {0};
   MqlTradeResult result= {0};

il n'y a eu aucun problème lors de la compilation du code. Maintenant, le compilateur génère l'erreur suivante :

Impossible de convertir 0 enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Si j'enlève un zéro après la demande entre crochets,

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {};
   MqlTradeResult result= {0};

Je ne reçois pas d'erreur alors. S'il vous plaît, aidez-moi, quelle est la raison de ceci ?

Salutations, Vladimir.

 
MrBrooklin:

Bonne journée et bonne humeur à tous !

J'ai un peu de temps libre et j'ai décidé de poursuivre mon auto-apprentissage. Mais tout à coup, j'ai rencontré un problème. Auparavant, lorsque j'ai fait une demande comme celle-ci au serveur de commerce dans mon conseiller expert Trailing_Stop_(v.2).mq5 :

il n'y a eu aucun problème lors de la compilation du code. Maintenant, le compilateur génère l'erreur suivante :

Impossible de convertir 0 enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Si j'enlève un zéro après la demande entre crochets,

Je ne reçois pas d'erreur alors. S'il vous plaît, aidez-moi, quelle est la raison de ceci ?

Salutations, Vladimir.

Oui, maintenant n'écrivez pas zéro pour la mise à zéro.

ENUM_TRADE_REQUEST_ACTIONS , une énumération qui n'a pas la valeur "0".

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


La manière correcte serait :

MqlTradeRequest request={};

 
Vladimir Karputov:

Oui, maintenant n'écrivez pas zéro pour la mise à zéro.

Merci, Vladimir !

On vit et on apprend longtemps ! Si les développeurs de la Référence MQL5 corrigeaient cela partout, ce serait formidable !

Sincèrement, Vladimir.

 

Bonjour à tous !

Je poursuis mon auto-apprentissage du langage de programmation MQL5. J'ai décidé d'écrire une fonction pour obtenir le signal de l'indicateur ZigZag. J'ai commencé à l'étudier en profondeur et cela a immédiatement soulevé quelques questions. Je l'ai dans ses paramètres d'entrée:

input int Depth      = 12;  // Depth
input int Deviation  = 5;   // Deviation
input int Backstep   = 3;   // Backstep

Je ne parle pas couramment l'anglais, je dois donc utiliser Google Translator. Quelle est la traduction pure :

Depth - глубина
Deviation - отклонение
Backstep - шаг назад

Questions :

  1. Si profondeur, profondeur de quoi ?
  2. Si écart, écart par rapport à quoi, par rapport à quel paramètre ou valeur ?
  3. Si c'est un pas en arrière, pourquoi un pas en arrière ? N'avance-t-elle pas ?

Chers experts, aidez-moi à comprendre !

Sincèrement, Vladimir.

 
MrBrooklin:

Bonjour à tous !

Je poursuis mon auto-apprentissage du langage de programmation MQL5. J'ai décidé d'écrire une fonction pour obtenir le signal de l'indicateur ZigZag. J'ai commencé à l'étudier en profondeur et cela a immédiatement soulevé quelques questions. Je l'ai dans ses paramètres d'entrée:

Je ne parle pas couramment l'anglais, je dois donc utiliser Google Translator. Quelle est la traduction pure :

Questions :

  1. Si profondeur, profondeur de quoi ?
  2. Si écart, écart par rapport à quoi, par rapport à quel paramètre ou valeur ?
  3. Si c'est un pas en arrière, pourquoi un pas en arrière ? N'avance-t-elle pas ?

Chers experts, aidez-moi à comprendre !

Sincèrement, Vladimir.

Elémentaire - recherche d'aide, " Doesn't it move forward " - toute l'histoire recule ici !!!! :-)

https://www.mql5.com/ru/code/7796


La profondeur est le nombre minimum de barres sur lesquelles il n'y aura pas un deuxième haut (bas) moins (plus) de pips de déviation que le précédent, c'est-à-dire que le ZigZag peut toujours diverger, mais converger (ou décaler l'ensemble) plus que de déviation, le ZigZag ne peut qu'après les barres de profondeur. Le Backstep est le nombre minimum de barres entre les hauts (bas).


Dans le champ de recherche, tapez : par exemple, paramètres zigzag, https://www.mql5.com/ru/search# !keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS choses élémentaires...

ZigZag
ZigZag
  • www.mql5.com
ZigZag отслеживает и соединяет между собой крайние точки графика отстоящие друг от друга не менее чем на заданный процент по шкале цены.
 
Roman Shiredchenko:

Élémentaire - la recherche est une aide, " N'est-ce pas aller de l'avant " - toute l'histoire va à reculons ici !!!! :-)

https://www.mql5.com/ru/code/7796


La profondeur est le nombre minimum de barres sur lesquelles il n'y aura pas de deuxième maximum (minimum) inférieur (supérieur) au précédent par pips d'écart, c'est-à-dire que le ZigZag peut toujours diverger, mais il peut converger (ou déplacer l'ensemble) plus que par écart, le ZigZag ne peut qu'après des barres de profondeur. Le Backstep est le nombre minimum de barres entre les hauts (bas).


Dans le champ de recherche, tapez : par exemple, paramètres zigzag, https://www.mql5.com/ru/search# !keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS choses élémentaires...

Merci beaucoup, Roman ! Vous avez donné l'explication la plus concise, mais en même temps la plus compréhensible.

Respectueusement, Vladimir.

 
MrBrooklin:

Merci beaucoup, Roman ! Vous avez donné l'explication la plus concise, mais en même temps la plus compréhensible.

Respectueusement, Vladimir.

Merci d'y jeter un coup d'œil, je suis amical, pas de coup bas ! C'est avec le sourire !
 

Bonjour à tous !

En testant un conseiller expert, j'ai rencontré un problème. Le code de la fonction d'initialisation de l'EA est le suivant :

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
//--- получить хэндл индикатора Bollinger Bands и DEMA
   BolBandsHandle=iBands(NULL,PERIOD_M30,bands_period,bands_shift,deviation,PRICE_CLOSE);
   demaHandle=iDEMA(NULL,PERIOD_D1,dema_period,0,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if((BolBandsHandle<0) || (demaHandle<0))
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }

   return(0);
  }

En testant l'EA, je reçois des messages dans le journal :

2021.10.31 13:19:25.752 Core 2  genetic pass (0, 288) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.835 Core 2  genetic pass (0, 298) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.921 Core 1  genetic pass (0, 42) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.847 Core 2  genetic pass (0, 318) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.848 Core 2  genetic pass (0, 326) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 359) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 371) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 102) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 105) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:31.044 Core 1  genetic pass (0, 122) tested with error "OnInit returned non-zero code -1" in 0:00:00.000

и т.д.

J'ai découvert que le problème réside dans la vérification des poignées des indicateurs Bollinger Bands et DEMA. J'ai déjà vérifié les poignées des indicateurs Bollinger Bands et DEMA. J'ai donc une question : que dois-je changer dans mon code pour corriger ces erreurs ?

Salutations, Vladimir.