Como funciona a atualização de Ticks() e a do gráfico?

 

Olá pessoal,

Tenho alguns robôs (EAs) no MT5 que "dependem" bastante da atualização recente de preços do ativo.

Uso ao função OnTick() para receber estas atualizações de preço. Mas as vezes noto que algumas atualizações não são recebidas neste evento, porém o gráfico atualiza uma máxima ou mínima de um candle.

Alguém sabe explicar como funciona estas atualizações? São independentes? Como são gerenciados (recebidos) os eventos de atualização dos candles "em real-time"?

Obrigado!

 
Olá André Barbisan:


Leia o parágrafo sobre o evento NewTick.

Documentação sobre MQL5: Programas MQL5 / Eventos do Terminal Cliente
Documentação sobre MQL5: Programas MQL5 / Eventos do Terminal Cliente
  • www.mql5.com
Imediatamente após o terminal cliente carregar um programa (uma Expert Advisor ou um indicador customizado) e começar o processo de inicialização de variáveis globais, o evento Init será enviado, e será processado pelo handler de evento OnInit(), caso exista. Este evento também é gerado após um instrumento financeiro e / ou prazo gráfico ser...
 
André Barbisan:


No texto no comentário anterior está escrito... "No caso de uma nova cotação ser recebida enquanto a função OnTick estiver processando a cotação anterior, a nova cotação será ignorada pelo Expert Advisor, porque o evento correspondente não será enfileirado."... acredito que seja isso.

 
Rogerio Giannetti Torres:

Leia o parágrafo sobre o evento NewTick.

Obrigado Rogério!

Realmente o evento NewTick só processa uma cotação por vez e "descarta" as que chegam neste interim. Ou seja, claramente "perde" cotações.

Ai fica a pergunta: qual a outra forma que seja eficiente de não perder cotações? Me refiro principalmente se esta cotação for mínima ou máximo do candle atual. Usando a função CopyRates()?

Ou seja, o que é mais rápido: a atualização do gráfico (que suponho que possa pegar esta informação via CopyRates()) ou a de algum outro evento?

Obrigado!

 
Daniel Paiva Ribeiro:

No texto no comentário anterior está escrito... "No caso de uma nova cotação ser recebida enquanto a função OnTick estiver processando a cotação anterior, a nova cotação será ignorada pelo Expert Advisor, porque o evento correspondente não será enfileirado."... acredito que seja isso.

Obrigado Daniel!

Veja minha resposta acima para o Rogério. O problema é esse mesmo e conhecido.

A questão é como mitigá-lo? Alguma sugestão?

Abraços.

 
André Barbisan:

Obrigado Daniel!

Veja minha resposta acima para o Rogério. O problema é esse mesmo e conhecido.

A questão é como mitigá-lo? Alguma sugestão?

Abraços.

olá, sugiro a leitura desse artigo https://www.mql5.com/pt/articles/197

Cálculos paralelos no MetaTrader 5
Cálculos paralelos no MetaTrader 5
  • www.mql5.com
Quase todos os PCs modernos são capazes de realizar múltiplas tarefas simultaneamente - devido à presença de diversos núcleos de processador. Seu número está crescendo a cada ano - 2, 3, 4, 6 núcleos... A Intel demonstrou recentemente um processador experimental funcional de 80 núcleos (sim, não é um erro de digitação - infelizmente, este...
 
Francisco Gomes Da Silva:

olá, sugiro a leitura desse artigo https://www.mql5.com/pt/articles/197

Obrigado!

Razão: