Upscale
Menu
On this page

Получить все события по позиции

Попробовать ↓
GET/positions/{positionId}/history
Получить все события по позицииТорговля

Что произошло с одной позицией, сначала самые новые: увеличения, частичные и полные закрытия, ликвидация, принудительное закрытие, изменения маржи.

  • Платежи по финансированию исключены из этого потока.
  • Принудительное закрытие несёт за собой рыночное событие, в котором и находится причина этого закрытия.
Базовый URL https://api.upscale.trade

Авторизация

bearerhttp · bearerобязательно

Персональный API-ключ с префиксом usk_.

Параметры

Путь
positionIdstring · uuidобязательно

Идентификатор позиции. Его аккаунт должен принадлежать вызывающему.

Пример: 00000000-0000-4000-8000-000000000000

Примеры

curl --request GET 'https://api.upscale.trade/positions/{positionId}/history' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'

Ответы

401

Неавторизовано

403

Аккаунт принадлежит другому пользователю (account_access_denied), или запрос аутентифицирован с помощью API-ключа, тогда как api_trading отключён на аккаунте (api_trading_not_enabled).

404

Нет позиции с этим идентификатором.

429

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

defaultОтветapplication/json

Массив PositionEventResponse

idxstring[]обязательно

Идентификатор позиции. То же значение, что и txId.

Элементы массива · string

string

Посмотреть пример
[
  "string"
]
txIdstring[]обязательно

Идентификатор позиции. Сохранён для обратной совместимости, всегда равен idx.

Элементы массива · string

string

Посмотреть пример
[
  "string"
]
versionnumberобязательно

Ревизия позиции: увеличивается при каждом событии, применённом к ней.

Пример: 0
openedAtstring · date-timeобязательно

Когда позиция была открыта.

Пример: 2026-05-01T12:30:00.000Z
lastUpdatedAtstring · date-timeобязательно

Когда к позиции было применено последнее событие.

Пример: 2026-05-01T12:30:00.000Z
closedAtstring · date-time · nullableобязательно

Когда позиция была закрыта; null, пока она всё ещё открыта.

Пример: 2026-05-01T12:30:00.000Z
typestring · enumобязательно

Направление позиции. То же значение, что и direction.

Допустимо: "long" "short"
Пример: long
statusstring · enumобязательно

Является ли позиция всё ещё открытой, закрытой трейдером или ликвидированной.

Допустимо: "opened" "closed" "liquidated"
Пример: opened
marketstring · uuidобязательно

Рынок, на котором удерживается позиция.

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})$
Пример: 00000000-0000-4000-8000-000000000000
traderstring · uuidобязательно

Счёт трейдера, которому принадлежит позиция.

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})$
Пример: 00000000-0000-4000-8000-000000000000
sizestring · int32обязательно

Размер позиции в единицах базового актива, fp9 в сыром виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
notionalstring · int32обязательно

Открытый номинал позиции в валюте котировки, fp9 в сыром виде — размер по цене входа.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
fractionstring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
marginstring · int32обязательно

Маржа, в настоящее время обеспечивающая позицию, fp9 в сыром виде. Изменяется вместе с pnl, финансированием и ручными изменениями маржи.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
pnlstring · int32 · nullableобязательно

Реализованный pnl, накопленный по каждому событию позиции, fp9 в сыром виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
fundingstring · int32 · nullableобязательно

Финансирование, уплаченное (отрицательное) или полученное (положительное) за всё время существования позиции, fp9 в необработанном виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
rolloverFeestring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
settlementOraclePricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
feestring · int32обязательно

Торговые комиссии, взимаемые за всё время существования позиции, fp9 в необработанном виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
feeRatestring · int32обязательно

Ставка комиссии, применяемая к позиции, fp9 в виде необработанной дроби (1000000 = 0.1%).

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
exchangedQuotestring · int32обязательно

Сумма в котируемой валюте, обмененная в результате последнего события, fp9 в необработанном виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
exchangedBasestring · int32обязательно

Сумма в базовой валюте, обмененная в результате последнего события, fp9 в необработанном виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
directionstring · enumобязательно

Направление позиции.

Допустимо: "long" "short"
Пример: long
eventNamestring · enumобязательно

Тип последнего события, применённого к позиции.

