Inicio rápido
De una API key a una orden ejecutada, en unos cinco minutos.
Necesitas una API key (créala en la consola),
un número de cuenta de MT5, su contraseña de trading y el nombre del servidor
exactamente como lo muestra MetaTrader: VantageMarkets-Demo, ICMarkets-Demo.
Usa una cuenta demo la primera vez. Funciona con cualquier broker de MT5; consulta
Compatibilidad con brokers.
La contraseña de inversor no funciona. Puede leer una cuenta pero no puede operar, y el inicio de sesión tiene éxito, así que el fallo llega después, como una orden rechazada.
Configura tu clave
export FXAPIS_KEY="fx_live_7f3a9c21_your-secret-here"
export FXAPIS_API="https://api.fxapis.com"Las claves son credenciales de servidor a servidor. Mantenlas fuera de navegadores, apps y repositorios. Consulta Autenticación.
Conecta la cuenta
# Guarda el id de la nueva cuenta para los siguientes pasos (usa jq; o copia data.id a mano).
export FXAPIS_ACCOUNT=$(curl -sS -X POST "$FXAPIS_API/v1/accounts" \
-H "Authorization: Bearer $FXAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{
"login": "26177561",
"server": "VantageMarkets-Demo",
"password": "your-mt5-trading-password",
"mode": "warm_on_demand",
"label": "Demo — strategy A"
}' | jq -r .data.id)Esto guarda la cuenta y todavía no inicia sesión. La contraseña se cifra con una clave vinculada solo a esta cuenta y ningún endpoint la devuelve jamás.
Ponla en línea
curl -sS -X POST "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/warm" \
-H "Authorization: Bearer $FXAPIS_KEY"
until curl -sS "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/status" \
-H "Authorization: Bearer $FXAPIS_KEY" | grep -q '"ready"'
do sleep 2; donewarm responde 202 de inmediato, mientras la cuenta inicia sesión en el broker.
Su estado pasa por starting, connecting y synchronizing hasta ready, en
unos 10 segundos según nuestra medición. Solo ready acepta órdenes.
Envía una orden
curl -sS -X POST "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/orders/market" \
-H "Authorization: Bearer $FXAPIS_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "symbol": "EURUSD", "side": "buy", "volume": "0.01" }'{
"data": {
"id": "b1c7…9e2a",
"symbol": "EURUSD",
"side": "buy",
"volume": "0.01",
"state": "filled",
"filledPrice": "1.13426",
"brokerOrderId": "2109584418"
}
}Los volúmenes y los precios son strings, nunca floats. Conserva el Idempotency-Key
si reintentas: la misma clave nunca abre una segunda orden. Una orden termina en
filled, rejected, o unknown mientras se concilia con el broker; consulta
Trading.
Ciérrala
# Las posiciones se actualizan solas cada 15 s aproximadamente; reconcile las actualiza ahora.
curl -sS -X POST "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/reconcile" -H "Authorization: Bearer $FXAPIS_KEY"
export POSITION_TICKET=$(curl -sS "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/positions" \
-H "Authorization: Bearer $FXAPIS_KEY" | jq -r '.data[0].brokerPositionId')
curl -sS -X POST "$FXAPIS_API/v1/accounts/$FXAPIS_ACCOUNT/positions/$POSITION_TICKET/close" \
-H "Authorization: Bearer $FXAPIS_KEY" -H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" -d '{}'Una cuenta warm_on_demand se desconecta sola después de un rato tranquilo sin
órdenes; POST /cool la desconecta ahora.
Los stop loss y take profit viven en el broker y siguen funcionando mientras la
cuenta está desconectada.
Si no llega a ready
| Estado | Significado | Qué hacer |
|---|---|---|
invalid_credentials | El broker rechazó el inicio de sesión | Corrige la contraseña y vuelve a conectar. No reintentes: los fallos repetidos son la forma en que un broker bloquea una cuenta. |
needs_2fa | La cuenta requiere un segundo factor | No es compatible sin interfaz. Desactiva la 2FA o usa otra cuenta. |
needs_certificate | El broker requiere un certificado de cliente | Contáctanos. |
trading_disabled | El inicio de sesión funcionó, el trading está desactivado | El broker desactivó el trading para este login. (Una contraseña de inversor, en cambio, llega a ready y sus órdenes se rechazan). Pide al broker que active el trading. |
error | Algo temporal | Se puede reintentar. Vuelve a ponerla en línea. |
Siguientes pasos
- Usa un SDK. Los SDKs oficiales de TypeScript y Python envuelven estas mismas llamadas, con errores tipados y claves de idempotencia incluidas; guías paso a paso para TypeScript y Python (en inglés).
- Ejecuta un ejemplo completo. fxapis-examples tiene este inicio rápido, click-to-trade y un copiador de operaciones en Python, Node/TypeScript y curl, y el starter de Next.js es una pequeña app funcional (cómo ejecutar los ejemplos, cómo está hecho el starter, en inglés).
- Deja de hacer polling. Los webhooks envían un
POSTfirmado a tu servidor cuando una orden se ejecuta, una posición se cierra o una cuenta cambia de estado (en inglés). - Profundiza. Trading cubre todos los resultados que puede tener una orden, y las guías tienen programas completos en siete lenguajes.