# Создать новый ордер

`POST /orders`

Размещает ордер и возвращает его в том виде, в котором его сохранил торговый движок. Ордера на увеличение (`market`, `limit`, `stop_market`, `stop_limit`) открывают или увеличивают позицию;
ордера закрытия (`stop`, `take`, `trailing_stop`) привязываются к существующей позиции через `positionId`.

`amount` читается в разных единицах для каждого из двух: в ордере на увеличение это сумма в котируемой валюте, зарезервированная из свободного баланса; в ордере на закрытие это размер базового актива позиции для закрытия, при этом ничего не резервируется. Остальные поля размера (`expectedAmount`, `sizeMode`, `baseSize`, `leverage`) относятся только к ордерам на увеличение.

Помимо схемы на уровне полей, запрос проверяется на:

- **Форма для типа.** Каждое отклонение здесь — это `400`, код которого указывает на проблемную комбинацию полей:
  - размер — `amount_not_positive`, `base_size_required`, `base_size_negative`, `base_size_not_allowed`;
  - плечо — `leverage_required`, `leverage_negative`;
  - цена триггера — `trigger_price_required`, `trigger_price_negative`;
  - стоп-лосс / тейк-профит, привязанные к ордеру на увеличение — `stop_trigger_price_negative`, `take_trigger_price_negative`,
    `stop_trigger_price_gt_trigger_price`, `stop_trigger_price_lt_trigger_price`, `take_trigger_price_gt_trigger_price`,
    `take_trigger_price_lt_trigger_price`;
  - цена стоп-лимит — `stop_limit_price_required`, `stop_limit_price_negative`, `stop_limit_price_gt_trigger_price`,
    `stop_limit_price_lt_trigger_price`;
  - трейлинг-стоп — `trailing_stop_activation_price_negative`, `trailing_stop_offset_required`, `trailing_stop_offset_conflict`,
    `trailing_stop_offset_negative`, `trailing_stop_offset_percent_negative`, `trailing_stop_offset_percent_gte_one`;
  - ордера на закрытие — `position_id_required`.
- **Плечо** ордера на увеличение. Должно оставаться в границах рынка: не ниже минимума рынка и не выше максимума фазы,
  с `invalid_leverage` (`leverage` плюс `minLeverage` или `maxLeverage` в теле).
- **Аккаунт.** Должен принадлежать вызывающему и находиться в торговом статусе; ордера на увеличение дополнительно отклоняются, пока аккаунт заблокирован лимитом управляемого капитала, и требуют, чтобы `amount` был доступен как свободный баланс.
- **Рынок.** Должен быть открыт и относиться к категории, в которой аккаунт может торговать (crypto или RWA). Рынок только для закрытия принимает только `take`-ордер, созданный без триггерной цены.
- **Позиция**, когда задан `positionId`: она должна существовать (`position_not_found`), быть открытой, находиться на том же аккаунте, принадлежать тому же рынку и иметь то же направление, что и ордер (`position_not_available`).
- **Триггерная цена**, относительно текущей рыночной цены и — для `stop` / `take` — относительно цены ликвидации позиции
  (`trigger_price_gt_current`, `trigger_price_lt_current`, `trigger_price_gt_liquidation`, `trigger_price_lt_liquidation`).
  `market`-ордер с прикреплённым стоп-лоссом / тейк-профитом проверяется относительно цены ликвидации, которая будет у его позиции после исполнения:
  `market_price_unavailable` когда нет текущей цены для проверки, `order_validation_invariant` когда поля размера, необходимые для этого прогноза, отсутствуют.
- **Нотионал** ордера на увеличение. `(amount − fee) × leverage` должен укладываться в максимальный открытый нотионал, который рынок допускает в этом направлении
  (`order_exceeds_max_open_notional`).

