GET /api/v1/trading/requests/{request_id} obtiene el resultado MT5 de una apertura
o cierre enviado con el mismo token. También exige que la verificación de la cuenta
siga vigente. El ID procede de answer.id o answer.ID en la respuesta de envío.
12345 es un ejemplo de ID de solicitud, no un ticket de posición.
Recogida persistente y consultas repetidas
La API recoge eventos MT5 por lotes en segundo plano usando la conexión física que envió la solicitud. El GET del cliente lee RDS: no consume eventos de MT5. El envío devuelve su ID sin esperar la ejecución. Puede haber una breve demora hasta que el recolector guarde el resultado.200: resultado final guardado, incluso rechazo o ejecución parcial. Revisar códigos MT5.202:{"status":"pending","request_id":1586,"result":null}. Esperar al menos lo indicado enRetry-After(un segundo) y repetir únicamente este GET.409conTRADE_RESULT_UNAVAILABLE: no se conservó un resultado final. El camporesultpuede contener la última instantánea pública. Reconciliar posiciones y órdenes; no reenviar automáticamente la operación.409conTRADE_RESULT_AMBIGUOUS: MT5 reutilizó un ID entre sesiones para ese token. Reconciliar sin adivinar a qué operación corresponde.
Proceso de confirmación
- Conserva la respuesta de envío asociada a la intención y a su clave de idempotencia.
- Consulta el ID con el token que lo creó.
- Examina el resultado MT5: recibir una respuesta HTTP correcta no implica ejecución.
- Si aún no hay un resultado concluyente, espera antes de consultar otra vez. Usa un intervalo configurable, respetando el límite de tu token, y un plazo máximo local.
- Cuando MT5 confirme ejecución o rechazo, consulta posiciones y órdenes para reconciliar el efecto real sobre la cuenta.
- Si vence tu plazo sin poder confirmar, marca la intención como incierta y solicita soporte.
retcode y
answer; si MT5 devuelve eventos agrupados por ID, conserva ese formato solo para
la solicitud consultada. También admite resultados planos y listas de eventos.
Los campos ausentes se omiten; no se inventan estados ni valores.
En result se conservan ID, Retcode, DealID, OrderID, Volume y Price;
los resultados planos también admiten ResultRetcode, ResultDeal, ResultOrder,
ResultVolume y ResultPrice. En el evento answer se conservan IDClient,
Symbol, Type, TypeFill, Volume, PriceOrder, Position y esos cinco campos
Result*. Se excluyen cuentas, login Manager, IP, comentarios, datos del gateway,
volúmenes extendidos, ApiData y campos nuevos no autorizados.
Volume en el evento answer es el volumen solicitado; ResultVolume es el
volumen ejecutado informado. Un ID de solicitud, orden o deal no debe confundirse
con el ticket de posición. Consulta posiciones para reconciliar el resultado.
Casos que requieren atención
- Un
403conTrade request not owned by this tokenindica que el ID no está registrado para ese token. Usar otro token no permite recuperar la solicitud original. - Una verificación vencida debe renovarse para seguir consultando la cuenta.
- Un timeout al consultar el resultado permite repetir la consulta GET; no implica que debas reenviar la apertura o el cierre.
- Si no recibiste el ID, no hay búsqueda partner por clave de idempotencia. Reconcilia la cuenta y escala el caso si no puedes determinar qué ocurrió.