Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 266
- Ranking:
- Publicado:
- 2025.04.03 11:16
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Para un Asesor Experto (EA), cuando una nueva cotización ("tick") es recibida por MetaTrader, la función estándar de manejo de eventos OnTick() es llamada por el terminal. Sin embargo, no existe una función estándar de gestión de eventos para cuando se inicia una nueva barra (vela).
Para detectar esto, es necesario controlar la hora de apertura de la barra más reciente. Cuando cambia, significa el comienzo de una nueva barra, y usted puede reaccionar a la situación y manejar el evento. El siguiente ejemplo de código, compatible con MQL4 y MQL5, demuestra uno de los métodos de cómo se puede lograr esto:
// Controlador estándar de eventos de tick void OnTick() { // Comprobar si hay una nueva barra (compatible con MQL4 y MQL5). static datetime dtBarraCorrente = WRONG_VALUE; datetime dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente = iTime( _Symbol, _Period, 0 ); bool bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // Reacciona ante el evento de una nueva barra y trata la situación. if( bEventoBarraNova ) { // Detecta si este es el primer tick recibido y trata la situación. /* Por ejemplo, cuando se aplica por primera vez al gráfico y la barra está en algún punto intermedio de su progreso y no es realmente el comienzo de una nueva barra. */ if( dtBarraPrecedente == WRONG_VALUE ) { // Hacer algo en el primer tick o en medio de una barra ... } else { // Hacer algo cuando aparece una barra normal ... }; // Hacer algo independiente de la condición anterior ... } else { // Hacer otra cosa ... }; // Hacer otras cosas ... };
En el código anterior, la variable estática mantiene un registro del tiempo de apertura de la barra, incluso cuando regresa de la función OnTick(). A diferencia de una variable local normal, memoriza el contenido de sus datos y no los libera al salir de la función. Esta es la clave para detectar un cambio en el tiempo de apertura de la barra actual.
También es importante tener en cuenta que cuando el EA se coloca en un gráfico por primera vez, el código anterior reacciona como si la barra acabara de abrirse. Esta condición requiere un tratamiento especial si la situación necesita ser manejada de manera diferente.
Tenga en cuenta que el código fuente de todas mis publicaciones CodeBase ahora también está disponible a través de "Proyectos Públicos" de MetaEditor bajo el nombre de "FMIC".
Traducción del portugués hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/pt/code/41601

Calendario: análisis fundamental histórico y en tiempo real.

Datos de una sola pasada del probador.

Múltiples ejecuciones/optimizaciones en Tester.

Esta biblioteca permite crear visualizaciones para enviar fácilmente información de texto al gráfico a la velocidad más óptima.