- 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
Leer cotizaciones
La API de Python permite obtener arrays de precios (barras) mediante tres funciones que difieren en la forma de especificar el rango de datos solicitados: por números de barra o por tiempo. Todas las funciones son similares a diferentes formas de CopyRates.
En todas las funciones, los dos primeros parámetros se utilizan para especificar el nombre del símbolo y el marco temporal. Los marcos temporales se recogen en la enumeración TIMEFRAME, que es similar a la enumeración ENUM_TIMEFRAMES de MQL5.
Tenga en cuenta lo siguiente: en Python, los elementos de esta enumeración llevan el prefijo TIMEFRAME_, mientras que los elementos de una enumeración similar en MQL5 llevan el prefijo PERIOD_.
Identificador |
Descripción |
---|---|
TIMEFRAME_M1 |
1 minuto |
TIMEFRAME_M2 |
2 minutos |
TIMEFRAME_M3 |
3 minutos |
TIMEFRAME_M4 |
4 minutos |
TIMEFRAME_M5 |
5 minutos |
TIMEFRAME_M6 |
6 minutos |
TIMEFRAME_M10 |
10 minutos |
TIMEFRAME_M12 |
12 minutos |
TIMEFRAME_M12 |
15 minutos |
TIMEFRAME_M20 |
20 minutos |
TIMEFRAME_M30 |
30 minutos |
TIMEFRAME_H1 |
1 hora |
TIMEFRAME_H2 |
2 horas |
TIMEFRAME_H3 |
3 horas |
TIMEFRAME_H4 |
4 horas |
TIMEFRAME_H6 |
6 horas |
TIMEFRAME_H8 |
8 horas |
TIMEFRAME_H12 |
12 horas |
TIMEFRAME_D1 |
1 día |
TIMEFRAME_W1 |
1 semana |
TIMEFRAME_MN1 |
1 mes |
Las tres funciones devuelven barras como un array de lotes numpy con las columnas con nombre time, open, high, low, close, tick_volume, spread y real_volume. El array numpy.ndarray es un análogo más eficiente de las tuplas con nombre. Para acceder a las columnas, utilice la notación de corchetes, array['column'].
None se devuelve si se produce un error.
Todos los parámetros de la función son obligatorios y no llevan nombre.
numpy.ndarray copy_rates_from(symbol, timeframe, date_from, count)
La función copy_rates_from solicita barras a partir de la fecha especificada (date_from) en el número de barras count. La fecha puede establecerse mediante el objeto datetime, o como el número de segundos transcurridos desde 1970.01.01.
A la hora de crear el objeto datetime, Python utiliza la zona horaria local, mientras que el terminal de MetaTrader 5 almacena las horas de apertura de barras y ticks en UTC (GMT, sin desplazamiento). Por lo tanto, para ejecutar funciones que utilicen hora, es necesario crear variables datetime en UTC. Para configurar las zonas horarias, puede utilizar el paquete pytz. Por ejemplo (véase MQL5/Scripts/MQL5Book/Python/eurusdrates.py):
from datetime import datetime
|
He aquí una muestra de los datos recibidos:
(1641567600, 1.12975, 1.13226, 1.12922, 1.13017, 8325, 0, 0)
|
numpy.ndarray copy_rates_from_pos(symbol, timeframe, start, count)
La función copy_rates_from_pos solicita barras a partir del índice start especificado, en la cantidad de count.
El terminal de MetaTrader 5 representa las barras sólo dentro de los límites del historial disponible para el usuario en los gráficos. El número de barras disponibles para el usuario se fija en los ajustes mediante el parámetro «Máximo de barras en la ventana».
En el siguiente ejemplo (MQL5/Scripts/MQL5Book/Python/ratescorr.py) se muestra una representación gráfica del array de correlaciones de varias divisas basada en cotizaciones.
import MetaTrader5 as mt5
|
El archivo de imagen ratescorr.png se forma en el sandbox de la copia de trabajo actual de MetaTrader 5. La visualización interactiva de una imagen en una ventana independiente mediante una llamada a plt.show() puede no funcionar si su instalación de Python no incluye las características opcionales «tcl/tk e IDLE», o si no añade el paquete pip install.tk.
Array de correlación de divisas
numpy.ndarray copy_rates_range(symbol, timeframe, date_from, date_to)
La función copy_rates_range le permite obtener barras en el rango de fecha y hora especificado, entre date_from y date_to: ambos valores se dan como el número de segundos desde el comienzo de 1970, en la zona horaria UTC (ya que Python utiliza la zona horaria datetime local, debe convertirla utilizando el módulo pytz). El resultado incluye barras con horarios de apertura, time >= date_from y time <= date_to.
En el siguiente script, solicitaremos barras en un rango de tiempo específico.
from datetime import datetime
|
He aquí un ejemplo del resultado:
time open high low close tick_volume spread real_volume 0 2020-01-10 00:00:00 109.513 109.527 109.505 109.521 43 2 0 1 2020-01-10 00:05:00 109.521 109.549 109.518 109.543 215 8 0 2 2020-01-10 00:10:00 109.543 109.543 109.466 109.505 98 10 0 3 2020-01-10 00:15:00 109.504 109.534 109.502 109.517 155 8 0 4 2020-01-10 00:20:00 109.517 109.539 109.513 109.527 71 4 0 5 2020-01-10 00:25:00 109.526 109.537 109.484 109.520 106 9 0 6 2020-01-10 00:30:00 109.520 109.524 109.508 109.510 205 7 0
|