Cuando trabajamos con un Asesor Experto (AE) en nuestra plataforma de MetaTrader, es fundamental saber cuándo comienza una nueva barra. A diferencia de los ticks que llegan constantemente, no existe una función predeterminada para manejar el inicio de una nueva barra (o vela).
Para detectar cuándo se abre una nueva barra, debemos estar atentos al tiempo de apertura de la barra más reciente. Cuando este tiempo cambia, significa que hemos tenido el inicio de una nueva barra y podemos reaccionar a ello. A continuación, te comparto un código de ejemplo que es compatible tanto con MQL4 como con MQL5, que muestra cómo lograr esto:
// Manejador de eventos de tick predeterminado void OnTick() { // Verificamos si hay una nueva barra (compatible con MQL4 y MQL5). static datetime dtBarActual = WRONG_VALUE; datetime dtBarAnterior = dtBarActual; dtBarActual = iTime( _Symbol, _Period, 0 ); bool bNuevoEventoBarra = ( dtBarActual != dtBarAnterior ); // Reaccionamos ante el evento de nueva barra y lo manejamos. if( bNuevoEventoBarra ) { // Detectamos si es el primer tick recibido y lo manejamos. /* Por ejemplo, cuando se adjunta por primera vez a un gráfico y la barra está en medio de su progreso y no es realmente el inicio de una nueva barra. */ if( dtBarAnterior == WRONG_VALUE ) { // Hacemos algo en el primer tick o en medio de la barra ... } else { // Hacemos algo cuando comienza una barra normal ... }; // Hacemos algo independientemente de la condición anterior ... } else { // Hacemos algo más ... }; // Hacemos otras cosas ... };
En el código anterior, la variable estática mantiene un seguimiento del tiempo de apertura de la barra, incluso al regresar de la función OnTick(). A diferencia de una variable local normal, esta memoriza su contenido y no se libera al salir de la función. Esta es la clave para detectar un cambio en el tiempo de apertura de la barra actual.
Es importante mencionar que cuando el AE se coloca por primera vez en un gráfico, el código anterior reacciona como si la barra acabara de abrirse. Esta condición requiere un manejo especial si se necesita tratar la situación de manera diferente.
Recuerda que todo el código fuente de mis publicaciones en CodeBase también está disponible en la pestaña de "Proyectos Públicos" del MetaEditor bajo el nombre "FMIC".
연관 포스트
- Cómo Identificar Símbolos de Opciones Binarias en MetaTrader 4
- Modelo de Trading Basado en Correlación Precio-Tiempo para MetaTrader 4
- Cierra Todas Tus Operaciones de Un Solo Golpe en MetaTrader 4
- Asesor Experto de Estrategia Butterfly: Trading Automático en Múltiples Marcos Temporales
- Cómo leer noticias del Forex Factory en MetaTrader 4 mediante solicitudes web