Docs

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; done

warm 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" }'
201 Created
{
  "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

EstadoSignificadoQué hacer
invalid_credentialsEl broker rechazó el inicio de sesiónCorrige la contraseña y vuelve a conectar. No reintentes: los fallos repetidos son la forma en que un broker bloquea una cuenta.
needs_2faLa cuenta requiere un segundo factorNo es compatible sin interfaz. Desactiva la 2FA o usa otra cuenta.
needs_certificateEl broker requiere un certificado de clienteContáctanos.
trading_disabledEl inicio de sesión funcionó, el trading está desactivadoEl 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.
errorAlgo temporalSe puede reintentar. Vuelve a ponerla en línea.

Siguientes pasos

En esta página