/positions/{accountId}/portfolio/historyКаждая позиция аккаунта на всех рынках, как открытая, так и закрытая, сначала новые, с общим количеством для пагинации.
- Ограничено фазой, в которой аккаунт находится в данный момент: позиции из более ранней фазы не возвращаются.
https://api.upscale.tradeПараметры
accountIdstring · uuidобязательноИдентификатор торгового аккаунта. Должен принадлежать вызывающей стороне.
00000000-0000-4000-8000-000000000000limitintegerнеобязательноРазмер страницы: сколько записей вернуть.
По умолчанию: 20
- minimum
- 1
- maximum
- 100
20offsetintegerнеобязательноСколько записей пропустить перед страницей.
По умолчанию: 0
- minimum
- 0
- maximum
- 9007199254740991
0Примеры
curl --request GET 'https://api.upscale.trade/positions/{accountId}/portfolio/history' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'const response = await fetch("https://api.upscale.trade/positions/{accountId}/portfolio/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
},
});
console.log(response.status, await response.text());import requests
response = requests.request(
"GET",
"https://api.upscale.trade/positions/{accountId}/portfolio/history",
headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
timeout=30,
)
print(response.status_code, response.text)Ответы
Неавторизовано
Аккаунт принадлежит другому пользователю (account_access_denied), или запрос аутентифицирован с помощью API-ключа, тогда как api_trading отключён на аккаунте (api_trading_not_enabled).
Нет аккаунта с этим идентификатором.
Превышен лимит частоты запросов API-ключа (api_key_rate_limit_exceeded). Retry-After указывает, когда вернуться; тело содержит бакет (read / write), окно, которое сработало, его лимит и retryAt.
defaultОтветapplication/json
Массив PositionsPaginatedResponse
dataobject[]обязательноЗапрошенная страница позиций, сначала самые новые.
Элементы массива · object
idxstring · nullableобязательноИдентификатор позиции. То же значение, что и txId.
stringtxIdstring · nullableобязательноИдентификатор позиции. Сохранён для обратной совместимости, всегда равен idx.
stringversionnumberобязательноРевизия позиции: увеличивается при каждом событии, применённом к ней.
0openedAtstring · date-timeобязательноКогда позиция была открыта.
2026-05-01T12:30:00.000ZlastUpdatedAtstring · date-timeобязательноКогда к позиции было применено последнее событие.
2026-05-01T12:30:00.000ZclosedAtstring · date-time · nullableобязательноКогда позиция была закрыта; null, пока она всё ещё открыта.
2026-05-01T12:30:00.000Ztypestring · enumобязательноНаправление позиции. То же значение, что и direction.
"long" "short"longstatusstring · enumобязательноЯвляется ли позиция всё ещё открытой, закрытой трейдером или ликвидированной.
"opened" "closed" "liquidated"openedmarketstring · 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-000000000000traderstring · 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-000000000000sizestring · int32обязательноРазмер позиции в единицах базового актива, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000notionalstring · int32обязательноОткрытый номинал позиции в валюте котировки, fp9 в сыром виде — размер по цене входа.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000fractionstring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000marginstring · int32обязательноМаржа, в настоящее время обеспечивающая позицию, fp9 в сыром виде. Изменяется вместе с pnl, финансированием и ручными изменениями маржи.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000pnlstring · int32 · nullableобязательноРеализованный pnl, накопленный по каждому событию позиции, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000fundingstring · int32 · nullableобязательноФинансирование, уплаченное (отрицательное) или полученное (положительное) за всё время существования позиции, fp9 в необработанном виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000rolloverFeestring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000settlementOraclePricestring · int32обязательноВсегда 1000000000 (1.0). Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000feestring · int32обязательноТорговые комиссии, взимаемые за всё время существования позиции, fp9 в необработанном виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000feeRatestring · int32обязательноСтавка комиссии, применяемая к позиции, fp9 в виде необработанной дроби (1000000 = 0.1%).
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000exchangedQuotestring · int32обязательноСумма в котируемой валюте, обмененная в результате последнего события, fp9 в необработанном виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000exchangedBasestring · int32обязательноСумма в базовой валюте, обмененная в результате последнего события, fp9 в необработанном виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000directionstring · enumобязательноНаправление позиции.
"long" "short"longeventNamestring · enumобязательноТип последнего события, применённого к позиции.
"addMargin" "removeMargin" "closePosition" "increasePosition" "liquidate" "forceClose" "payFunding"addMarginpnlInEventstring · int32обязательноРеализованный pnl последнего события, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000rawPnlInEventstring · int32обязательноРеализованный pnl последнего события до 60-секундной корректировки, fp9 в сыром виде. Отличается от pnlInEvent только когда корректировка сработала.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000profitAdjustmentAppliedbooleanобязательноОграничила ли 60-секундная корректировка прибыль последнего события — в течение минуты после открытия или увеличения позиции pnl не может вырасти выше того, каким он был в тот момент.
trueholdingTimeMsstring · nullableобязательноКак долго позиция удерживалась до самого последнего закрытия, в миллисекундах, считая от открытия или последнего увеличения. Null для событий, которые не являются закрытиями.
stringfeeInEventstring · int32обязательноКомиссия, взимаемая по самому последнему событию, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000fundingInEventstring · int32обязательноФандинг, урегулированный самым последним событием, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000rolloverFeeInEventstring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000executionFeeRatestring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000executionFeeInEventstring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000executionFeestring · int32обязательноВсегда 0. Сохранено для обратной совместимости.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000timestampstring · date-timeобязательноВременная метка самого последнего события. То же значение, что и lastUpdatedAt.
2026-05-01T12:30:00.000ZisOnchainbooleanобязательноВсегда true. Сохранено для обратной совместимости.
trueroestring · int32обязательноРентабельность капитала позиции — реализованный pnl относительно внесённой маржи, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000scalpingCoefficientstring · int32обязательноДинамический множитель спреда, применённый к позиции, fp9 в необработанном виде (1000000000 = 1.0). Выше 1, когда сделка попала в окно рыночного скальпинга.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000closeReasonstring · nullableобязательноПочему платформа закрыла позицию (например, weekly_session_risk_close). Null для позиций, закрытых трейдером, и для открытых.
stringПосмотреть пример
[
{
"idx": "string",
"txId": "string",
"version": 0,
"openedAt": "2026-05-01T12:30:00.000Z",
"lastUpdatedAt": "2026-05-01T12:30:00.000Z",
"closedAt": "2026-05-01T12:30:00.000Z",
"type": "long",
"status": "opened",
"market": "00000000-0000-4000-8000-000000000000",
"trader": "00000000-0000-4000-8000-000000000000",
"size": "1000000000",
"notional": "1000000000",
"fraction": "1000000000",
"margin": "1000000000",
"pnl": "1000000000",
"funding": "1000000000",
"rolloverFee": "1000000000",
"settlementOraclePrice": "1000000000",
"fee": "1000000000",
"feeRate": "1000000000",
"exchangedQuote": "1000000000",
"exchangedBase": "1000000000",
"direction": "long",
"eventName": "addMargin",
"pnlInEvent": "1000000000",
"rawPnlInEvent": "1000000000",
"profitAdjustmentApplied": true,
"holdingTimeMs": "string",
"feeInEvent": "1000000000",
"fundingInEvent": "1000000000",
"rolloverFeeInEvent": "1000000000",
"executionFeeRate": "1000000000",
"executionFeeInEvent": "1000000000",
"executionFee": "1000000000",
"timestamp": "2026-05-01T12:30:00.000Z",
"isOnchain": true,
"roe": "1000000000",
"scalpingCoefficient": "1000000000",
"closeReason": "string"
}
]totalCountnumberобязательноОбщее количество позиций, соответствующих запросу, по всем страницам.
0[
{
"data": [
{
"idx": "string",
"txId": "string",
"version": 0,
"openedAt": "2026-05-01T12:30:00.000Z",
"lastUpdatedAt": "2026-05-01T12:30:00.000Z",
"closedAt": "2026-05-01T12:30:00.000Z",
"type": "long",
"status": "opened",
"market": "00000000-0000-4000-8000-000000000000",
"trader": "00000000-0000-4000-8000-000000000000",
"size": "1000000000",
"notional": "1000000000",
"fraction": "1000000000",
"margin": "1000000000",
"pnl": "1000000000",
"funding": "1000000000",
"rolloverFee": "1000000000",
"settlementOraclePrice": "1000000000",
"fee": "1000000000",
"feeRate": "1000000000",
"exchangedQuote": "1000000000",
"exchangedBase": "1000000000",
"direction": "long",
"eventName": "addMargin",
"pnlInEvent": "1000000000",
"rawPnlInEvent": "1000000000",
"profitAdjustmentApplied": true,
"holdingTimeMs": "string",
"feeInEvent": "1000000000",
"fundingInEvent": "1000000000",
"rolloverFeeInEvent": "1000000000",
"executionFeeRate": "1000000000",
"executionFeeInEvent": "1000000000",
"executionFee": "1000000000",
"timestamp": "2026-05-01T12:30:00.000Z",
"isOnchain": true,
"roe": "1000000000",
"scalpingCoefficient": "1000000000",
"closeReason": "string"
}
],
"totalCount": 0
}
]