Función de gestión de eventos OnChartEvent
Un indicador o Asesor Experto puede recibir eventos interactivos desde el terminal si el código contiene la función OnChartEvent con el siguiente prototipo.
void OnChartEvent(const int event, const long &lparam, const double &dparam, const string &sparam)
Esta función será llamada por el terminal en respuesta a las acciones del usuario o en caso de generar un «evento de usuario» utilizando EventChartCustom.
En el parámetro event, el identificador del evento (su tipo) se pasa como uno de los valores de la enumeración ENUM_CHART_EVENT (véase la tabla).
Identificador |
Descripción |
|---|---|
CHARTEVENT_KEYDOWN |
Acción del teclado |
CHARTEVENT_MOUSE_MOVE |
Mover el ratón y hacer clic en los botones del ratón (si la propiedad CHART_EVENT_MOUSE_MOVE está establecida para el gráfico) |
CHARTEVENT_MOUSE_WHEEL |
Hacer clic o desplazar la rueda del ratón (si la propiedad CHART_EVENT_MOUSE_WHEEL está establecida para el gráfico) |
CHARTEVENT_CLICK |
Clic con el ratón en el gráfico |
CHARTEVENT_OBJECT_CREATE |
Crear un objeto gráfico (si la propiedad CHART_EVENT_OBJECT_CREATE está establecida para el gráfico) |
CHARTEVENT_OBJECT_CHANGE |
Modificar un objeto gráfico a través del cuadro de diálogo de propiedades |
CHARTEVENT_OBJECT_DELETE |
Eliminar un objeto gráfico (si la propiedad CHART_EVENT_OBJECT_DELETE está establecida para el gráfico) |
CHARTEVENT_OBJECT_CLICK |
Clic con el ratón sobre un objeto gráfico |
CHARTEVENT_OBJECT_DRAG |
Arrastrar un objeto gráfico |
CHARTEVENT_OBJECT_ENDEDIT |
Finalizar la edición de texto en el objeto gráfico «campo de entrada» |
CHARTEVENT_CHART_CHANGE |
Modificar las dimensiones o propiedades del gráfico (mediante el cuadro de diálogo de propiedades, la barra de herramientas o el menú contextual) |
CHARTEVENT_CUSTOM |
El número inicial del evento del rango de eventos personalizados |
CHARTEVENT_CUSTOM_LAST |
El número final del evento del rango de eventos personalizados |
Los parámetros lparam, dparam y sparam se utilizan de forma diferente en función del tipo de evento. En general, podemos decir que contienen datos adicionales necesarios para procesar un evento concreto. En las secciones siguientes se ofrece información detallada sobre cada tipo.
¡Atención! La función OnChartEvent sólo se utiliza para los indicadores y Asesores Expertos que se representan directamente en el gráfico. Si cualquier indicador se crea mediante programación utilizando iCustom o IndicatorCreate, los eventos de OnChartEvent no se trasladarán a él.
Además, el manejador OnChartEvent no se llama en el probador, ni siquiera en modo visual.
Para la primera demostración del manejador OnChartEvent, consideremos un indicador sin búfer EventAll.mq5 que intercepta y registra todos los eventos.
void OnChartEvent(const int id,
|
De manera predeterminada, se pueden generar todo tipo de eventos en el gráfico, excepto cuatro eventos masivos que, como se indica en la tabla anterior, están habilitados por las propiedades especiales del gráfico. En la próxima sección complementaremos el indicador con ajustes para incluir determinados tipos según las preferencias.
Ejecute el indicador en un gráfico con objetos existentes o cree objetos mientras se ejecuta el indicador.
Cambie el tamaño o la configuración del gráfico, haga clic con el ratón y edite las propiedades de los objetos. En el registro aparecerán las siguientes entradas:
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
|
Aquí vemos eventos de varios tipos, el significado de sus parámetros quedará claro después de leer las siguientes secciones.