Eventos de barras
Los desarrolladores de algoritmos a menudo necesitan referirse a eventos de barras para ejecutar estrategias de operación a tiempo en respuesta a los precios actualizados. La API ofrece los eventos BarOpened y BarClosed para que los creadores de algoritmos ajusten los cBots y aprovechen las oportunidades en diferentes puntos del ciclo de la barra.
Nota
Los eventos de barras solo se pueden manejar al programar cBots. Los indicadores, en cambio, tienen el método Calculate() que se llama en cada tick.
En esta guÃa, explicamos la diferencia entre los métodos OnBar() y OnBarClosed() y proporcionamos varios casos de uso.
¡Eventos de barras en un minuto!
- El método
OnBar()se activa cada vez que se dibuja una nueva barra en el gráfico al que se añade una instancia. Se llama para la barra recién formada. - El manejador de eventos
OnBarClosed()también se activa en cada nueva barra. Sin embargo, se llama para la última barra cerrada (es decir, la anterior a la actual). - Al referirse al evento de barra correcto, aumenta la precisión de su análisis técnico y selecciona el momento apropiado para las acciones del algoritmo.
- Los tipos de gráficos compatibles para
BarOpenedyBarClosedson barras de tiempo, velas, tics, Renko, rangos y gráficos Heikin Ashi.
Usar el método OnBar()
La ocurrencia del evento BarOpened depende del horario del sÃmbolo y la frecuencia de los precios entrantes. Normalmente, los usuarios de la plataforma pueden ajustar la ocurrencia de BarClosed con la configuración del marco temporal del gráfico.
Nota
El método OnBar() puede ser llamado tan frecuentemente como lo permita la configuración del marco temporal del gráfico. Una vez que se cierra una barra, OnBar() no se activará hasta que llegue el siguiente tick, lo que lógicamente desencadena la formación de una nueva barra.
El método OnBar() se invoca simultáneamente con cada nueva barra dibujada en el gráfico al que se adjunta un algoritmo. Como resultado, el manejador OnBar() es el lugar perfecto para definir la lógica de operación personalizada que su cBot debe repetir regularmente.
En el editor de código, puede especificar el manejador OnBar() de la siguiente manera:
override void OnBar()
Usar el método OnBarClosed()
La API de Algo también permite ejecutar lógica para la última barra cerrada, lo cual, dependiendo de la estrategia que desee implementar, puede ser una alternativa más conveniente y precisa que manejar el evento BarOpened. En la apertura de la barra, la nueva barra aparece como una (vela doji) y no contiene datos completos para el análisis técnico.
El evento BarClosed es un alias del evento BarOpened, lo que significa que solo ocurre en caso de que se produzca el evento BarOpened. Por ejemplo, el evento BarClosed para la última barra del viernes ocurrirá con la primera barra abierta del lunes, siempre que el sÃmbolo no se negocie durante el fin de semana.
Nota
El método OnBarClosed() no se llamará hasta que llegue un tick para formar la nueva barra.
El manejador de eventos OnBarClosed() se puede declarar de la siguiente manera:
override void OnBarClosed()
En el cuerpo del método OnBarClosed(), puede determinar qué acciones conectadas realizarán sus cBots cuando se active el evento BarClosed (por ejemplo, ejecutar una orden, delinear un patrón, dibujar visuales de análisis técnico, etc.).
Cuando se accede en este manejador de eventos, la colección Bars no contiene la barra actual en vivo, mientras que otras colecciones (como Positions, Symbols, etc.) contienen datos reales.
Los manejadores de eventos OnBar() y OnBarClosed() funcionan como se espera en backtesting y optimización. Ambos métodos se pueden usar en diferentes tipos de gráficos, incluyendo barras de tiempo, velas, tics, Renko, rangos y gráficos Heikin Ashi.
Crear cBots de ejemplo
El siguiente cBot de ejemplo coloca una orden de mercado cuando se abre cada tercera barra en el gráfico EURCHF.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
Como el cBot se lanzó en un gráfico m1, el intervalo de tiempo aproximado entre las órdenes de mercado ejecutadas es de tres minutos.

A continuación se muestra un ejemplo de cBot con el indicador de Sistema de Movimiento Direccional (DMS) anidado, que imprime (¡Tendencia alcista!) si el valor DI+ (lÃnea verde) excede el valor DI- (lÃnea roja).

Cuando DI- es mayor que DI+, se imprime (¡Tendencia bajista!) en el evento BarClosed.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Resumen
La variedad de eventos de barras existentes en la API de Algo permite a los desarrolladores de algoritmos elegir el momento preciso para los métodos llamados. El método OnBar() puede ser invocado con diferente frecuencia dependiendo del horario del sÃmbolo y la configuración del marco temporal del gráfico, lo que también añade funcionalidad a los cBots. El método OnBarClosed() es un alias conveniente de OnBar() para trabajar con indicadores.