- 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
Obtener información sobre instrumentos financieros
El grupo de funciones del paquete MetaTrader5 proporciona información sobre instrumentos financieros.
La función symbol_info devuelve información sobre un instrumento financiero como una estructura de tupla con nombre.
namedtuple symbol_info(symbol)
El nombre del instrumento financiero deseado se especifica en el parámetro symbol.
Una llamada proporciona toda la información que puede obtenerse utilizando tres funciones MQL5 SymbolInfoInteger, SymbolInfoDouble, y SymbolInfoString con todas las propiedades. Los nombres de los campos de la tupla con nombre son los mismos que los nombres de los elementos de enumeración utilizados en las funciones especificadas, pero sin el prefijo «SYMBOL_» y en minúsculas.
En caso de error, la función devuelve None.
¡Atención! Para garantizar el éxito de la ejecución de la función, el símbolo solicitado debe seleccionarse en Observación de Mercado. Esto puede hacerse desde Python llamando a symbol_select (ver más adelante).
Ejemplo (MQL5/Scripts/MQL5Book/Python/eurjpy.py):
import MetaTrader5 as mt5
|
Resultado:
SymbolInfo(custom=False, chart_mode=0, select=True, visible=True, session_deals=0, session_buy_orders=0, session_sell_orders=0, ... EURJPY: spread = 17, digits = 3 Show symbol_info()._asdict(): custom=False chart_mode=0 select=True visible=True ... time=1585069682 digits=3 spread=17 spread_float=True ticks_bookdepth=10 trade_calc_mode=0 trade_mode=4 ... trade_exemode=1 swap_mode=1 swap_rollover3days=3 margin_hedged_use_leg=False expiration_mode=7 filling_mode=1 order_mode=127 order_gtc_mode=0 ... bid=120.024 ask=120.041 last=0.0 ... point=0.001 trade_tick_value=0.8977708350166538 trade_tick_value_profit=0.8977708350166538 trade_tick_value_loss=0.8978272580355541 trade_tick_size=0.001 trade_contract_size=100000.0 ... volume_min=0.01 volume_max=500.0 volume_step=0.01 volume_limit=0.0 swap_long=-0.2 swap_short=-1.2 margin_initial=0.0 margin_maintenance=0.0 margin_hedged=100000.0 ... currency_base=EUR currency_profit=JPY currency_margin=EUR ... |
bool symbol_select(symbol, enable = None)
La función symbol_select añade el símbolo especificado a Observación de Mercado o lo elimina. El símbolo se especifica en el primer parámetro. El segundo parámetro se pasa como True o False, lo que significa mostrar u ocultar el símbolo, respectivamente.
Si se omite el segundo parámetro opcional sin nombre, según las reglas de conversión de tipos de Python, bool(none) es equivalente a False.
La función es un análogo de SymbolSelect.
int symbols_total()
La función symbols_total devuelve el número de todos los instrumentos en el terminal de MetaTrader 5, teniendo en cuenta los símbolos personalizados y los que no se muestran actualmente en la ventana Observación de Mercado. Esto es el análogo de la función SymbolsTotal(false).
A continuación, la función symbols_get devuelve un array de tuplas con información sobre todos los instrumentos o instrumentos favoritos cuyos nombres coinciden con el filtro especificado en el parámetro opcional con nombre group.
tuple[] symbols_get(group = "PATTERN")
Cada elemento de la tupla del array es una tupla con nombre con un conjunto completo de propiedades de símbolo (vimos una tupla similar con anterioridad en el contexto de la descripción de la función symbol_info).
Como sólo hay un parámetro, su nombre puede omitirse al llamar a la función.
En caso de error, la función devolverá un valor especial de None.
El parámetro group permite seleccionar símbolos por su nombre, utilizando opcionalmente el carácter de sustitución (comodín) '*' al principio y/o al final de la cadena buscada. '*' significa 0 o cualquier número de caracteres. Así, puede organizar una búsqueda de una subcadena que aparezca en el nombre con un número arbitrario de otros caracteres antes o después del fragmento especificado. Por ejemplo, «EUR*» significa símbolos que empiezan por «EUR» y tienen cualquier extensión de nombre (o simplemente «EUR»). El filtro «*EUR» devolverá los símbolos cuyos nombres contengan la subcadena «EUR» en cualquier lugar.
Además, el parámetro group puede contener varias condiciones separadas por comas. Cada condición puede especificarse como una máscara utilizando '*'. Para excluir símbolos, puede utilizar el signo lógico de negación '!'. En este caso, todas las condiciones se aplican secuencialmente, es decir, primero hay que especificar las condiciones de inclusión y luego, las de exclusión. Por ejemplo, group= «*, !*EUR*» significa que tenemos que seleccionar primero todos los símbolos y luego excluir los que contengan «EUR» en el nombre (en cualquier lugar).
Por ejemplo, para mostrar información sobre los tipos de cambio entre divisas, excepto para las 4 divisas principales de Forex, puede ejecutar la siguiente consulta:
crosses = mt5.symbols_get(group = "*,!*USD*,!*EUR*,!*JPY*,!*GBP*")
|
He aquí un ejemplo del resultado:
len(*,!*USD*,!*EUR*,!*JPY*,!*GBP*): 10 AUDCAD : SymbolInfo(custom=False, chart_mode=0, select=True, visible=True, session_deals=0, session_buy_orders=0, session... AUDCHF: SymbolInfo(custom=False, chart_mode=0, select=True, visible=True, session_deals=0, session_buy_orders=0, session... AUDNZD : SymbolInfo(custom=False, chart_mode=0, select=True, visible=True, session_deals=0, session_buy_orders=0, session... CADCHF : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... NZDCAD : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... NZDCHF : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... NZDSGD : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... CADMXN : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... CHFMXN : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... NZDMXN : SymbolInfo(custom=False, chart_mode=0, select=False, visible=False, session_deals=0, session_buy_orders=0, sessi... |
La función symbol_info_tick permite obtener el último tick del instrumento financiero especificado.
tuple symbol_info_tick(symbol)
El único parámetro obligatorio especifica el nombre del instrumento financiero.
La información se devuelve como una tupla con los mismos campos que en la estructura MqlTick. La función es un análogo de SymbolInfoTick.
None se devuelve si se produce un error.
Para que la función funcione correctamente, el símbolo debe estar activado en Observación de Mercado. Vamos a demostrarlo en el script MQL5/Scripts/MQL5Book/Python/gbpusdtick.py.
import MetaTrader5 as mt5
|
El resultado debería ser el siguiente:
Tick(time=1585070338, bid=1.17264, ask=1.17279, last=0.0, volume=0, time_msc=1585070338728, flags=2, volume_real=0.0) Show symbol_info_tick._asdict(): time=1585070338 bid=1.17264 ask=1.17279 last=0.0 volume=0 time_msc=1585070338728 flags=2 volume_real=0.0 |