Отложенный ордер здесь не исполняется, поэтому он всё ещё может завершиться ошибкой, когда позже сработает его триггер: тогда он получает статус `canceled_by_error` и
`errorCode` (`insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth`, `order_exceeds_max_open_notional`,
`order_zero_size_at_execution`, `slippage_tolerance`, `market_close_only_at_execution`), а его резерв освобождается.

Отправьте заголовок `x-idempotency-key`, чтобы сделать вызов безопасным при повторной отправке: в пределах окна повторной отправки, указанного в этом заголовке, тот же ключ на том же маршруте воспроизводит сохранённый ответ (помеченный `X-Idempotency-Cached: true` и `X-Idempotency-Timestamp`) вместо повторного выполнения, а второй вызов, поступивший, пока первый всё ещё выполняется, получает `409` (`idempotency_key_in_flight`).

<a id="authorization"></a>

## Авторизация

bearer: http · bearer (обязательно). Персональный API-ключ с префиксом `usk_`.

<a id="parameters"></a>

## Параметры

- header: x-idempotency-key (string; необязательно). Ключ идемпотентности — любая непрозрачная строка, uuid v4 хорошо подходит. Повторный вызов с тем же ключом на этом маршруте в течение 1 часа воспроизводит сохранённый ответ вместо повторного выполнения; при воспроизведении возвращаются `X-Idempotency-Cached: true` и `X-Idempotency-Timestamp`. Чтобы отказаться, не указывайте заголовок.

Тип: string

Пример: "9f1c2b7e-5a3d-4f61-9b0e-2c7d4a8e1f35"

<a id="request-body-ordercreaterequest"></a>

## Тело запроса · OrderCreateRequest

application/json · обязательно

Схема: OrderCreateRequest

Тип: object

Обязательные поля: accountId, marketId, type, direction, amount

Типы обязательных полей: accountId (string · uuid; обязательно), marketId (string · uuid; обязательно), type (string · enum; обязательно), direction (string · enum; обязательно), amount (string · int32; обязательно)

- accountId (string · uuid; обязательно)

accountId пример: 00000000-0000-4000-8000-000000000000

accountId.Тип: string · uuid

accountId.Торговый аккаунт, на котором размещается ордер. Должен принадлежать вызывающей стороне.

accountId.format: uuid

accountId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- marketId (string · uuid; обязательно)

marketId пример: 00000000-0000-4000-8000-000000000000

marketId.Тип: string · uuid

marketId.Рынок, на котором размещается ордер, как возвращается `GET /v2/markets`.

marketId.format: uuid

marketId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- type (string · enum; обязательно)

type пример: market

type.Тип: string · enum

type.Тип ордера. Типы увеличения (открытия позиции): `market`, `limit`, `stop_market`, `stop_limit`. Типы закрытия, привязанные к существующей позиции: `stop`, `take`, `trailing_stop`. `liquidation` выставляется самой платформой, а `add_margin` / `remove_margin` — устаревшие; ни один из этих трёх здесь не принимается.

type.Допустимые значения: ["market","limit","stop","trailing_stop","take","stop_limit","stop_market"]

- direction (string · enum; обязательно)

direction пример: long

direction.Тип: string · enum

direction.Направление ордера. Для ордера на закрытие оно должно совпадать с направлением позиции, к которой он привязан.

direction.Допустимые значения: ["long","short"]

- positionId (string · uuid · nullable; необязательно)

positionId пример: 00000000-0000-4000-8000-000000000000

positionId.Тип: string · uuid · nullable

positionId.Позиция, к которой привязан ордер на закрытие (`stop`, `take`, `trailing_stop`). Обязательна для этих типов, игнорируется для ордеров на увеличение.

positionId.format: uuid

positionId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- amount (string · int32; обязательно)

amount пример: 100000000000

amount.Тип: string · int32

