Skip to main content

API volume unit

Every public trading-volume field uses MT5 units: 10000 units = 1 lot. No partner endpoint accepts or returns volume directly in lots. Lots in examples are explanatory equivalents. The API does not automatically convert lots to units.
These are conversions, not universally permitted order sizes. "volume": 1 means 0.0001 lots, never 1 lot.

Symbol settings and contract size

The factor 10000 is independent of the symbol, broker, account group and ContractSize within this API contract. Contract size describes what one lot represents economically; it is not the volume encoding factor. Symbols with ContractSize = 1 and ContractSize = 10 both take volume: 10000 for a one-lot request. Their economic exposure can differ. Do not multiply or divide API volume by contract size. Volume conversion alone does not calculate margin or profit. Effective account-group symbol settings determine VolumeMin, VolumeMax and VolumeStep, all in MT5 units. Volume checks require an amount within the limits and divisible by the step. A correct conversion is not proof that a volume is allowed. The API does not silently adjust or round the requested amount. Example: minimum 5000 and step 100 mean a minimum of 0.5 lots and a 0.01-lot step. Although 0.01 lots correctly converts to 100 units, it is below that minimum.

Fields by endpoint

Append these paths to the API base URL. Other partner endpoints do not accept or expose a trading volume. GET /api/v1/accounts/{login}/positions/count counts positions, not lots. offset and total are pagination controls, not volume. Grouped and flat execution results use the same units. Zero volume on a cancellation or stop modification is not proof of failure; check summary.status and mt5_code.

Opening, closing and partial execution

To request 0.5 lots, submit "volume": 5000. To request closing 0.2 lots of a 0.5-lot position, send:
Use POST /api/v1/positions/{position}/close with the actual position ticket and a new Idempotency-Key. To request closing the entire current position, omit volume: {"login":104205}. Do not use volume: 0 for a full close. In an answer execution event, Volume = "5000" and ResultVolume = "3000" mean 0.5 lots requested and 0.3 lots executed. Check the result and current positions; the API does not automatically resubmit an unfilled IOC remainder.

Client conversion

Send volume as an integer JSON number. Responses can encode numbers as strings: "Volume": "5000" still means 0.5 lots. Missing or null fields are not zero and do not establish whether execution occurred. Use decimal arithmetic. The converted amount must be a positive finite integer; do not truncate or round it silently. For example:
If the UI displays lots, convert once on submission and divide returned volume by 10000 once for display. Internal VolumeExt fields use a different scale and are not part of these public endpoint contracts.