Inicio > Blog > OnTick vs OnTimer en MQL5: cuándo usar cada uno en un EA

MQL5Desarrollo de EAMT5

OnTick vs OnTimer en MQL5: cuándo usar cada uno en un EA

Publicado: 2026-10-29Lectura: aprox. 3 min
⏱ Este artículo refleja la información a la fecha de su publicación. Las cifras de rendimiento de los EAs (PF, DD, rentabilidad anual) cambian con la operativa real y la revalidación: consulta lo más reciente en las páginas de los EAs. Ver los últimos resultados de los EAs →

Conclusión: decidir con la vela nueva y dejar lo horario para OnTimer

Primero la conclusión. Si el EA decide sus operaciones en temporalidades largas como H1 o H4, basta con tomar la decisión solo en el primer tick de la vela nueva. Repetir el mismo cálculo en cada tick solo gasta CPU y no cambia la decisión. En cambio, para lo que debe ejecutarse aunque no lleguen ticks, se usa OnTimer: por ejemplo, volcar el estado el fin de semana u ordenar las órdenes a una hora determinada.

Eso sí, cuál es la opción correcta depende de la estrategia. En este artículo repasamos las diferencias entre ambos mecanismos y los puntos que puede verificar quien elige un EA.

Comparación de brókers recomendados →

🎁 Descargar EA gratis

📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores

Nada más suscribirte recibirás un enlace de descarga a un paquete exclusivo con nuestros 13 indicadores MT5: archivos compilados (.ex5), código fuente y una guía de instalación. Después, 8 correos sobre los fundamentos del trading algorítmico, cómo leer correctamente un backtest y cómo elegir bróker (uno al día durante los primeros 5 días y luego a los 7, 14 y 30 días de la suscripción). También te avisaremos antes de cada subida de precio de las versiones vendidas en MQL5 Market (precio de lanzamiento que sube por tramos según las ventas). En este sitio nuestros EA son gratuitos con una cuenta real en un bróker asociado.

* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.

Cómo funcionan: por ticks y por tiempo

OnTick (por ticks)

OnTick se llama cada vez que llega un precio nuevo (un tick) al símbolo donde corre el EA. En las horas de mucho movimiento puede ejecutarse varias veces por segundo, y durante el fin de semana, con el mercado parado, no se llama ni una vez.

Hay una particularidad que conviene conocer: los ticks que llegan mientras el OnTick anterior aún no ha terminado no se ponen en cola, sino que se descartan. Es decir, un EA con un procesamiento pesado pierde ticks justo durante los movimientos bruscos.

OnTimer (por tiempo)

OnTimer se llama en el intervalo fijado con EventSetTimer(). Como no depende del movimiento del precio, también se ejecuta con el mercado cerrado. Solo hay un temporizador por EA y, si el procesamiento se atasca, los eventos se descartan igual que en OnTick. Además, no hay garantía de que se llame exactamente en el intervalo indicado.

AspectoOnTickOnTimer
Qué lo disparaActualización del precioPaso de un intervalo de tiempo
Con el mercado cerradoNo se llamaSe llama
Número de llamadasMás cuanto más agitado el mercadoPrácticamente constante
Para qué sirveDecisiones de entrada y salidaCálculos periódicos y tareas ligadas a una hora
Precaución principalUn procesamiento pesado pierde ticksSe ejecuta aunque no haya precios nuevos

Cómo escribir estrategias de baja frecuencia sin malgastar CPU

En una estrategia que decide en H4, aunque OnTick se llame miles de veces durante las 4 horas que dura una vela, el valor de la vela cerrada que se usa para decidir no cambia. Por eso nuestra forma habitual de trabajar es dejar pasar el procesamiento pesado solo cuando cambia la vela:

datetime g_lastBar = 0;

void OnTick()
{
   datetime cur = iTime(_Symbol, PERIOD_H4, 0);
   if(cur == g_lastBar) return;   // no hacer nada mientras sea la misma vela
   g_lastBar = cur;
   // aquí se decide usando la vela cerrada (shift 1)
}

