- Instalar Python y el paquete MetaTrader5
- Visión general de las funciones del paquete MetaTrader5 para Python
- Conectar un script Python al terminal y la cuenta
- Comprobación de errores: last_error
- Obtener información sobre una cuenta de trading
- Obtener información sobre el terminal
- Obtener información sobre instrumentos financieros
- Suscripción a los cambios en el libro de órdenes
- Leer cotizaciones
- Leer historial de ticks
- Calcular requisitos de margen y evaluar beneficios
- Comprobación y envío de una orden de trading
- Obtener el número y la lista de órdenes activas
- Obtener el número y la lista de posiciones vacantes
- Leer el historial de órdenes y transacciones
Suscripción a los cambios en el libro de órdenes
La API de Python incluye tres funciones para trabajar con el libro de órdenes.
bool market_book_add(symbol)
La función market_book_add se suscribe para recibir eventos sobre cambios en el libro de órdenes para el símbolo especificado. El nombre del instrumento financiero requerido se indica en un único parámetro sin nombre.
La función devuelve una indicación booleana de éxito.
La función es un análogo de MarketBookAdd. Una vez finalizado el trabajo con el libro de órdenes, la suscripción debe cancelarse llamando a market_book_release (véase más adelante).
tuple[] market_book_get(symbol)
La función market_book_get solicita el contenido actual del libro de órdenes para el símbolo especificado. El resultado se devuelve como una tupla (array) de registros BookInfo. Cada entrada es un análogo de la estructura MqlBookInfo, y desde el punto de vista de Python, se trata de una tupla con nombre con los campos «type», «price», «volume», «volume_real». En caso de error, se devuelve el valor None.
Tenga en cuenta que, por alguna razón, en Python el campo se llama volume_dbl, aunque en MQL5 el campo correspondiente se llama volume_real.
Para trabajar con esta función, primero debe suscribirse para recibir eventos del libro de órdenes mediante la función market_book_add.
La función es un análogo de MarketBookGet. Tenga en cuenta que un script de Python no puede recibir eventos de OnBookEvent directamente y debe sondear el contenido del cristal en un bucle.
bool market_book_release(symbol)
La función market_book_release cancela la suscripción a eventos de cambio de libro de órdenes para el símbolo especificado. Si tiene éxito, la función devuelve True. La función es un análogo de MarketBookRelease.
Tomemos un ejemplo sencillo (véase MQL5/Scripts/MQL5Book/Python/eurusdbook.py).
import MetaTrader5 as mt5
|
He aquí un ejemplo del resultado:
(BookInfo(type=1, price=1.20036, volume=250, volume_dbl=250.0), BookInfo(type=1, price=1.20029, volume=100, volume... {'type': 1, 'price': 1.20036, 'volume': 250, 'volume_dbl': 250.0} {'type': 1, 'price': 1.20029, 'volume': 100, 'volume_dbl': 100.0} {'type': 1, 'price': 1.20028, 'volume': 50, 'volume_dbl': 50.0} {'type': 1, 'price': 1.20026, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20023, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20022, 'volume': 50, 'volume_dbl': 50.0} {'type': 2, 'price': 1.20021, 'volume': 100, 'volume_dbl': 100.0} {'type': 2, 'price': 1.20014, 'volume': 250, 'volume_dbl': 250.0} (BookInfo(type=1, price=1.20035, volume=250, volume_dbl=250.0), BookInfo(type=1, price=1.20029, volume=100, volume... {'type': 1, 'price': 1.20035, 'volume': 250, 'volume_dbl': 250.0} {'type': 1, 'price': 1.20029, 'volume': 100, 'volume_dbl': 100.0} {'type': 1, 'price': 1.20027, 'volume': 50, 'volume_dbl': 50.0} {'type': 1, 'price': 1.20025, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20023, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20022, 'volume': 50, 'volume_dbl': 50.0} {'type': 2, 'price': 1.20021, 'volume': 100, 'volume_dbl': 100.0} {'type': 2, 'price': 1.20014, 'volume': 250, 'volume_dbl': 250.0} (BookInfo(type=1, price=1.20037, volume=250, volume_dbl=250.0), BookInfo(type=1, price=1.20031, volume=100, volume... {'type': 1, 'price': 1.20037, 'volume': 250, 'volume_dbl': 250.0} {'type': 1, 'price': 1.20031, 'volume': 100, 'volume_dbl': 100.0} {'type': 1, 'price': 1.2003, 'volume': 50, 'volume_dbl': 50.0} {'type': 1, 'price': 1.20028, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20025, 'volume': 36, 'volume_dbl': 36.0} {'type': 2, 'price': 1.20023, 'volume': 50, 'volume_dbl': 50.0} {'type': 2, 'price': 1.20022, 'volume': 100, 'volume_dbl': 100.0} {'type': 2, 'price': 1.20016, 'volume': 250, 'volume_dbl': 250.0} ... |