Início > Blog > OnTick e OnTimer no MQL5 | Como usar cada um no EA

MQL5Desenvolvimento de EAMT5

OnTick e OnTimer no MQL5 | Como usar cada um no EA

Publicado: 2026-10-29Leitura: cerca de 3 min
⏱ Este artigo reflete as informações na data de publicação. Os números de desempenho dos EAs (PF, DD, retorno anual) mudam com a operação real e com a revalidação — confira os mais recentes nas páginas dos EAs. Ver os resultados mais recentes dos EAs →

Conclusão: decida pela nova barra e deixe o tempo para o OnTimer

Vou direto à conclusão. Se o EA decide suas operações em timeframes mais longos, como H1 ou H4, basta tomar a decisão de compra e venda apenas no primeiro tick depois que uma nova barra se forma. Repetir o mesmo cálculo a cada tick só consome CPU e não muda a decisão. Já o que precisa rodar mesmo sem a chegada de ticks fica com o OnTimer: gravar o estado no fim de semana, organizar ordens em um horário fixo e tarefas semelhantes.

Dito isso, qual dos dois é o correto depende da estratégia. Neste artigo, organizo a diferença entre os dois mecanismos e os pontos que quem escolhe um EA pode verificar.

Comparação de corretoras recomendadas →

🎁 Baixar EA grátis

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

Logo após a inscrição, você recebe um link para baixar um pacote exclusivo com nossos 13 indicadores MT5: arquivos compilados (.ex5), código-fonte e um guia de instalação. Depois, 8 e-mails sobre os fundamentos do trading automatizado, como ler um backtest corretamente e como escolher a corretora (um por dia nos primeiros 5 dias e depois 7, 14 e 30 dias após a inscrição). Você também é avisado antes de cada aumento de preço das versões vendidas no MQL5 Market (preço de lançamento que sobe em etapas conforme as vendas). Neste site, nossos EAs são gratuitos com uma conta real em uma corretora parceira.

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Como funcionam: acionado por tick e acionado por tempo

OnTick (acionado por tick)

O OnTick é chamado sempre que chega um novo preço (tick) para o símbolo em que o EA está rodando. Em horários de grande volatilidade, pode ser chamado várias vezes por segundo; nos fins de semana, com o mercado parado, não é chamado nenhuma vez.

Há uma regra de funcionamento importante aqui. Os ticks que chegam enquanto o processamento do OnTick anterior ainda não terminou não entram em fila: são ignorados. Ou seja, um EA com um processamento pesado perde ticks justamente durante movimentos bruscos de preço.

OnTimer (acionado por tempo)

O OnTimer é chamado a cada intervalo definido com EventSetTimer(). Como funciona independentemente do movimento de preços, também é chamado enquanto o mercado está fechado. Cada EA tem apenas um timer, e, se o processamento estiver travado, as chamadas também são ignoradas da mesma forma. Além disso, não há garantia de que a chamada ocorra exatamente no intervalo especificado.

ItemOnTickOnTimer
O que dispara a chamadaAtualização de preçoPassagem de um intervalo de tempo
Com o mercado fechadoNão é chamadoÉ chamado
Quantidade de chamadasMaior quanto mais agitado o mercadoPraticamente constante
Indicado paraDecisões de entrada e saídaConsolidações periódicas e tarefas definidas por horário
Principal cuidadoProcessamento pesado faz perder ticksRoda mesmo sem preço novo

Como escrever sem desperdiçar CPU em estratégias de baixa frequência

Em uma estratégia que decide no H4, mesmo que o OnTick seja chamado milhares de vezes durante as 4 horas de uma barra, o valor da barra fechada usado na decisão não muda. Por isso, nossa forma básica é deixar o processamento pesado passar apenas quando a barra muda, assim:

datetime g_lastBar = 0;

void OnTick()
{
   datetime cur = iTime(_Symbol, PERIOD_H4, 0);
   if(cur == g_lastBar) return;   // enquanto for a mesma barra, não faz nada
   g_lastBar = cur;
   // aqui a decisão usa a barra fechada (shift 1)
}