Допустимо: "addMargin" "removeMargin" "closePosition" "increasePosition" "liquidate" "forceClose" "payFunding"
Пример: addMargin
pnlInEventstring · int32обязательно

Реализованный pnl последнего события, fp9 в сыром виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
rawPnlInEventstring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
profitAdjustmentAppliedbooleanобязательно

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

Пример: true
holdingTimeMsstring[]обязательно

Как долго позиция удерживалась до самого последнего закрытия, в миллисекундах, считая от открытия или последнего увеличения. Null для событий, которые не являются закрытиями.

Элементы массива · string

string

Посмотреть пример
[
  "string"
]
feeInEventstring · int32обязательно

Комиссия, взимаемая по самому последнему событию, fp9 в сыром виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
fundingInEventstring · int32обязательно

Фандинг, урегулированный самым последним событием, fp9 в сыром виде.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
rolloverFeeInEventstring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
executionFeeRatestring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
executionFeeInEventstring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
executionFeestring · int32обязательно

Всегда 0. Сохранено для обратной совместимости.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
timestampstring · date-timeобязательно

Временная метка самого последнего события. То же значение, что и lastUpdatedAt.

Пример: 2026-05-01T12:30:00.000Z
isOnchainbooleanобязательно

Всегда true. Сохранено для обратной совместимости.

Пример: true
roestring · int32обязательно

Рентабельность капитала позиции — реализованный pnl относительно внесённой маржи, fp9 в виде необработанной дроби.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
scalpingCoefficientstring · int32обязательно

Динамический множитель спреда, применённый к позиции, fp9 в необработанном виде (1000000000 = 1.0). Выше 1, когда сделка попала в окно рыночного скальпинга.

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
closeReasonstring[]обязательно

Почему платформа закрыла позицию (например, weekly_session_risk_close). Null для позиций, закрытых трейдером, и для открытых.

Элементы массива · string

string

Посмотреть пример
[
  "string"
]
orderobject · nullableобязательно

Ордер, создавший это событие; null для событий, которые платформа инициировала самостоятельно, таких как финансирование или принудительное закрытие.

Объект · 35 поля
idstring · uuidобязательно

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

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})$
Пример: 00000000-0000-4000-8000-000000000000
txIdstringобязательно

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

Пример: string
traderstring · uuidобязательно

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

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})$
Пример: 00000000-0000-4000-8000-000000000000
marketstring · uuidобязательно

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

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})$
Пример: 00000000-0000-4000-8000-000000000000
statusstring · enumобязательно

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

Допустимо: "active" "canceled" "canceled_by_update" "canceled_by_error" "canceled_by_position" "executed"
Пример: active
typestring · enumобязательно

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

Допустимо: "market" "limit" "stop" "trailing_stop" "take" "stop_limit" "stop_market" "liquidation"
Пример: market
directionstring · enumобязательно

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

Допустимо: "long" "short"
Пример: long
triggerPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
requestedTriggerPricestring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
stopPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
limitPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
stopTriggerPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
takeTriggerPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
trailingStopActivationPricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
trailingStopOffsetstring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
trailingStopOffsetPercentstring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
leveragestring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
indexstringобязательно

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

Пример: string
positionIdstring · nullableобязательно

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

Пример: string
parentOrderIdstring · nullableобязательно

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

Пример: string
expirationstring · date-time · nullableобязательно

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

Пример: 2026-05-01T12:30:00.000Z
amountstring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
indexPricestring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
settlementOraclePricestring · int32обязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
createdAtstring · date-timeобязательно

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

Пример: 2026-05-01T12:30:00.000Z
errorstring · nullableобязательно

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

Пример: string
realizedPnlstring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
rawRealizedPnlstring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
profitAdjustmentAppliedbooleanобязательно

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

Пример: true
executedAfterPausebooleanобязательно

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

Пример: true
sizeModestring · enumобязательно

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

Допустимо: "quote" "base"
Пример: quote
baseSizestring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
reservedAmountstring · int32 · nullableобязательно

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

pattern
^(?:-?[1-9][0-9]*|0)$
Пример: 1000000000
errorCodestring · nullableобязательно

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

Пример: string
reasonstring · enum · nullableобязательно

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

Допустимо: "force_close" "stop_accounts_fail" "stop_accounts_freeze" "stop_accounts_promote" "stop_accounts_manual" "weekly_session_risk_close" null
Пример: force_close
Посмотреть пример
{
  "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"
}