Propiedades de gráficos relacionados con eventos

Cuatro tipos de eventos son capaces de generar muchos mensajes y, por tanto, están desactivados por defecto. Para activarlos o desactivarlos más adelante, establezca las propiedades del gráfico adecuadas mediante la función ChartSetInteger. Todas las propiedades son de tipo booleano: true significa activado, y false significa desactivado.

Identificador

Descripción

CHART_EVENT_MOUSE_WHEEL

Envío de mensajes CHARTEVENT_MOUSE_WHEEL sobre eventos de rueda de ratón al gráfico

CHART_EVENT_MOUSE_MOVE

Envío de mensajes CHARTEVENT_MOUSE_MOVE sobre movimientos del ratón al gráfico

CHART_EVENT_OBJECT_CREATE

Envío de mensajes CHARTEVENT_OBJECT_CREATE sobre la creación de objetos gráficos al gráfico

CHART_EVENT_OBJECT_DELETE

Envío de mensajes CHARTEVENT_OBJECT_DELETE sobre la eliminación de objetos gráficos al gráfico

Si cualquier programa MQL cambia una de estas propiedades, afecta a todos los demás programas que se ejecutan en el mismo gráfico y permanece en vigor incluso después de que el programa original termine.

De manera predeterminada, todas las propiedades tienen el valor false.

Vamos a complementar el indicador EventAll.mq5 del apartado anterior con cuatro variables de entrada que permiten habilitar cualquiera de estos tipos de eventos (además del resto que no se pueden deshabilitar). Además, describiremos cuatro variables auxiliares para poder restablecer la configuración del gráfico después de borrar el indicador.

input bool ShowMouseMove = false;
input bool ShowMouseWheel = false;
input bool ShowObjectCreate = false;
input bool ShowObjectDelete = false;
   
bool mouseMovemouseWheelobjectCreate, objectDelete;

Al iniciarse, recuerde los valores actuales de las propiedades y, a continuación, aplique los ajustes seleccionados por el usuario.

void OnInit()
{
   mouseMove = PRTF(ChartGetInteger(0CHART_EVENT_MOUSE_MOVE));
   mouseWheel = PRTF(ChartGetInteger(0CHART_EVENT_MOUSE_WHEEL));
   objectCreate = PRTF(ChartGetInteger(0CHART_EVENT_OBJECT_CREATE));
   objectDelete = PRTF(ChartGetInteger(0CHART_EVENT_OBJECT_DELETE));
   
   ChartSetInteger(0CHART_EVENT_MOUSE_MOVEShowMouseMove);
   ChartSetInteger(0CHART_EVENT_MOUSE_WHEELShowMouseWheel);
   ChartSetInteger(0CHART_EVENT_OBJECT_CREATEShowObjectCreate);
   ChartSetInteger(0CHART_EVENT_OBJECT_DELETEShowObjectDelete);
}

Las propiedades se restauran en el manejador OnDeinit.

void OnDeinit(const int)
{
   ChartSetInteger(0CHART_EVENT_MOUSE_MOVEmouseMove);
   ChartSetInteger(0CHART_EVENT_MOUSE_WHEELmouseWheel);
   ChartSetInteger(0CHART_EVENT_OBJECT_CREATEobjectCreate);
   ChartSetInteger(0CHART_EVENT_OBJECT_DELETEobjectDelete);
}

Ejecute el indicador con los nuevos tipos de eventos activados. Prepárese para recibir muchos mensajes de movimiento del ratón. A continuación se muestra un fragmento del registro:

CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_MOVE 141 81.000000 '2'
CHARTEVENT_MOUSE_MOVE 141 81.000000 '0'
...
CHARTEVENT_OBJECT_CREATE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_MOUSE_MOVE 323 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 322 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 321 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 320 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 318 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 316 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 145.000000 '0'
...
CHARTEVENT_OBJECT_DELETE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_KEYDOWN 46 1.000000 '339

A continuación, en las secciones correspondientes, revelaremos los datos específicos de cada tipo de evento.