Também é importante criar o handle do indicador uma única vez no OnInit, sem recriá-lo a cada chamada do OnTick. Se usar o OnTimer, chame EventKillTimer() no OnDeinit para parar o timer.

Quando há EAs em vários gráficos em uma VPS, essas diferenças aparecem como carga de CPU. Reunimos nossa visão sobre como escolher uma VPS em Informações sobre VPS.

O que quem escolhe um EA pode verificar

Mesmo sem ver o código por dentro, é possível verificar até certo ponto os seguintes pontos:

  • Descrição e parâmetros: existe uma opção como "decidir apenas na nova barra"?
  • Uso de CPU na VPS: se a carga cai de forma clara ao remover um EA, é possível que ele faça processamento pesado a cada tick
  • Log dos Experts: há mensagens idênticas repetidas a cada tick?
  • Resultados do testador: num EA que decide pela abertura da barra, os resultados em "Somente preços de abertura" e em "Todos os ticks" não deveriam divergir muito. Se divergirem bastante, o EA também reage ao movimento de preço dentro da barra

Para o básico sobre como instalar e configurar um EA, consulte Como configurar o EA.

Limites e ressalvas

Vale também falar dos pontos desfavoráveis.

  • O risco dentro da barra não é monitorado: ao limitar a decisão à nova barra, o EA não reage a mudanças bruscas no meio dela. Se o stop loss não for protegido por uma ordem stop anexada à posição, isso pode permitir perdas inesperadas.
  • Atraso no início da nova barra: mesmo depois que a nova barra se forma, o processamento só roda quando chega o primeiro tick dela. Em símbolos ou horários de pouco movimento, a decisão pode sair depois do início da barra.
  • O OnTimer tende a se comportar de forma diferente no testador e na conta real: no testador, o timer é chamado com um horário virtual, então o intervalo nem sempre é igual ao de uma conta real.
  • Processamento leve não muda o desempenho: reduzir a carga de CPU não torna o EA mais lucrativo. A qualidade da estratégia é outra questão.

Em estratégias com poucas operações, como EAs de H4, por exemplo o ETHEREUM EA, essas diferenças de design são ainda mais difíceis de perceber. Ainda assim, o que se consegue verificar por fora é limitado. Só podemos afirmar com segurança o que diz respeito ao código que nós mesmos escrevemos.

Resumo

  • O OnTick é chamado quando chega um preço; o OnTimer, a cada intervalo de tempo
  • Eventos que chegam durante o processamento não entram em fila: são ignorados. Processamento pesado leva a perda de eventos
  • Em estratégias de baixa frequência, decidir apenas na nova barra evita desperdício de CPU
  • Para o que precisa rodar também em horários sem ticks, use o OnTimer
  • O risco dentro da barra deve ser coberto por uma ordem stop. Um processamento leve não melhora o desempenho
  • Outros conhecimentos estão reunidos em Conhecimento sobre EA e MT5

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

Logo após a inscrição, você recebe um link para baixar um pacote exclusivo com nossos 13 indicadores MT5: arquivos compilados (.ex5), código-fonte e um guia de instalação. Depois, 8 e-mails sobre os fundamentos do trading automatizado, como ler um backtest corretamente e como escolher a corretora (um por dia nos primeiros 5 dias e depois 7, 14 e 30 dias após a inscrição). Você também é avisado antes de cada aumento de preço das versões vendidas no MQL5 Market (preço de lançamento que sobe em etapas conforme as vendas). Neste site, nossos EAs são gratuitos com uma conta real em uma corretora parceira.

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Tem alguma dúvida sobre EAs ou Forex?

Você pode publicá-la no fórum de trading da Nattzy (cadastro gratuito). Dúvidas além deste artigo também são bem-vindas — configuração de EAs, escolha de corretora e mais.

Perguntar na Nattzy ↗

Comentários e perguntas