> ## 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.

# Modificar órdenes y posiciones

> Flujo completo para cambiar precios y protección de una cuenta autorizada.

## Elegir endpoint y ticket

| Recurso | Endpoint | Ticket | Campos modificables |
| - | - | - | - |
| Pendiente | `POST /api/v1/orders/{order}/modify` | `Order` del listado de órdenes | `price`, `sl`, `tp`; `stop_limit_price` solo para stop-limit |
| Posición abierta | `POST /api/v1/positions/{position}/modify` | `Position` del listado de posiciones | `sl`, `tp` |

No uses el request ID ni el deal ID como ticket. Una modificación no cambia
volumen, símbolo, dirección ni expiración. Tampoco cambia el precio de apertura
de una posición: para reducir su volumen usa `/close`.

## Cuerpo de la solicitud

Envía `login` y al menos un campo modificable. Todos los niveles son precios
absolutos, no pips ni distancias. Estos precios son ilustrativos:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{"login":104205,"price":1.09,"sl":1.08,"tp":1.12}
```

El ejemplo modifica una pendiente. Para una posición, envía solo `login` y `sl`
y/o `tp`; por ejemplo `{"login":104205,"tp":1.12}`.

| Entrada | Efecto |
| - | - |
| Campo omitido | Conserva su valor. |
| SL/TP positivo | Añade o reemplaza el nivel. |
| `sl: 0` o `tp: 0` | Elimina únicamente ese nivel. |
| `null` | Se rechaza con 422. |
| `price`, `stop_limit_price` | Deben ser positivos; no admiten cero. |

En stop-limit, `price` activa la orden y `stop_limit_price` fija el precio límite
posterior. Si cambia la entrada, los SL/TP conservados deben seguir siendo válidos;
puedes corregirlos en el mismo cuerpo. Se validan precisión, tamaño de tick,
distancias mínimas y congelación del símbolo. MT5 decide la aceptación final.

## Enviar y confirmar

1. Verifica la cuenta. Usa un token del broker correspondiente con permiso
   `POST:/api/v1/orders/*/modify` o `POST:/api/v1/positions/*/modify`, según el recurso.
2. Guarda cuerpo, ruta y una nueva `Idempotency-Key` por intención (16–128 caracteres).
   La API valida la propiedad del ticket y que trading esté habilitado.
3. Envía el POST con Bearer y esa clave. Guarda `answer.id` o `answer.ID`.
   La respuesta inicial confirma el envío, no la modificación final.
4. Consulta `GET /api/v1/trading/requests/{request_id}`: `10009` confirma éxito;
   `10025` significa sin cambios. Si está pendiente, respeta `Retry-After`.
5. Lee las órdenes o posiciones para comprobar sus niveles vigentes. El resultado
   guardado es histórico y no hace una consulta adicional de la posición actual.

`summary.operation` será `modify_order` o `modify_position`. Serializa cambios
que dependan de una modificación anterior del mismo ticket. Si una pendiente se
ejecuta antes, la modificación puede fallar; no modifica la posición resultante.
Tras un timeout, reutiliza la misma clave y cuerpo. No generes otra clave para
repetir una operación incierta; consulta primero el estado de la cuenta.

Cliente Python, con claves ya persistidas:

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
client.modify_pending_order(123456, {"login": 104205, "price": 1.09},
                            idempotency_key=order_key)
client.modify_position(987654, {"login": 104205, "sl": 0},
                       idempotency_key=position_key)
```

## Cambio desde `/stops`

La ruta de posiciones usa ahora `/modify`; `/stops` ya no acepta solicitudes.
Actualiza URL, permiso y helper Python (`modify_position`). Los tokens con el
permiso antiguo no obtienen el nuevo automáticamente. Las consultas históricas
siguen disponibles y pueden conservar `operation=modify_stops`.


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