- 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
Visión general de las funciones del paquete MetaTrader5 para Python
Las funciones de la API disponibles en Python se pueden dividir condicionalmente en 2 grupos: funciones que tienen análogos completos en la API de MQL5 y funciones disponibles solo en Python. La presencia del segundo grupo se debe en parte al hecho de que la conexión entre Python y MetaTrader 5 debe organizarse técnicamente antes de poder utilizar las funciones de la aplicación. Esto explica la presencia y el propósito de un par de funciones initialize y shutdown: la primera establece una conexión con el terminal, y la segunda la termina.
Es importante que durante el proceso de inicialización se pueda lanzar la copia necesaria del terminal (si aún no se ha ejecutado) y se pueda seleccionar una cuenta de trading específica. Además, es posible cambiar la cuenta de trading en el contexto de una conexión ya abierta con el terminal: esto se hace mediante la función inicio de sesión.
Después de conectarse al terminal, un script de Python puede obtener un resumen de la versión del terminal utilizando la función version. Toda la información sobre el terminal está disponible en terminal_info, que es un análogo completo de tres funciones TerminalInfo, como si estuvieran unidas en una sola llamada.
En la siguiente tabla se enumeran las funciones de aplicación de Python y sus equivalentes en la API de MQL5.
Python |
MQL5 |
---|---|
last_error |
GetLastError (¡Atención! Python tiene sus códigos de error nativos) |
account_info |
AccountInfoInteger, AccountInfoDouble, AccountInfoString |
terminal_info |
TerminalInfoInteger, TerminalInfoDouble, TerminalInfoDouble |
symbols_total |
SymbolsTotal (todos los símbolos, incluidos los personalizados y los desactivados) |
symbols_get |
SymbolsTotal + SymbolInfo (funciones) |
symbol_info |
SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString |
symbol_info_tick |
SymbolInfoTick |
symbol_select |
SymbolSelect |
market_book_add |
MarketBookAdd |
market_book_get |
MarketBookGet |
market_book_release |
MarketBookRelease |
copy_rates_from |
CopyRates (por el número de barras, a partir de la fecha/hora) |
copy_rates_from_pos |
CopyRates (por el número de barras, empezando por el número de barra) |
copy_rates_range |
CopyRates (en el intervalo fecha/hora) |
copy_ticks_from |
CopyTicks (por el número de ticks, a partir de la hora especificada) |
copy_ticks_range |
CopyTicksRange (en el intervalo de tiempo especificado) |
orders_total |
OrdersTotal |
orders_get |
OrdersTotal + OrderGet (funciones) |
order_calc_margin |
OrderCalcMargin |
order_calc_profit |
OrderCalcProfit |
order_check |
OrderCheck |
order_send |
OrderSend |
positions_total |
PositionsTotal |
positions_get |
PositionsTotal + PositionGet (funciones) |
history_orders_total |
HistoryOrdersTotal |
history_orders_get |
HistoryOrdersTotal + HistoryOrderGet (funciones) |
history_deals_total |
HistoryDealsTotal |
history_deals_get |
HistoryDealsTotal + HistoryDealGet (funciones) |
Las funciones de la API de Python tienen varias características.
Como ya se ha indicado, las funciones pueden tener parámetros con nombre: cuando se llama a una función, dichos parámetros se especifican junto con un nombre y un valor, en cada par de nombre y valor se combinan con el signo igual '='. El orden de especificación de los parámetros con nombre no es importante (a diferencia de los parámetros posicionales, que se utilizan en MQL5 y deben seguir el orden estricto especificado por el prototipo de la función).
Las funciones de Python operan sobre tipos de datos nativos de Python. Esto incluye no sólo las cadenas y números habituales, sino también varios tipos compuestos, algo similar a las estructuras y arrays de MQL5.
Por ejemplo, muchas funciones devuelven estructuras de datos especiales de Python: tuple y namedtuple.
Una tupla es una secuencia de elementos de un tipo arbitrario. Puede considerarse como un array, pero a diferencia de ésta, los elementos de una tupla pueden ser de distintos tipos. También puede considerar una tupla como un conjunto de campos de estructura.
Un parecido aún mayor con la estructura puede encontrarse con las tuplas con nombre, en las que a cada elemento se le asigna un ID. Solo se puede utilizar un índice para acceder a un elemento de una tupla común (entre corchetes, como en MQL5, es decir, [i]). No obstante, podemos aplicar el operador de desreferenciación (punto '.') a una tupla con nombre para obtener su «propiedad» igual que en la estructura de MQL5 (tuple.field).
Además, las tuplas y las tuplas con nombre no pueden editarse en código (es decir, son constantes).
Otro tipo popular es un diccionario: un array asociativo que almacena pares de claves y valores, y los tipos de ambos pueden variar. Se accede al valor del diccionario mediante el operador [], y la clave (sea del tipo que sea, por ejemplo, una cadena) se indica entre corchetes, lo que asemeja los diccionarios a los arrays. Un diccionario no puede tener dos pares con la misma clave, es decir, las claves son siempre únicas. En concreto, una tupla con nombre puede convertirse fácilmente en un diccionario con el método namedtuple._asdict().