Problema função OnTick()

 

Bom dia.


Estou com um problema com a função OnTick do Metatrader 5. Percebi que em alguns momentos do dia o robô deixa de passar pela função OnTick por alguns minutos, essa verificação foi ralizada através de mensagens enviada (Função Print()) pelo robô a cada entrada da função citada, a qual deixa de printar algumas vezes no dia.


Possíveis problemas:

1) O robô poderia não estar recebendo as cotações e por isso não está entrando na função OnTick. Não me parece ser isso, pois o gráfico continua a atualizar a formação do candle e também usei a função TerminalConnected do TerminalInfoInteger para verificar perda de conexão e parece tudo ok, ele retorna "TRUE". Lógico fiz essa verificação através da função OnTimer(), já que a função OnTick() está parada.


2) Pensei ser corretora, servidor, internet o que fosse, troquei tudo mais de uma vez e o problema continua em todos.


3) Pensei ser alguma função, usei modo assíncrono em algumas funções para que não "travasse" o robô. Também foi criado um segundo robô sem função alguma apenas com o seguinte código abaixo, também para de funcionar em alguns momentos:

void OnTick()

{

Print("TICK");

}


Por favor alguém saberia dizer o motivo? Tentei entrar em contato diretamente com o MQL5 e mandaram eu entrar em contato no fórum. Desde já agradeço a atenção de todos.

 
Marcelo Magalhaes:

Bom dia.


Estou com um problema com a função OnTick do Metatrader 5. Percebi que em alguns momentos do dia o robô deixa de passar pela função OnTick por alguns minutos, essa verificação foi ralizada através de mensagens enviada (Função Print()) pelo robô a cada entrada da função citada, a qual deixa de printar algumas vezes no dia.


Possíveis problemas:

1) O robô poderia não estar recebendo as cotações e por isso não está entrando na função OnTick. Não me parece ser isso, pois o gráfico continua a atualizar a formação do candle e também usei a função TerminalConnected do TerminalInfoInteger para verificar perda de conexão e parece tudo ok, ele retorna "TRUE". Lógico fiz essa verificação através da função OnTimer(), já que a função OnTick() está parada.


2) Pensei ser corretora, servidor, internet o que fosse, troquei tudo mais de uma vez e o problema continua em todos.


3) Pensei ser alguma função, usei modo assíncrono em algumas funções para que não "travasse" o robô. Também foi criado um segundo robô sem função alguma apenas com o seguinte código abaixo, também para de funcionar em alguns momentos:

void OnTick()

{

Print("TICK");

}


Por favor alguém saberia dizer o motivo? Tentei entrar em contato diretamente com o MQL5 e mandaram eu entrar em contato no fórum. Desde já agradeço a atenção de todos.

Seja mais técnico.

1- Defina para nós o que significa "... para de funcionar em alguns momentos." Quanto tempo?? 1 segundo? 1 minuto? 1 hora?

2- Qual o ativo?

3- Dia e horário da execução com Falha.

3- Qual o código completo do tal 2o. robô?

 

Respondendo às suas dúvidas:

1- Defina para nós o que significa "... para de funcionar em alguns momentos." Quanto tempo?? 1 segundo? 1 minuto? 1 hora?

Geralmente para entre 1 a 10 minutos.

2- Qual o ativo?

Mini-índice

3- Dia e horário da execução com Falha.

Qualquer dia que coloque ocorre ao menos uma vez ao dia, raramente não ocorre.

3- Qual o código completo do tal 2o. robô?

O código do robô com erro é esse: 

void OnTick()

{

Print("TICK");

}

 
Também estou com este mesmo problema!
 

Bom, só tenho a dizer o seguinte, isso acontece sim e não há o que fazer, o jeito é procurar uma corretora em que isso ocorra com menos frequência.

 
Rogerio Giannetti Torres:

Bom, só tenho a dizer o seguinte, isso acontece sim e não há o que fazer, o jeito é procurar uma corretora em que isso ocorra com menos frequência.

Qual corretora ocorre menos?

 
A situação destes casos são interessantes porque o preço continua sendo atualizado no book, gráfico e todas as telas do meta. Sendo assim, a corretora está mandando informação, porém a função ontick para de atualizar o Bot por alguns minutos. Hoje aconteceu comigo por 6 vezes das 09:04 as 15:30.
 
Andre Tiago Barbosa Medeiros:
A situação destes casos são interessantes porque o preço continua sendo atualizado no book, gráfico e todas as telas do meta. Sendo assim, a corretora está mandando informação, porém a função ontick para de atualizar o Bot por alguns minutos. Hoje aconteceu comigo por 6 vezes das 09:04 as 15:30.

André,

acho muito estranho o gráfico andar ou o MARKET WATCH atualizar e o evento newTick não acontecer,  nas vezes que eu observei o robô em conta REAL ficava tudo parado.

Os meus robôs ficam rodando numa VM e recebo notificações quando  um newTick  atrasa mais que 5 segundos e como disse, quase todos os dias eu recebo uma msg e já teve sim casos de ficar minutos sem receber um newTick  ....

Esse teste é feito de 9:15 - 17:15


void OnTick()
{   
    if(!SymbolInfoTick(_Symbol, mqlTick))
      return;
...
...
...
   if(prefix == "WIN" || prefix == "WDO")
     {
      if(mqlTick.time - lastTime > 5)
        {
         string txt       = " Atenção, houve uma parada de "+ IntegerToString(mqlTick.time-lastTime)+ " segundos para: " + _Symbol;
         Alert(txt);
         SendNotification(txt);
        }
      lastTime = mqlTick.time;
     }
...
...
}
 
Rogerio Giannetti Torres:

André,

acho muito estranho o gráfico andar ou o MARKET WATCH atualizar e o evento newTick não acontecer,  nas vezes que eu observei o robô em conta REAL ficava tudo parado.

Os meus robôs ficam rodando numa VM e recebo notificações quando  um newTick  atrasa mais que 5 segundos e como disse quase, todos os dias eu recebo uma msg e já teve sim casos de ficar minutos sem receber um newTick  ....

Esse teste é feito de 9:15 - 17:15


Fala Rogério, obrigado pelo retorno. Pior que estou acompanhando o log com o gráfico na tela, e o preço se movimenta normalmente, porém o bot não recebe o tick.

 
Existe outra função que consegue atualizar o preço? Meu problema é que estou deixando de entrar em algumas operações por isso.
 

Andre Tiago Barbosa Medeiros:
Existe outra função que consegue atualizar o preço? Meu problema é que estou deixando de entrar em algumas operações por isso.


André,

desconfio que o problema é no seu EA / Indicadores , hoje não houve nenhuma interrupção!

Complementando: Objetos gráficos em excesso também causa "lerdeza" no EA...  Aproveita e limpa todos objetos gráficos dos gráficos do perfil de trabalho.

Razão: