Profundidad de Mercado
Además de varios tipos de datos actualizados sobre precios de mercado (Ask/Bid/Last) y los últimos volúmenes negociados que se reciben en el terminal en forma de ticks, MetaTrader 5 admite también Profundidad de Mercado (libro de órdenes), que es un array de registros sobre los volúmenes de órdenes de compra y venta colocadas en torno al precio actual de mercado. Los volúmenes se agregan a varios niveles por encima y por debajo del precio actual, con el menor incremento de movimiento de precios según la especificación del símbolo. Como hemos visto, el tamaño máximo del libro de órdenes (número de niveles de precios) se fija en la propiedad del símbolo SYMBOL_TICKS_BOOKDEPTH.
Los usuarios de terminales conocen la herramienta Profundidad de Mercado de la interfaz y sus principios de funcionamiento. Si necesita más información, consulte la documentación.
El libro de órdenes contiene información ampliada sobre el mercado, lo que suele denominarse «profundidad de mercado», y conocerlo le permite crear sistemas de negociación más sofisticados.
De hecho, la información sobre un tick es sólo una pequeña porción del libro de órdenes. En un sentido algo simplificado, un tick es un libro de órdenes de 2 niveles con un precio Ask más cercano (oferta disponible) y un precio Bid más cercano (demanda disponible). Además, los ticks no proporcionan volúmenes de órdenes a estos precios.
Los cambios en la Profundidad de Mercado pueden producirse con mucha más frecuencia que los ticks, ya que afectan no sólo a la reacción a transacciones concluidas, sino también a los cambios en el volumen de órdenes Limit pendientes en la Profundidad de Mercado.
Normalmente, los proveedores de datos para el libro de órdenes y las cotizaciones (ticks, transacciones) son instancias diferentes, y los eventos de ticks (OnTick en Asesores Expertos u OnCalculate en indicadores) no coinciden con los eventos de Profundidad de Mercado. Ambos hilos llegan de forma asíncrona y en paralelo, pero al final terminan en la cola de eventos de un programa MQL.
Es importante señalar que, por regla general, existe un libro de órdenes para los instrumentos bursátiles, pero hay excepciones tanto en un sentido como en el otro:
- La Profundidad de Mercado puede faltar por una razón u otra para un instrumento bursátil;
- La Profundidad de Mercado puede ser proporcionada por un bróker para un instrumento OTC basándose en la información que ha recopilado sobre las órdenes de sus clientes.
En MQL5, los datos de Profundidad de Mercado están disponibles para los Asesores Expertos y los indicadores. Utilizando funciones especiales (MarketBookAdd, MarketBookRelease), los programas pueden activar o desactivar su suscripción para recibir notificaciones sobre los cambios de Profundidad de Mercado en la plataforma. Para recibir las notificaciones, el programa debe definir la función del manejador de eventos OnBookEvent en su código. Tras recibir una notificación, los datos del libro de órdenes pueden leerse mediante la función MarketBookGet.
El terminal mantiene el historial de cotizaciones y ticks, pero no de los datos de Profundidad de Mercado. En concreto, el usuario o un programa MQL puede descargar el historial en la retrospectiva requerida (si el bróker lo tiene) y probar en él Asesores Expertos e indicadores.
En cambio, la Profundidad de Mercado sólo se emite en línea y no está disponible en el probador. Un bróker no tiene un archivo de datos de Profundidad de Mercado en el servidor. Para emular el comportamiento del libro de órdenes en el probador, debe recopilar el historial de Profundidad de Mercado en línea y luego leerlo desde el programa MQL que se ejecuta en el probador. Puede encontrar productos ya preparados en el Mercado de MQL5.