amount.По чему задаётся размер ордера, fp9 в исходном виде — единица зависит от класса ордера. Для ордера на увеличение (`market`, `limit`, `stop_market`, `stop_limit`) это сумма в **котируемом активе**, резервируемая из свободного баланса (маржа, комиссия, спред и буфер): на счёте должно быть не меньше этой суммы, и резерв освобождается при отмене ордера. Для ордера на закрытие (`stop`, `take`, `trailing_stop`) это размер позиции для закрытия в **базовом активе**, и ничего не резервируется; размер, превышающий объём позиции, закрывает её полностью.

amount.format: int32

amount.pattern: ^(?:-?[1-9][0-9]*|0)$

- expectedAmount (string · int32 · nullable; необязательно)

expectedAmount пример: 0

expectedAmount.Тип: string · int32 · nullable

expectedAmount.Допуск проскальзывания для ордеров на увеличение: размер позиции, который вызывающий ожидает для `amount`, fp9 в сыром виде. Исполнение вне допуска завершается ошибкой с `slippage_tolerance`. Если не указано или `0` — проверка допуска не выполняется. Не применимо к ордерам на закрытие.

expectedAmount.format: int32

expectedAmount.pattern: ^(?:-?[1-9][0-9]*|0)$

- leverage (string · int32 · nullable; необязательно)

leverage пример: 10000000000

leverage.Тип: string · int32 · nullable

leverage.Кредитное плечо, fp9 в исходном виде (`10000000000` = 10x). Обязательно для ордеров на увеличение и должно находиться в пределах границ кредитного плеча рынка.

leverage.format: int32

leverage.pattern: ^(?:-?[1-9][0-9]*|0)$

- triggerPrice (string · int32 · nullable; необязательно)

triggerPrice пример: 65000000000000

triggerPrice.Тип: string · int32 · nullable

triggerPrice.Цена, при которой срабатывает ордер, fp9 в исходном виде. Обязательна для `limit`, `stop`, `take`, `stop_market` и `stop_limit`, и отклоняется для `market`. Для `stop` / `take`, `0` означает, что ордер создаётся без триггера и может быть задан позже.

triggerPrice.format: int32

triggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopTriggerPrice (string · int32 · nullable; необязательно)

stopTriggerPrice пример: 1000000000

stopTriggerPrice.Тип: string · int32 · nullable

stopTriggerPrice.Стоп-лосс, привязанный к ордеру на увеличение, fp9 в исходном виде. Должен находиться ниже цены триггера входа для `long` и выше неё для `short`.

stopTriggerPrice.format: int32

stopTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- takeTriggerPrice (string · int32 · nullable; необязательно)

takeTriggerPrice пример: 1000000000

takeTriggerPrice.Тип: string · int32 · nullable

takeTriggerPrice.Тейк-профит, привязанный к ордеру на увеличение, fp9 в исходном виде. Должен находиться выше цены триггера входа для `long` и ниже неё для `short`.

takeTriggerPrice.format: int32

takeTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopActivationPrice (string · int32 · nullable; необязательно)

trailingStopActivationPrice пример: 1000000000

trailingStopActivationPrice.Тип: string · int32 · nullable

trailingStopActivationPrice.Цена, с которой `trailing_stop` начинает трейлинг, fp9 в исходном виде. Пропущено — ордер трейлится с момента создания.

trailingStopActivationPrice.format: int32

trailingStopActivationPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffset (string · int32 · nullable; необязательно)

trailingStopOffset пример: 1000000000

trailingStopOffset.Тип: string · int32 · nullable

trailingStopOffset.Дистанция трейлинга как абсолютная сумма в валюте котировки, fp9 в сыром виде. Требуется ровно один из `trailingStopOffset` / `trailingStopOffsetPercent`.

trailingStopOffset.format: int32

trailingStopOffset.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffsetPercent (string · int32 · nullable; необязательно)

trailingStopOffsetPercent пример: 50000000

trailingStopOffsetPercent.Тип: string · int32 · nullable