También es importante crear los handles de los indicadores una sola vez en OnInit y no recrearlos en cada llamada a OnTick. Si usas OnTimer, detén el temporizador llamando a EventKillTimer() en OnDeinit.

Cuando se instalan EAs en varios gráficos de un VPS, estas diferencias se notan en la carga de CPU. Nuestro enfoque para elegir un VPS está en Información sobre VPS.

Qué puede comprobar quien elige un EA

Aunque no puedas ver el código, sí puedes verificar hasta cierto punto lo siguiente:

  • Descripción y parámetros: si hay opciones del tipo "decidir solo en vela nueva".
  • Uso de CPU del VPS: si al quitar un EA la carga baja claramente, es posible que esté haciendo un procesamiento pesado en cada tick.
  • Registro de expertos: que no aparezcan mensajes idénticos repetidos en cada tick.
  • Resultados del probador: si el EA decide con la apertura de la vela, los resultados con "solo precios de apertura" y con "todos los ticks" no deberían diferir mucho. Si se separan bastante, el EA también reacciona al movimiento dentro de la vela.

Para lo básico sobre cómo instalar y configurar un EA, consulta Cómo configurar un EA.

Límites y advertencias

También conviene mencionar lo que no juega a favor.

  • No se vigila el riesgo dentro de la vela: si limitas las decisiones a la vela nueva, el EA no reacciona a cambios bruscos a mitad de vela. Si el stop loss no se protege con una orden stop adjunta a la posición, se pueden aceptar pérdidas inesperadas.
  • Desfase de la vela nueva: aunque se haya formado una vela nueva, el procesamiento no arranca hasta que llega el primer tick de esa vela. En símbolos u horarios con poco movimiento, la decisión puede retrasarse respecto al inicio de la vela.
  • OnTimer tiende a diferir entre el probador y la operativa real: en el probador el temporizador se llama con una hora virtual, por lo que el intervalo no tiene por qué coincidir con el de una cuenta real.
  • Un procesamiento ligero no mejora los resultados: bajar la carga de CPU no hace que el EA gane más. La calidad de la estrategia es otra cuestión.

En EAs de H4 con pocas operaciones, como ETHEREUM EA, estas diferencias de diseño son aún más difíciles de apreciar. Aun así, lo que se puede comprobar desde fuera tiene un límite. Lo único que podemos afirmar con seguridad es lo que se refiere al código que hemos escrito nosotros.

Resumen

  • OnTick se llama cuando llega un precio; OnTimer, cada cierto intervalo.
  • Los eventos que llegan durante un procesamiento no se encolan, se descartan. Un procesamiento pesado provoca pérdida de eventos.
  • En estrategias de baja frecuencia, decidir solo con la vela nueva evita malgastar CPU.
  • Para lo que debe ejecutarse en horas sin ticks, usa OnTimer.
  • El riesgo dentro de la vela se cubre con órdenes stop. Un procesamiento ligero no mejora los resultados.
  • Más trucos en Conocimientos sobre EA y MT5.

📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores

Nada más suscribirte recibirás un enlace de descarga a un paquete exclusivo con nuestros 13 indicadores MT5: archivos compilados (.ex5), código fuente y una guía de instalación. Después, 8 correos sobre los fundamentos del trading algorítmico, cómo leer correctamente un backtest y cómo elegir bróker (uno al día durante los primeros 5 días y luego a los 7, 14 y 30 días de la suscripción). También te avisaremos antes de cada subida de precio de las versiones vendidas en MQL5 Market (precio de lanzamiento que sube por tramos según las ventas). En este sitio nuestros EA son gratuitos con una cuenta real en un bróker asociado.

* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.

¿Tienes alguna pregunta sobre EAs o Forex?

Puedes publicarla en el foro de trading de Nattzy (registro gratuito). También son bienvenidas preguntas que vayan más allá de este artículo: configuración de EAs, elección de bróker y más.

Preguntar en Nattzy ↗

Comentarios y preguntas