> ## Documentation Index
> Fetch the complete documentation index at: https://api-trading-docs.vexprofx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abrir una operación a mercado

> Compra o vende con precio y decimales obtenidos por el backend.

`POST /api/v1/orders/market` requiere permiso de trading, cuenta verificada y
`Idempotency-Key`. Envía `side: "buy"` o `side: "sell"`.

## Solicitud recomendada

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{"login":104205,"symbol":"EURUSD","volume":100,"side":"buy","comment":"REST API"}
```

`volume` sigue en unidades MT5: **100 = 0.01 lotes**, 1000 = 0.10 lotes y
10000 = 1 lote. No envíes `0.01` en `volume`. No hay conversión desde lotes
ni un campo `volume_lots` en este contrato.

| Campo | Restricción |
| - | - |
| `login` | Entero positivo; cuenta verificada con tu token |
| `symbol` | Nombre exacto del broker, entre 1 y 32 caracteres |
| `volume` | Entero positivo en unidades MT5 |
| `side` | `buy` o `sell` |
| `comment` | Opcional; hasta 31 caracteres; predeterminado `REST API` |

## Precio y decimales automáticos

Omite `price` y `digits`. El backend consulta los datos de la cuenta y la
configuración efectiva del símbolo, valida volumen y permisos de apertura y
obtiene la cotización correspondiente. Usa Ask para compra y Bid para venta.
Los decimales proceden del símbolo. Esta información interna no se devuelve.

Aunque el partner no envía precio, la solicitud Dealer sí incluye `PriceOrder`
y `Digits`. No se garantiza que el precio final ejecutado sea idéntico a la cotización.
El modo automático exige una cotización con antigüedad máxima de 60 segundos por
defecto, configurable por el operador; vuelve a comprobar su vigencia antes del envío.
Cotizaciones ausentes o inválidas producen `502`; vencidas, `503`.

Las aperturas a mercado y los cierres seleccionan automáticamente la política de
llenado según el símbolo efectivo para el grupo de la cuenta. Se prefiere FOK;
si no está disponible, se utiliza IOC cuando esté permitido. Request/Instant
permiten FOK independientemente de los flags. Market/Exchange respetan los flags
FOK/IOC del símbolo; si ninguno está permitido, se devuelve `422` antes del envío.

FOK ejecuta todo el volumen o cancela. IOC puede ejecutar un volumen menor y
cancela el resto. Una solicitud aceptada no confirma una ejecución completa:
consulta el resultado de ejecución y las posiciones para conocer el volumen real.
Un cierre puede dejar parte de la posición abierta. La API no reenvía el volumen
restante ni reintenta con otra política. La misma clave de idempotencia devuelve
la respuesta original del envío. La política elegida queda en los logs de auditoría.
También se aplica cuando se envían los campos antiguos `price` y `digits`.
Las órdenes pendientes mantienen RETURN, según las reglas de MT5.

## Compatibilidad

Las integraciones anteriores pueden seguir enviando **ambos** campos `price` y
`digits`, marcados como obsoletos. Conservan el comportamiento explícito anterior:
la API utiliza esos valores y no consulta automáticamente la cotización. Sí consulta
el símbolo efectivo para seleccionar FOK/IOC.
Enviar solo uno produce `422`. Para adoptar el modo automático, omite ambos.
Los cierres aceptan solo login y volumen/comentario opcionales; el servidor calcula los demás parámetros.

## Envío y resultado

Guarda el cuerpo en `apertura.json` y conserva una clave única por intención.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --fail-with-body -X POST "$API_BASE/api/v1/orders/market" \
  -H "Authorization: Bearer $MT5_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $OPEN_KEY" \
  --data-binary @apertura.json
```

Guarda `answer.id` o `answer.ID` y consulta [el resultado](/es/trading/results).
`retcode: "0 Done"` confirma recepción, no ejecución. Un reintento con la misma
clave y cuerpo devuelve el resultado guardado sin volver a cotizar ni operar;
un cambio en el cuerpo produce `409`. Ante un error después de reservar la clave,
consulta [idempotencia y recuperación](/es/trading/idempotency).

Para limit, stop y stop-limit utiliza [órdenes pendientes](/es/trading/pending).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.