trailingStopOffsetPercent.Дистанция трейлинга как доля цены, fp9 в сыром виде и строго ниже `1000000000` (100%). Требуется ровно один из `trailingStopOffset` / `trailingStopOffsetPercent`.

trailingStopOffsetPercent.format: int32

trailingStopOffsetPercent.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopLimitPrice (string · int32 · nullable; необязательно)

stopLimitPrice пример: 1000000000

stopLimitPrice.Тип: string · int32 · nullable

stopLimitPrice.Лимитная цена, по которой ордер `stop_limit` размещается сразу после срабатывания его триггера, fp9 в сыром виде. Обязательна для этого типа; должна быть не выше цены триггера для `long` и не ниже неё для `short`.

stopLimitPrice.format: int32

stopLimitPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- sizeMode (string · enum; необязательно)

sizeMode пример: quote

sizeMode.Тип: string · enum

sizeMode.Как выражается размер ордера на увеличение: `quote` (по умолчанию) задаёт его размер через `amount`, `base` задаёт его размер через `baseSize`, при этом `amount` остаётся резервом. Только для ордеров на увеличение — ордер на закрытие всегда задаётся по размеру через `amount` в единицах базового актива.

sizeMode.Допустимые значения: ["quote","base"]

- baseSize (string · int32 · nullable; необязательно)

baseSize пример: 1000000000

baseSize.Тип: string · int32 · nullable

baseSize.Размер ордера в единицах базового актива, fp9 в сыром виде. Обязателен, когда `sizeMode` имеет значение `base`, и в противном случае отклоняется; имеет смысл только для ордеров на увеличение.

baseSize.format: int32

baseSize.pattern: ^(?:-?[1-9][0-9]*|0)$

Пример



```json
{
  "accountId": "00000000-0000-4000-8000-000000000000",
  "marketId": "00000000-0000-4000-8000-000000000000",
  "type": "market",
  "direction": "long",
  "amount": "100000000000"
}
```

<a id="example-curl"></a>

## Пример · cURL

```bash
curl --request POST 'https://api.upscale.trade/orders' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "accountId": "00000000-0000-4000-8000-000000000000",
  "marketId": "00000000-0000-4000-8000-000000000000",
  "type": "market",
  "direction": "long",
  "amount": "100000000000"
}'
```

<a id="example-javascript"></a>

## Пример · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/orders", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: "{\n  \"accountId\": \"00000000-0000-4000-8000-000000000000\",\n  \"marketId\": \"00000000-0000-4000-8000-000000000000\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"amount\": \"100000000000\"\n}",
});
console.log(response.status, await response.text());
```

<a id="example-python"></a>

## Пример · Python

```python
import requests

