- 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
Comprobación y envío de una orden de trading
Si es necesario, puede operar directamente desde un script de Python. El par de funciones order_check y order_send permite comprobar previamente y ejecutar a continuación una operación de trading.
Para ambas funciones, el único parámetro es la estructura de solicitud TradeRequest (puede inicializarse como un diccionario en Python, véase un ejemplo). Los campos de estructura son exactamente los mismos que para MqlTradeRequest.
OrderCheckResult order_check(request)
La función order_check comprueba la corrección de los campos de la solicitud de trading y la suficiencia de fondos para completar la operación de trading requerida.
El resultado de la función se devuelve como la estructura OrderCheckResult. Repite la estructura de MqlTradeCheckResult pero contiene además el campo request con una copia de la solicitud original.
La función order_check es un análogo de OrderCheck.
Ejemplo (MQL5/Scripts/MQL5Book/python/ordercheck.py):
import MetaTrader5 as mt5
|
Resultado:
Divisa de la cuenta: USD OrderCheckResult(retcode=0, balance=10000.17, equity=10000.17, profit=0.0, margin=1000.0,... retcode=0 balance=10000.17 equity=10000.17 profit=0.0 margin=1000.0 margin_free=9000.17 margin_level=1000.017 comment=Done request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=1.0, price=144.128,... traderequest: action=1 traderequest: magic=234000 traderequest: order=0 traderequest: symbol=USDJPY traderequest: volume=1.0 traderequest: price=144.128 traderequest: stoplimit=0.0 traderequest: sl=144.028 traderequest: tp=144.228 traderequest: deviation=10 traderequest: type=0 traderequest: type_filling=2 traderequest: type_time=0 traderequest: expiration=0 traderequest: comment=python script traderequest: position=0 traderequest: position_by=0 |
OrderSendResult order_send(request)
La función order_send envía una solicitud desde el terminal al servidor de trading para realizar una operación.
El resultado de la función se devuelve como la estructura OrderSendResult. Repite la estructura de MqlTradeResult pero contiene además el campo request con una copia de la solicitud original.
La función es un análogo de OrderSend.
Ejemplo (MQL5/Scripts/MQL5Book/python/ordersend.py):
import time
|
Resultado:
1. order_send(): by USDJPY 0.1 lots at 144.132 2. order_send done, OrderSendResult(retcode=10009, deal=1445796125, order=1468026008, volume=0.1, price=144.132,... opened position with POSITION_TICKET=1468026008 sleep 2 seconds before closing position #1468026008 3. close position #1468026008: sell USDJPY 0.1 lots at 144.124 4. position #1468026008 closed, OrderSendResult(retcode=10009, deal=1445796155, order=1468026041, volume=0.1, price=144.124,... retcode=10009 deal=1445796155 order=1468026041 volume=0.1 price=144.124 bid=144.124 ask=144.132 comment=Request executed request_id=2 retcode_external=0 request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=144.124, stoplimit=0.0,... traderequest: action=1 traderequest: magic=234000 traderequest: order=0 traderequest: symbol=USDJPY traderequest: volume=0.1 traderequest: price=144.124 traderequest: stoplimit=0.0 traderequest: sl=0.0 traderequest: tp=0.0 traderequest: deviation=20 traderequest: type=1 traderequest: type_filling=2 traderequest: type_time=0 traderequest: expiration=0 traderequest: comment=python script close traderequest: position=1468026008 traderequest: position_by=0 |