Paquete de Python de MetaTrader 5 vs API REST: ¿cuál deberías usar?
El paquete MetaTrader5 necesita Windows y un terminal abierto; una API REST alojada, ninguno. Comparamos instalación, hosting, lenguajes y mantenimiento.
En esta página
Los dos llevan una orden de Python a MetaTrader 5. Se diferencian en dónde corre MetaTrader y, por lo tanto, en dónde puede correr tu código. Usa el paquete oficial para investigar y para operar tu propia cuenta en una PC con Windows. Usa una API REST alojada para todo lo que corra en un servidor, fuera de Windows o en muchas cuentas.
Qué es el paquete oficial
MetaTrader5 en PyPI es el paquete propio de MetaQuotes. Su documentación dice que obtiene los datos «via interprocessor communication directly from the MetaTrader 5 terminal»: es un puente hacia un proceso de terminal en la misma computadora. initialize() se conecta a ese terminal (y lo abre si hace falta), y cada llamada posterior pasa por el terminal.
De ahí salen dos consecuencias: necesitas un terminal abierto junto a tu script, y necesitas Windows, porque los archivos publicados del paquete son compilaciones para Windows.
Lo mismo vale para el asistente de IA y el soporte de MCP que MetaQuotes agregó al terminal de escritorio en la build 6060 (23 de julio de 2026, en inglés): corren dentro del terminal, así que también necesitan un terminal abierto en tu máquina.
Qué es una API REST alojada
Una API alojada corre los terminales de MetaTrader 5 en sus propios servidores y acepta solicitudes HTTPS. Tu script no habla con un terminal; habla con la API, desde cualquier máquina:
import os, uuid, requests
API = "https://api.fxapis.com"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['FXAPIS_KEY']}"
order = s.post(
f"{API}/v1/accounts/{os.environ['ACCOUNT_ID']}/orders/market",
headers={"Idempotency-Key": str(uuid.uuid4())},
json={"symbol": "EURUSD", "side": "buy", "volume": "0.01"},
timeout=90,
).json()["data"]
print(order["state"], order["filledPrice"])
La cuenta se conectó una vez antes con su login, contraseña y servidor. No hay initialize(), ni ruta del terminal, ni Windows.
Lado a lado
| Aspect | Paquete MetaTrader5 | API REST alojada (fxapis) |
|---|---|---|
| Sistema operativo | Windows (o Wine) | Cualquiera |
| Necesita un terminal abierto | Sí, en la misma máquina | No: lo corre el proveedor |
| Lenguajes | Python | Cualquier lenguaje con HTTPS |
| Cuentas a la vez | Una por terminal | Muchas por espacio de trabajo, una solicitud para muchas |
| Dónde corre tu código | Junto al terminal | En cualquier lugar: servidor, contenedor, función |
| Datos de mercado (ticks, barras) | Sí | Barras después de nuestro próximo mantenimiento programado; sin ticks |
| Seguridad al reintentar | La construyes tú | Claves de idempotencia; los resultados inciertos se confirman con el broker |
| Mantenimiento | Terminal, máquina, sesiones | Tu código |
| Costo | Gratis, más la máquina | Un plan mensual |
Cuándo el paquete es la mejor opción
- Estás investigando una estrategia y necesitas las barras y los ticks históricos de MT5.
- Operas tu propia cuenta desde una máquina con Windows que ya mantienes encendida.
- No quieres ningún tercero entre tú y tu broker.
Cuándo una API REST es la mejor opción
- Tu backend corre en Linux, macOS o en contenedores, como la mayoría de los backends.
- Operas las cuentas de otras personas, o muchas cuentas a la vez.
- Quieres resultados que puedas reintentar con seguridad y auditar: cada orden tiene un estado registrado, y una orden con resultado incierto se confirma contra los registros del broker en lugar de adivinarse.
Muchos equipos usan los dos: el paquete, u otra fuente de datos, para investigar; la API para colocar y seguir operaciones en producción.
Próximos pasos
- Usa la API de MT5 en Linux y macOS: los rodeos que usa la gente con el paquete, y una tabla que relaciona cada una de sus llamadas con la API.
- Coloca órdenes de MT5 desde Python: un programa completo con reintentos correctos (en inglés).
- La API de MT5: todo lo que cubre la API (en inglés).