response = requests.request(
    "POST",
    "https://api.upscale.trade/orders",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY","Content-Type":"application/json"},
    data="{\n  \"accountId\": \"00000000-0000-4000-8000-000000000000\",\n  \"marketId\": \"00000000-0000-4000-8000-000000000000\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"amount\": \"100000000000\"\n}",
    timeout=30,
)
print(response.status_code, response.text)
```

<a id="response-401"></a>

## Ответ 401

**401**  — Неавторизовано

<a id="response-403"></a>

## Ответ 403

**403**  — Аккаунт принадлежит другому пользователю (`account_access_denied`), или запрос аутентифицирован с помощью API-ключа, тогда как `api_trading` отключён на аккаунте (`api_trading_not_enabled`). Торговля на аккаунте завершена в его текущем статусе (`challenge_closed`), или аккаунт заблокирован лимитом управляемого капитала (`funded_limit_trading_locked`). Рынок приостановлен (`market_paused`) или принимает только ордера на закрытие (`market_close_only`).

<a id="response-404"></a>

## Ответ 404

**404**  — Нет такого аккаунта, рынка или позиции.

<a id="response-409"></a>

## Ответ 409

**409**  — Другой вызов с тем же `x-idempotency-key` всё ещё выполняется (`idempotency_key_in_flight`). Повторите попытку, когда он завершится.

<a id="response-429"></a>

## Ответ 429

**429**  — Превышен лимит частоты запросов API-ключа (`api_key_rate_limit_exceeded`). `Retry-After` указывает, когда вернуться; тело содержит бакет (`read` / `write`), окно, которое сработало, его лимит и `retryAt`.

<a id="response-default-orderresponse"></a>

## Ответ default · OrderResponse

**default** application/json — Ответ

Схема: OrderResponse

Тип: object

Обязательные поля: id, txId, trader, market, status, type, direction, triggerPrice, requestedTriggerPrice, stopPrice, limitPrice, stopTriggerPrice, takeTriggerPrice, trailingStopActivationPrice, trailingStopOffset, trailingStopOffsetPercent, leverage, index, positionId, parentOrderId, expiration, amount, indexPrice, settlementOraclePrice, createdAt, error, realizedPnl, rawRealizedPnl, profitAdjustmentApplied, executedAfterPause, sizeMode, baseSize, reservedAmount, errorCode, reason

Типы обязательных полей: id (string · uuid; обязательно), txId (string; обязательно), trader (string · uuid; обязательно), market (string · uuid; обязательно), status (string · enum; обязательно), type (string · enum; обязательно), direction (string · enum; обязательно), triggerPrice (string · int32; обязательно), requestedTriggerPrice (string · int32 · nullable; обязательно), stopPrice (string · int32; обязательно), limitPrice (string · int32; обязательно), stopTriggerPrice (string · int32; обязательно), takeTriggerPrice (string · int32; обязательно), trailingStopActivationPrice (string · int32; обязательно), trailingStopOffset (string · int32; обязательно), trailingStopOffsetPercent (string · int32; обязательно), leverage (string · int32 · nullable; обязательно), index (string; обязательно), positionId (string[]; обязательно), parentOrderId (string[]; обязательно), expiration (string · date-time · nullable; обязательно), amount (string · int32; обязательно), indexPrice (string · int32 · nullable; обязательно), settlementOraclePrice (string · int32; обязательно), createdAt (string · date-time; обязательно), error (string[]; обязательно), realizedPnl (string · int32 · nullable; обязательно), rawRealizedPnl (string · int32 · nullable; обязательно), profitAdjustmentApplied (boolean; обязательно), executedAfterPause (boolean; обязательно), sizeMode (string · enum; обязательно), baseSize (string · int32 · nullable; обязательно), reservedAmount (string · int32 · nullable; обязательно), errorCode (string[]; обязательно), reason (string · enum · nullable; обязательно)

- id (string · uuid; обязательно)

id пример: 00000000-0000-4000-8000-000000000000

id.Тип: string · uuid

id.Идентификатор ордера.

id.format: uuid

id.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- txId (string; обязательно)

txId пример: string

txId.Тип: string

txId.Идентификатор ордера. Сохранён для обратной совместимости, всегда равен `id`.

- trader (string · uuid; обязательно)

trader пример: 00000000-0000-4000-8000-000000000000

trader.Тип: string · uuid

trader.Аккаунт трейдера, которому принадлежит ордер.

trader.format: uuid

trader.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- market (string · uuid; обязательно)

market пример: 00000000-0000-4000-8000-000000000000

market.Тип: string · uuid

market.Рынок, на котором размещён ордер.

market.format: uuid

market.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- status (string · enum; обязательно)

status пример: active

status.Тип: string · enum

status.Состояние жизненного цикла: `active`, пока он ожидает, `executed` после исполнения, `canceled` при отмене трейдером или платформой, `canceled_by_update` при замене в результате редактирования, `canceled_by_position` когда позиция, к которой он был привязан, исчезла, `canceled_by_error` при неудачном исполнении — см. `errorCode`.

status.Допустимые значения: ["active","canceled","canceled_by_update","canceled_by_error","canceled_by_position","executed"]

- type (string · enum; обязательно)

type пример: market

type.Тип: string · enum

type.Тип ордера. `liquidation` обозначает ордер, который движок выставил сам.

type.Допустимые значения: ["market","limit","stop","trailing_stop","take","stop_limit","stop_market","liquidation"]

- direction (string · enum; обязательно)

direction пример: long

direction.Тип: string · enum

direction.Направление ордера.

direction.Допустимые значения: ["long","short"]

- triggerPrice (string · int32; обязательно)

triggerPrice пример: 1000000000

triggerPrice.Тип: string · int32

triggerPrice.Цена, при которой срабатывает ордер, fp9 в необработанном виде. `0`, когда ордер не имеет триггера.

triggerPrice.format: int32

triggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- requestedTriggerPrice (string · int32 · nullable; обязательно)

requestedTriggerPrice пример: 1000000000

requestedTriggerPrice.Тип: string · int32 · nullable

requestedTriggerPrice.Цена триггера, как запрошено, до того как движок вытолкнул её до минимального стоп-расстояния, fp9 в исходном виде. Null, когда запрошенная цена была оставлена как есть.

requestedTriggerPrice.format: int32

requestedTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopPrice (string · int32; обязательно)

stopPrice пример: 1000000000

stopPrice.Тип: string · int32

stopPrice.Цена триггера ордера `stop_market` / `stop_limit`, fp9 в исходном виде; `0` для любого другого типа.

stopPrice.format: int32

stopPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- limitPrice (string · int32; обязательно)

limitPrice пример: 1000000000

limitPrice.Тип: string · int32

limitPrice.Цена, по которой ордер размещается при срабатывании, fp9 в исходном виде: цена стоп-лимит, с возвратом к цене триггера.

limitPrice.format: int32

limitPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopTriggerPrice (string · int32; обязательно)

stopTriggerPrice пример: 1000000000

stopTriggerPrice.Тип: string · int32

stopTriggerPrice.Стоп-лосс, привязанный к ордеру, fp9 в исходном виде. `0`, если он не привязан.

stopTriggerPrice.format: int32

stopTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- takeTriggerPrice (string · int32; обязательно)

takeTriggerPrice пример: 1000000000

takeTriggerPrice.Тип: string · int32

takeTriggerPrice.Тейк-профит, привязанный к ордеру, fp9 в исходном виде. `0`, если он не привязан.

takeTriggerPrice.format: int32

takeTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopActivationPrice (string · int32; обязательно)

trailingStopActivationPrice пример: 1000000000

trailingStopActivationPrice.Тип: string · int32

trailingStopActivationPrice.Цена, при которой трейлинг-стоп начинает следовать, fp9 в сыром виде. `0`, когда он следует с момента создания.

trailingStopActivationPrice.format: int32

trailingStopActivationPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffset (string · int32; обязательно)

trailingStopOffset пример: 1000000000

trailingStopOffset.Тип: string · int32

trailingStopOffset.Дистанция трейлинга как абсолютная сумма в котируемой валюте, fp9 в сыром виде. `0`, когда дистанция задана в процентах.

trailingStopOffset.format: int32

trailingStopOffset.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffsetPercent (string · int32; обязательно)

trailingStopOffsetPercent пример: 1000000000

trailingStopOffsetPercent.Тип: string · int32

trailingStopOffsetPercent.Дистанция трейлинга как доля цены, fp9 в сыром виде. `0`, когда дистанция абсолютная.

trailingStopOffsetPercent.format: int32

trailingStopOffsetPercent.pattern: ^(?:-?[1-9][0-9]*|0)$

- leverage (string · int32 · nullable; обязательно)

leverage пример: 1000000000

leverage.Тип: string · int32 · nullable

leverage.Кредитное плечо ордера, fp9 в сыром виде. Null для ордеров на закрытие, которые наследуют кредитное плечо позиции.

leverage.format: int32

leverage.pattern: ^(?:-?[1-9][0-9]*|0)$

- index (string; обязательно)

index пример: string

index.Тип: string

index.Идентификатор ордера. Сохранён для обратной совместимости, всегда равен `id`.

- positionId (string[]; обязательно)

positionId пример: [
  "string"
]

positionId.Тип: string[]

positionId.Позиция, к которой привязан ордер на закрытие. Null для ордеров, которые открывают или увеличивают позицию.

positionId.[]Тип: string

- parentOrderId (string[]; обязательно)

parentOrderId пример: [
  "string"
]

parentOrderId.Тип: string[]

parentOrderId.Ордер, из которого был порождён этот: стоп или тейк, созданный из `stopTriggerPrice` / `takeTriggerPrice`, или лимитный ордер, в который превратился `stop_limit`. Null, когда ордер был отправлен напрямую.

parentOrderId.[]Тип: string

- expiration (string · date-time · nullable; обязательно)

expiration пример: 2026-05-01T12:30:00.000Z

expiration.Тип: string · date-time · nullable

expiration.Всегда null. Сохранено для обратной совместимости — ордера не истекают сами по себе.

expiration.format: date-time

- amount (string · int32; обязательно)

amount пример: 1000000000

amount.Тип: string · int32

amount.Размер ордера, fp9 в сыром виде, в единице, которую использует его класс: для ордера на увеличение — сумма в котируемой валюте — резерв, пока он ожидает, и то, что он фактически потратил после исполнения; для ордера на закрытие (`stop`, `take`, `trailing_stop`) — размер базового актива, который он закрывает, как было запрошено при создании.

amount.format: int32

amount.pattern: ^(?:-?[1-9][0-9]*|0)$

- indexPrice (string · int32 · nullable; обязательно)

indexPrice пример: 1000000000

indexPrice.Тип: string · int32 · nullable

indexPrice.Цена индекса, по которой был исполнен ордер, fp9 в сыром виде. Null, пока ордер не исполнен.

indexPrice.format: int32

indexPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- settlementOraclePrice (string · int32; обязательно)

settlementOraclePrice пример: 1000000000

settlementOraclePrice.Тип: string · int32

settlementOraclePrice.Всегда `1000000000` (1.0). Сохранено для обратной совместимости.

settlementOraclePrice.format: int32

settlementOraclePrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- createdAt (string · date-time; обязательно)

createdAt пример: 2026-05-01T12:30:00.000Z

createdAt.Тип: string · date-time

createdAt.Когда ордер был принят.

createdAt.format: date-time

- error (string[]; обязательно)

error пример: [
  "string"
]

error.Тип: string[]

error.Всегда null. Сохранён для обратной совместимости — используйте `errorCode`.

error.[]Тип: string

- realizedPnl (string · int32 · nullable; обязательно)

realizedPnl пример: 1000000000

realizedPnl.Тип: string · int32 · nullable

realizedPnl.Pnl, реализованный этим ордером, fp9 в сыром виде. Устанавливается только для исполненного ордера на закрытие; null, пока ордер в ожидании, и для ордеров, которые открывают или увеличивают позицию.

realizedPnl.format: int32

realizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$

- rawRealizedPnl (string · int32 · nullable; обязательно)

rawRealizedPnl пример: 1000000000

rawRealizedPnl.Тип: string · int32 · nullable

rawRealizedPnl.Реализованный pnl до 60-секундной корректировки, fp9 в сыром виде. Отличается от `realizedPnl` только тогда, когда корректировка сработала.

rawRealizedPnl.format: int32

rawRealizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$

- profitAdjustmentApplied (boolean; обязательно)

profitAdjustmentApplied пример: true

profitAdjustmentApplied.Тип: boolean

profitAdjustmentApplied.Ограничила ли 60-секундная корректировка прибыль этого ордера — в течение минуты после открытия или увеличения позиции pnl позиции не может вырасти выше значения, которое было в тот момент.

- executedAfterPause (boolean; обязательно)

executedAfterPause пример: true

executedAfterPause.Тип: boolean

executedAfterPause.Был ли ордер исполнен после рыночной паузы. Не задаётся текущим движком — всегда `false`.

- sizeMode (string · enum; обязательно)

sizeMode пример: quote

sizeMode.Тип: string · enum

sizeMode.Как был выражен размер при создании: `quote` задаёт размер ордера по `amount`, `base` задаёт его по `baseSize`.

sizeMode.Допустимые значения: ["quote","base"]

- baseSize (string · int32 · nullable; обязательно)

baseSize пример: 1000000000

baseSize.Тип: string · int32 · nullable

baseSize.Размер ордера в единицах базового актива, fp9 в сыром виде. Null для ордеров с размером `quote`.

baseSize.format: int32

baseSize.pattern: ^(?:-?[1-9][0-9]*|0)$

- reservedAmount (string · int32 · nullable; обязательно)

reservedAmount пример: 1000000000

reservedAmount.Тип: string · int32 · nullable

reservedAmount.Сумма в котируемой валюте, зарезервированная при создании ордера с sizeMode=base, fp9 в сыром виде. Остаётся равной исходному резерву после исполнения, тогда как `amount` перезаписывается на потраченную сумму. Null для ордеров с размером `quote`, где `amount` — это резерв.

reservedAmount.format: int32

reservedAmount.pattern: ^(?:-?[1-9][0-9]*|0)$

- errorCode (string[]; обязательно)

errorCode пример: [
  "string"
]

errorCode.Тип: string[]

errorCode.Почему исполнение не удалось, задаётся вместе со статусом `canceled_by_error` — например, `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` или `slippage_tolerance`. В остальных случаях Null.

errorCode.[]Тип: string

- reason (string · enum · nullable; обязательно)

reason пример: force_close

reason.Тип: string · enum · nullable

reason.Почему платформа сама отменила ордер, например `force_close` или `weekly_session_risk_close`. Null для отмен, инициированных трейдером.

reason.Допустимые значения: ["force_close","stop_accounts_fail","stop_accounts_freeze","stop_accounts_promote","stop_accounts_manual","weekly_session_risk_close",null]

Пример



```json
{
  "id": "00000000-0000-4000-8000-000000000000",
  "txId": "string",
  "trader": "00000000-0000-4000-8000-000000000000",
  "market": "00000000-0000-4000-8000-000000000000",
  "status": "active",
  "type": "market",
  "direction": "long",
  "triggerPrice": "1000000000",
  "requestedTriggerPrice": "1000000000",
  "stopPrice": "1000000000",
  "limitPrice": "1000000000",
  "stopTriggerPrice": "1000000000",
  "takeTriggerPrice": "1000000000",
  "trailingStopActivationPrice": "1000000000",
  "trailingStopOffset": "1000000000",
  "trailingStopOffsetPercent": "1000000000",
  "leverage": "1000000000",
  "index": "string",
  "positionId": [
    "string"
  ],
  "parentOrderId": [
    "string"
  ],
  "expiration": "2026-05-01T12:30:00.000Z",
  "amount": "1000000000",
  "indexPrice": "1000000000",
  "settlementOraclePrice": "1000000000",
  "createdAt": "2026-05-01T12:30:00.000Z",
  "error": [
    "string"
  ],
  "realizedPnl": "1000000000",
  "rawRealizedPnl": "1000000000",
  "profitAdjustmentApplied": true,
  "executedAfterPause": true,
  "sizeMode": "quote",
  "baseSize": "1000000000",
  "reservedAmount": "1000000000",
  "errorCode": [
    "string"
  ],
  "reason": "force_close"
}
```