Unidad de volumen de la API
Todos los campos públicos de volumen usan unidades MT5: 10000 unidades = 1 lote. Ningún endpoint de partners recibe ni devuelve el volumen expresado directamente en lotes. Los ejemplos en lotes son equivalencias para la integración. La API no convierte automáticamentevolume desde lotes.
Son equivalencias, no una lista de volúmenes permitidos para todos los activos.
Por ejemplo,
"volume": 1 significa 0,0001 lotes, nunca 1 lote.
Símbolo y tamaño del contrato
El factor 10000 no cambia por símbolo, broker, grupo de cuenta oContractSize
dentro de este contrato API. ContractSize describe el tamaño de un lote del
instrumento; no es el factor para codificar el volumen que debes enviar.
Así, un símbolo con ContractSize = 1 y otro con ContractSize = 10 reciben
ambos "volume": 10000 para solicitar 1 lote. La exposición económica de esos
lotes puede ser diferente. No multipliques ni dividas el volumen API por
ContractSize; tampoco calcules margen o beneficio únicamente con esa conversión.
Lo que sí depende del símbolo y de la configuración efectiva del grupo es:
VolumeMin: volumen mínimo, en unidades MT5.VolumeMax: volumen máximo, en unidades MT5.VolumeStep: paso permitido, en unidades MT5.
volume: debe estar entre
mínimo y máximo y ser múltiplo del paso. Convertir correctamente no garantiza que
el volumen sea admisible. La API no ajusta ni redondea silenciosamente la cantidad.
Ejemplo de configuración: mínimo 5000 y paso 100 equivalen a un mínimo de 0,5 lotes
y un paso de 0,01 lotes. En ese caso, 0,01 lotes se convierte correctamente en 100,
pero no alcanza el mínimo permitido.
Campos por endpoint
Las rutas de la tabla se añaden a la URL base de la API.
Los demás endpoints de partners no reciben ni exponen un volumen de trading.
GET /api/v1/accounts/{login}/positions/count devuelve cantidad de posiciones,
no lotes. offset y total son parámetros de paginación, no volumen.
Los formatos de resultado pueden variar entre eventos agrupados y resultados
planos. La unidad de los campos no cambia. En cancelaciones o modificaciones de
SL/TP, un volumen cero no indica fallo: interpreta summary.status y mt5_code.
Apertura, cierre y ejecución parcial
Para solicitar 0,5 lotes, usa"volume": 5000 al abrir una orden.
Para solicitar cerrar 0,2 lotes de una posición de 0,5 lotes:
POST /api/v1/positions/{position}/close, con el ticket real
y una nueva Idempotency-Key. Para solicitar todo el volumen actual, omite
volume: {"login":104205}. No uses volume: 0 para un cierre completo.
Un resultado con Volume = "5000" y ResultVolume = "3000" en el evento
answer indica 0,5 lotes solicitados y 0,3 lotes ejecutados. No presupongas que
el volumen solicitado se ejecutó íntegro. Comprueba el resultado y las posiciones;
la API no reenvía automáticamente el remanente IOC.
Conversión en el cliente
Envíavolume como número entero JSON. Las respuestas pueden representar los
enteros como cadenas: "Volume": "5000" sigue siendo 0,5 lotes. Un campo ausente
o null no debe convertirse en cero ni considerarse prueba de no ejecución.
Usa aritmética decimal y comprueba que el resultado de la conversión es entero,
sin truncarlo ni redondearlo. Ejemplo Python, partiendo de una cantidad en texto:
VolumeExt: tienen otra escala y no forman parte del
contrato público de estos endpoints.