Auto-aprendizagem da linguagem MQL5 a partir do zero - página 79

 
Valeriy Yastremskiy:

Artem Trishkin respondeu a mesma pergunta para mim, porque é um elo (upperand), por isso ele pode ficar em qualquer lugar. deve tentar sem espaços para a pureza do experimento.

Obrigado, Valery! Com certeza considerarei este ponto se alguma vez me deparar com um problema semelhante.

Feliz Natal!

Atenciosamente, Vladimir.

 

Feliz negociação e bom humor para todos!

Eu continuo estudando a linguagem de programação MQL5. Modifiquei um pouco o código publicado anteriormente e é isto que eu tenho:

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);
  }
//+------------------------------------------------------------------+

Talvez alguém venha a precisar.

Cumprimentos, Vladimir.

 

Bom dia e bom humor para todos!

Eu tenho algum tempo livre e decidi continuar meu auto-estudo. Mas, de repente, deparei-me com um problema. Anteriormente, quando eu fiz um pedido como este ao servidor comercial em meu Expert Advisor Trailing_Stop_(v.2).mq5:

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

não houve problemas durante a compilação do código. Agora o compilador gera o seguinte erro:

não pode converter 0 para enumerar'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Se eu remover um zero após a solicitação entre parênteses curvos,

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

O compilador não mostrará o erro. Por favor, ajude-me, qual é a razão disso?

Cumprimentos, Vladimir.

 
MrBrooklin:

Bom dia e bom humor para todos!

Eu tenho algum tempo livre e decidi continuar meu auto-estudo. Mas, de repente, deparei-me com um problema. Anteriormente, quando eu fiz um pedido como este ao servidor comercial em meu Expert Advisor Trailing_Stop_(v.2).mq5:

não houve problemas durante a compilação do código. Agora o compilador gera o seguinte erro:

não pode converter 0 para enumerar'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Se eu remover um zero após a solicitação entre parênteses curvos,

O compilador não mostrará o erro. Por favor, ajude-me, qual é a razão para isto?

Cumprimentos, Vladimir.

Sim, agora não escreva zero para zerar.

ENUM_TRADE_REQUEST_ACTIONS , uma enumeração que não tem o valor "0".

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


A maneira correta seria:

MqlTradeRequest request={};

 
Vladimir Karputov:

Sim, agora não escreva zero para zerar.

Obrigado, Vladimir!

Você vive e aprende muito tempo! Se os desenvolvedores da MQL5 Reference corrigissem isso em todos os lugares, seria ótimo!

Atenciosamente, Vladimir.

 

Bom dia a todos!

Estou continuando meu auto-estudo da linguagem de programação MQL5. Decidi escrever uma função para obter sinal do indicador ZigZag. Comecei a estudá-lo minuciosamente e ele imediatamente levantou algumas questões. Eu o tenho em seus parâmetros de entrada:

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

Eu não sou fluente em inglês, então tenho que usar o Google Translator. O que é a tradução pura:

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

Perguntas:

  1. Se profundidade, profundidade de quê?
  2. Em caso de desvio, desvio de quê, de qual parâmetro ou valor?
  3. Se um passo para trás, por que um passo para trás? Não está avançando?

Caros especialistas, ajudem-me a entender!

Atenciosamente, Vladimir.

 
MrBrooklin:

Bom dia a todos!

Estou continuando meu auto-estudo da linguagem de programação MQL5. Decidi escrever uma função para obter sinal do indicador ZigZag. Comecei a estudá-lo minuciosamente e ele imediatamente levantou algumas questões. Eu o tenho em seus parâmetros de entrada:

Eu não sou fluente em inglês, então tenho que usar o Google Translator. O que é a tradução pura:

Perguntas:

  1. Se profundidade, profundidade de quê?
  2. Em caso de desvio, desvio de quê, de qual parâmetro ou valor?
  3. Se um passo para trás, por que um passo para trás? Não está avançando?

Caros especialistas, ajudem-me a entender!

Atenciosamente, Vladimir.

Elementar - busca para ajudar, " Não avança " - toda a história se move para trás aqui!!!! :-)

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


A profundidade é o número mínimo de barras sobre as quais não haverá um segundo alto (baixo) menos (mais) por pips de Desvio do que o anterior, ou seja, o ZigZag pode sempre divergir, mas convergir (ou deslocar o todo) mais do que por Desvio, o ZigZag só pode depois das barras de profundidade. O passo atrás é o número mínimo de barras entre os altos (baixos).


Na caixa de busca, digite: por exemplo, parâmetros em ziguezague, 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>

Coisas elementares do PS...

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

Elementar - busca para ajudar, " Não está avançando " - toda a história está retrocedendo aqui!!!! :-)

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


A profundidade é o número mínimo de barras sobre as quais não haverá um segundo máximo (mínimo) menos (mais) do que o anterior por pips de Desvio, ou seja, o ZigZag pode sempre divergir, mas pode convergir (ou deslocar o todo) mais do que por Desvio, o ZigZag só pode depois das barras de Profundidade. O Backstep é o número mínimo de barras entre os altos (baixos).


Na caixa de busca, digite: por exemplo, parâmetros em ziguezague, 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>

Coisas elementares do PS...

Muito obrigado, Roman! Você deu a explicação mais concisa, mas, ao mesmo tempo, compreensível.

Com todo o respeito, Vladimir.

 
MrBrooklin:

Muito obrigado, Roman! Você deu a explicação mais concisa, mas ao mesmo tempo compreensível.

Com todo o respeito, Vladimir.

Obrigado por verificar, estou sendo amigável, sem trapaças! É com um sorriso!
 

Bom dia a todos!

Ao testar um Expert Advisor, eu encontrei um problema. Possui o seguinte código de função de inicialização da EA:

//+------------------------------------------------------------------+
//| 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);
  }

Ao testar a EA, recebo mensagens no log:

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

и т.д.

Descobri que o problema está na verificação das Bandas de Bollinger e das pegas dos indicadores DEMA. Já verifiquei as Bandas de Bollinger e as alças dos indicadores DEMA, então tenho uma pergunta: O que devo mudar no meu código para corrigir esses erros?

Cumprimentos, Vladimir.

Razão: