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");
}
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.
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.
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; } ... ... }
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.
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.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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.