Eventos de terminal de cliente

Init #

Inmediatamente después de que el terminal de cliente cargue el programa (Asesor Experto o indicador personalizado) y arranque el proceso de inicialización de las variables globales, se enviará el evento Init que se maneja con la función OnInit() (si hay). Este evento también se genera después del cambio del instrumento financiero y/o período del gráfico, después de recompilación del programa en MetaEditor, después del cambio de parámetros de entrada desde la ventana de ajustes de Asesor Experto o indicador personalizado. Un Asesor Experto también se inicializa después del cambio de cuenta. El evento init no se genera para los scripts.

Deinit #

Antes de que las variables globales se deinicialicen y el programa (Asesor Experto o indicador personalizado) se descargue, el terminal de cliente envía el evento Deinit al programa. El evento Deinit también se genera cuando el terminal de cliente finaliza su trabajo, cuando se cierra el gráfico, justo antes del cambio del instrumento financiero y/o período del gráfico, si el programa ha sido recompilado con éxito, con el cambio de parámetros de entrada, y con el cambio de cuenta.

Se puede obtener la razón de deinicialización del parámetro que ha sido pasado a la función OnDeinit(). La ejecución de la función OnDeinit() se limita con dos segundos y medio. Si la función no se ha completado en este este tiempo, su ejecución se termina de una manera forzosa. El evento Deinit no se genera para los scripts.

Start

El evento Start es un evento especial para activar un script o servicio después de cargarlo. Este evento es procesado por la función OnStart. El evento Start no se manda a los Asesores Expertos e indicadores personalizados.

NewTick #

El evento NewTick se genera con la llegada de nuevas cotizaciones y se procesa por la función OnTick() de los Asesores Expertos adjuntos. Si con la llegada de nuevas cotizaciones la función OnTick está en ejecución para las cotizaciones anteriores, en este caso el Asesor Experto ignorará la cotización que ha llegado, porque el evento correspondiente no va a ponerse en la cola de eventos del Asesor Experto.

Todas las cotizaciones que llegan durante la ejecución del programa se ignoran hasta que se finalice la ejecución correspondiente de la función OnTick(). Después de eso, la función se iniciará sólo después de que se reciba una cotización nueva.

El evento OnTick() se genera independientemente de que si el comercio automático está permitido o no (el botón "Permitir/prohibir Auto trading").

Calculate #

El evento Calculate se genera sólo para los indicadores justo después del envío del evento init y con cualquier cambio de datos de precio. Se procesa por la función OnCalculate.

Timer #

El evento Timer se genera periódicamente por el Terminal de Cliente para el Asesor Experto que ha activado el temporizador utilizando la función EventSetTimer. Habitualmente esta función se invoca en la función OnInit. El evento Timer se procesa por la función OnTimer. Una vez terminado el trabajo del Asesor Experto, hay que borrar el temporizador creado utilizando la función EventKillTimer a la que suelen llamar en la función OnDeinit.

Trade #

El evento Trade se genera cuando en el servidor comercial se completa una operación comercial. La función OnTrade() maneja el evento Trade para las siguientes operaciones comerciales:

  • envío, modificación o eliminación de una orden pendiente;
  • cancelación de una orden pendiente por falta de medios o a la expiración del plazo de vigencia;
  • activación de una orden pendiente;
  • apertura, adición o cierre de una posición (o parte de posición);
  • modificación de una posición abierta (cambio de stops).

TradeTransaction #

Como resultado de ejecución de ciertas acciones con la cuenta de trading su estado se cambia. A estas acciones les pertenecen:

  • El envío de una solicitud comercial por parte de cualquier aplicación MQL5 en el terminal de cliente utilizando la función OrderSend y OrderSendAsync, con su posterior ejecución;
  • El envío de una solicitud comercial a través de la interfaz gráfica del terminal y su posterior ejecución;
  • El accionamiento de órdenes pendientes y órdenes Stop en el servidor;
  • La ejecución de operaciones en el servidor de trading.

Como resultado de estas acciones, para la cuenta se ejecutan las transacciones comerciales:

  • tramitación de la solicitud comercial;
  • cambio de órdenes abiertas;
  • cambio del historial de órdenes;
  • cambio del historial de operaciones;
  • cambio de posiciones.

Por ejemplo, al enviar una orden de compra, ésta se tramita, para la cuenta se crea una orden de compra correspondiente, se realiza la ejecución de la orden, su eliminación de la lista de las abiertas, se agrega al historial de órdenes, luego la operación correspondiente se agrega al historial, y se crea una posición nueva. Pues todas estas acciones son transacciones comerciales. La llegada de cada una de estas transacciones al terminal es un evento TradeTransaction. Este evento se procesa con la función OnTradeTransaction.

Tester #

El evento Tester se genera al terminarse el test de un Asesor Experto respecto a los datos históricos. El procesamiento del evento Tester se realiza usando la función OnTester().

TesterInit #

El evento TesterInit se genera cuando se inicia el proceso de optimización en el Probador de Estrategias antes del primer repaso. El procesamiento del evento TesterInit se realiza por la función OnTesterInit().

TesterPass #

El evento TesterPass se genera cuando llega un nuevo frame de datos. El procesamiento del evento TesterPass se realiza por la función OnTesterPass().

TesterDeinit #

El evento TesterDeinit se genera cuando se termina el proceso de optimización del EA en el Probador de Estrategias. El procesamiento del evento TesterDeinit se realiza por la función OnTesterDeinit().

ChartEvent #

Los eventos ChartEvent se generan por el Terminal de Cliente cuando el usuario trabaja con el gráfico:

  • teclazo cuando la ventana del gráfico se encuentra enfocada;
  • creación de objetos gráficos;
  • eliminación de objetos gráficos;
  • clic con ratón en un objeto gráfico que pertenece al gráfico;
  • arrastre de un objeto gráfico con ratón;
  • Fin de edición del texto en LabelEdit.

Además, existe un evento de usuario ChartEvent que puede ser enviado al Asesor Experto por cualquier programa mql5 utilizando la función EventChartCustom. El evento es procesado por la función OnChartEvent.

BookEvent #

El terminal de cliente genera el evento BookEvent si se cambia el estado de profundidad de mercado; este evento se procesa por la función OnBookEvent. Para que el terminal de cliente empiece a generar el evento BookEvent para un símbolo especificado, es suficiente suscribirse previamente a la recepción de estos eventos para este símbolo a través de la función MarketBookAdd.

Para dar de baja la recepción del evento BookEvent para un símbolo, es necesario llamara a la función MarketBookRelease. El evento BookEvent es de difusión, lo que significa que si un Asesor Experto se suscribe a la recepción de este evento a través de la función MarketBookAdd, todos los demás Asesores que tienen el manejador OnBookEvent van a recibir este evento. Por eso hace falta analizar el nombre del símbolo que se pasa en el manejador como un parámetro.

Véase también

Funciones de procesamiento de eventos, Ejecución de programas