{"format":"opendoc-document","version":1,"url":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory","title":"Получить всю историю позиций","description":"GET /positions/{accountId}/portfolio/history: Каждая позиция аккаунта на всех рынках, как открытая, так и закрытая, сначала новые, с общим количеством для пагинации.","kind":"api-operation","locale":"ru","inLanguage":"ru","translation":{"sourceLanguage":"en","targetLanguage":"ru","status":"complete","translatedUnits":50,"totalUnits":50},"lastModified":"2026-09-28T20:14:21.334Z","revision":"4bcdb0248fec5130d7dca32f21ced4a207c71ff2d711894a920c99e4198fedd7","section":{"title":"Developers","url":"https://docs.upscale.trade/ru/developers"},"representations":{"html":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory","markdown":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory.md","json":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory.json"},"translations":{"en":"https://docs.upscale.trade/developers/operations/getpositionshistory","ru":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory","es":"https://docs.upscale.trade/es/developers/operations/getpositionshistory"},"operation":{"id":"getPositionsHistory","method":"GET","path":"/positions/{accountId}/portfolio/history","summary":"Получить всю историю позиций","description":"Каждая позиция аккаунта на всех рынках, как открытая, так и закрытая, сначала новые, с общим количеством для пагинации.\n\n- Ограничено фазой, в которой аккаунт находится в данный момент: позиции из более ранней фазы не возвращаются.","tags":["Trading"],"tagLabels":{"Accounts":"Аккаунты","Config":"Конфигурация","Trading":"Торговля"},"deprecated":false,"parameters":[{"name":"accountId","location":"path","schema":{"type":"string · uuid","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid"},"properties":[],"variants":[]},"type":"string · uuid","required":true,"description":"Идентификатор торгового аккаунта. Должен принадлежать вызывающей стороне.","example":"00000000-0000-4000-8000-000000000000"},{"name":"limit","location":"query","schema":{"type":"integer","types":["integer"],"example":20,"default":20,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"minimum":1,"maximum":100},"properties":[],"variants":[]},"type":"integer","required":false,"description":"Размер страницы: сколько записей вернуть.","example":"20"},{"name":"offset","location":"query","schema":{"type":"integer","types":["integer"],"example":0,"default":0,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"minimum":0,"maximum":9007199254740991},"properties":[],"variants":[]},"type":"integer","required":false,"description":"Сколько записей пропустить перед страницей.","example":"0"}],"bodies":[],"responses":[{"status":"401","description":"Неавторизовано","properties":[],"headers":[]},{"status":"403","description":"Аккаунт принадлежит другому пользователю (`account_access_denied`), или запрос аутентифицирован с помощью API-ключа, тогда как `api_trading` отключён на аккаунте (`api_trading_not_enabled`).","properties":[],"headers":[]},{"status":"404","description":"Нет аккаунта с этим идентификатором.","properties":[],"headers":[]},{"status":"429","description":"Превышен лимит частоты запросов API-ключа (`api_key_rate_limit_exceeded`). `Retry-After` указывает, когда вернуться; тело содержит бакет (`read` / `write`), окно, которое сработало, его лимит и `retryAt`.","properties":[],"headers":[]},{"status":"default","description":"Ответ","mediaType":"application/json","properties":[],"schema":{"type":"object[]","types":["array"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"object","types":["object"],"reference":"#/components/schemas/PositionsPaginatedResponse","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[{"name":"data","type":"object[]","required":true,"description":"Запрошенная страница позиций, сначала самые новые.","example":"[\n  {\n    \"idx\": \"string\",\n    \"txId\": \"string\",\n    \"version\": 0,\n    \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"type\": \"long\",\n    \"status\": \"opened\",\n    \"market\": \"00000000-0000-4000-8000-000000000000\",\n    \"trader\": \"00000000-0000-4000-8000-000000000000\",\n    \"size\": \"1000000000\",\n    \"notional\": \"1000000000\",\n    \"fraction\": \"1000000000\",\n    \"margin\": \"1000000000\",\n    \"pnl\": \"1000000000\",\n    \"funding\": \"1000000000\",\n    \"rolloverFee\": \"1000000000\",\n    \"settlementOraclePrice\": \"1000000000\",\n    \"fee\": \"1000000000\",\n    \"feeRate\": \"1000000000\",\n    \"exchangedQuote\": \"1000000000\",\n    \"exchangedBase\": \"1000000000\",\n    \"direction\": \"long\",\n    \"eventName\": \"addMargin\",\n    \"pnlInEvent\": \"1000000000\",\n    \"rawPnlInEvent\": \"1000000000\",\n    \"profitAdjustmentApplied\": true,\n    \"holdingTimeMs\": \"string\",\n    \"feeInEvent\": \"1000000000\",\n    \"fundingInEvent\": \"1000000000\",\n    \"rolloverFeeInEvent\": \"1000000000\",\n    \"executionFeeRate\": \"1000000000\",\n    \"executionFeeInEvent\": \"1000000000\",\n    \"executionFee\": \"1000000000\",\n    \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n    \"isOnchain\": true,\n    \"roe\": \"1000000000\",\n    \"scalpingCoefficient\": \"1000000000\",\n    \"closeReason\": \"string\"\n  }\n]","schema":{"type":"object[]","types":["array"],"description":"Запрошенная страница позиций, сначала самые новые.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"object","types":["object"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[{"name":"idx","type":"string · nullable","required":true,"description":"Идентификатор позиции. То же значение, что и `txId`.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Идентификатор позиции. То же значение, что и `txId`.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"txId","type":"string · nullable","required":true,"description":"Идентификатор позиции. Сохранён для обратной совместимости, всегда равен `idx`.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Идентификатор позиции. Сохранён для обратной совместимости, всегда равен `idx`.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"version","type":"number","required":true,"description":"Ревизия позиции: увеличивается при каждом событии, применённом к ней.","example":"0","schema":{"type":"number","types":["number"],"description":"Ревизия позиции: увеличивается при каждом событии, применённом к ней.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"openedAt","type":"string · date-time","required":true,"description":"Когда позиция была открыта.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Когда позиция была открыта.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"lastUpdatedAt","type":"string · date-time","required":true,"description":"Когда к позиции было применено последнее событие.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Когда к позиции было применено последнее событие.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"closedAt","type":"string · date-time · nullable","required":true,"description":"Когда позиция была закрыта; null, пока она всё ещё открыта.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time · nullable","types":["string"],"description":"Когда позиция была закрыта; null, пока она всё ещё открыта.","example":"2026-05-01T12:30:00.000Z","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"type","type":"string · enum","required":true,"description":"Направление позиции. То же значение, что и `direction`.","example":"long","schema":{"type":"string · enum","types":["string"],"description":"Направление позиции. То же значение, что и `direction`.","enum":["long","short"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"status","type":"string · enum","required":true,"description":"Является ли позиция всё ещё открытой, закрытой трейдером или ликвидированной.","example":"opened","schema":{"type":"string · enum","types":["string"],"description":"Является ли позиция всё ещё открытой, закрытой трейдером или ликвидированной.","enum":["opened","closed","liquidated"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"market","type":"string · uuid","required":true,"description":"Рынок, на котором удерживается позиция.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Рынок, на котором удерживается позиция.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"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})$"},"properties":[],"variants":[]}},{"name":"trader","type":"string · uuid","required":true,"description":"Счёт трейдера, которому принадлежит позиция.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Счёт трейдера, которому принадлежит позиция.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"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})$"},"properties":[],"variants":[]}},{"name":"size","type":"string · int32","required":true,"description":"Размер позиции в единицах базового актива, fp9 в сыром виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Размер позиции в единицах базового актива, fp9 в сыром виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"notional","type":"string · int32","required":true,"description":"Открытый номинал позиции в валюте котировки, fp9 в сыром виде — размер по цене входа.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Открытый номинал позиции в валюте котировки, fp9 в сыром виде — размер по цене входа.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fraction","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"margin","type":"string · int32","required":true,"description":"Маржа, в настоящее время обеспечивающая позицию, fp9 в сыром виде. Изменяется вместе с pnl, финансированием и ручными изменениями маржи.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Маржа, в настоящее время обеспечивающая позицию, fp9 в сыром виде. Изменяется вместе с pnl, финансированием и ручными изменениями маржи.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"pnl","type":"string · int32 · nullable","required":true,"description":"Реализованный pnl, накопленный по каждому событию позиции, fp9 в сыром виде.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Реализованный pnl, накопленный по каждому событию позиции, fp9 в сыром виде.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"funding","type":"string · int32 · nullable","required":true,"description":"Финансирование, уплаченное (отрицательное) или полученное (положительное) за всё время существования позиции, fp9 в необработанном виде.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Финансирование, уплаченное (отрицательное) или полученное (положительное) за всё время существования позиции, fp9 в необработанном виде.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rolloverFee","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"settlementOraclePrice","type":"string · int32","required":true,"description":"Всегда `1000000000` (1.0). Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `1000000000` (1.0). Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fee","type":"string · int32","required":true,"description":"Торговые комиссии, взимаемые за всё время существования позиции, fp9 в необработанном виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Торговые комиссии, взимаемые за всё время существования позиции, fp9 в необработанном виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"feeRate","type":"string · int32","required":true,"description":"Ставка комиссии, применяемая к позиции, fp9 в виде необработанной дроби (`1000000` = 0.1%).","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Ставка комиссии, применяемая к позиции, fp9 в виде необработанной дроби (`1000000` = 0.1%).","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"exchangedQuote","type":"string · int32","required":true,"description":"Сумма в котируемой валюте, обмененная в результате последнего события, fp9 в необработанном виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Сумма в котируемой валюте, обмененная в результате последнего события, fp9 в необработанном виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"exchangedBase","type":"string · int32","required":true,"description":"Сумма в базовой валюте, обмененная в результате последнего события, fp9 в необработанном виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Сумма в базовой валюте, обмененная в результате последнего события, fp9 в необработанном виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"direction","type":"string · enum","required":true,"description":"Направление позиции.","example":"long","schema":{"type":"string · enum","types":["string"],"description":"Направление позиции.","enum":["long","short"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"eventName","type":"string · enum","required":true,"description":"Тип последнего события, применённого к позиции.","example":"addMargin","schema":{"type":"string · enum","types":["string"],"description":"Тип последнего события, применённого к позиции.","enum":["addMargin","removeMargin","closePosition","increasePosition","liquidate","forceClose","payFunding"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"pnlInEvent","type":"string · int32","required":true,"description":"Реализованный pnl последнего события, fp9 в сыром виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Реализованный pnl последнего события, fp9 в сыром виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rawPnlInEvent","type":"string · int32","required":true,"description":"Реализованный pnl последнего события до 60-секундной корректировки, fp9 в сыром виде. Отличается от `pnlInEvent` только когда корректировка сработала.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Реализованный pnl последнего события до 60-секундной корректировки, fp9 в сыром виде. Отличается от `pnlInEvent` только когда корректировка сработала.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"profitAdjustmentApplied","type":"boolean","required":true,"description":"Ограничила ли 60-секундная корректировка прибыль последнего события — в течение минуты после открытия или увеличения позиции pnl не может вырасти выше того, каким он был в тот момент.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Ограничила ли 60-секундная корректировка прибыль последнего события — в течение минуты после открытия или увеличения позиции pnl не может вырасти выше того, каким он был в тот момент.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"holdingTimeMs","type":"string · nullable","required":true,"description":"Как долго позиция удерживалась до самого последнего закрытия, в миллисекундах, считая от открытия или последнего увеличения. Null для событий, которые не являются закрытиями.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Как долго позиция удерживалась до самого последнего закрытия, в миллисекундах, считая от открытия или последнего увеличения. Null для событий, которые не являются закрытиями.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"feeInEvent","type":"string · int32","required":true,"description":"Комиссия, взимаемая по самому последнему событию, fp9 в сыром виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Комиссия, взимаемая по самому последнему событию, fp9 в сыром виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fundingInEvent","type":"string · int32","required":true,"description":"Фандинг, урегулированный самым последним событием, fp9 в сыром виде.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Фандинг, урегулированный самым последним событием, fp9 в сыром виде.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rolloverFeeInEvent","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFeeRate","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFeeInEvent","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFee","type":"string · int32","required":true,"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Всегда `0`. Сохранено для обратной совместимости.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"timestamp","type":"string · date-time","required":true,"description":"Временная метка самого последнего события. То же значение, что и `lastUpdatedAt`.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Временная метка самого последнего события. То же значение, что и `lastUpdatedAt`.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"isOnchain","type":"boolean","required":true,"description":"Всегда `true`. Сохранено для обратной совместимости.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Всегда `true`. Сохранено для обратной совместимости.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"roe","type":"string · int32","required":true,"description":"Рентабельность капитала позиции — реализованный pnl относительно внесённой маржи, fp9 в виде необработанной дроби.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Рентабельность капитала позиции — реализованный pnl относительно внесённой маржи, fp9 в виде необработанной дроби.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"scalpingCoefficient","type":"string · int32","required":true,"description":"Динамический множитель спреда, применённый к позиции, fp9 в необработанном виде (`1000000000` = 1.0). Выше 1, когда сделка попала в окно рыночного скальпинга.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Динамический множитель спреда, применённый к позиции, fp9 в необработанном виде (`1000000000` = 1.0). Выше 1, когда сделка попала в окно рыночного скальпинга.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"closeReason","type":"string · nullable","required":true,"description":"Почему платформа закрыла позицию (например, `weekly_session_risk_close`). Null для позиций, закрытых трейдером, и для открытых.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Почему платформа закрыла позицию (например, `weekly_session_risk_close`). Null для позиций, закрытых трейдером, и для открытых.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}}],"variants":[]},"variants":[]}},{"name":"totalCount","type":"number","required":true,"description":"Общее количество позиций, соответствующих запросу, по всем страницам.","example":"0","schema":{"type":"number","types":["number"],"description":"Общее количество позиций, соответствующих запросу, по всем страницам.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}}],"variants":[]},"variants":[]},"example":"[\n  {\n    \"data\": [\n      {\n        \"idx\": \"string\",\n        \"txId\": \"string\",\n        \"version\": 0,\n        \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"type\": \"long\",\n        \"status\": \"opened\",\n        \"market\": \"00000000-0000-4000-8000-000000000000\",\n        \"trader\": \"00000000-0000-4000-8000-000000000000\",\n        \"size\": \"1000000000\",\n        \"notional\": \"1000000000\",\n        \"fraction\": \"1000000000\",\n        \"margin\": \"1000000000\",\n        \"pnl\": \"1000000000\",\n        \"funding\": \"1000000000\",\n        \"rolloverFee\": \"1000000000\",\n        \"settlementOraclePrice\": \"1000000000\",\n        \"fee\": \"1000000000\",\n        \"feeRate\": \"1000000000\",\n        \"exchangedQuote\": \"1000000000\",\n        \"exchangedBase\": \"1000000000\",\n        \"direction\": \"long\",\n        \"eventName\": \"addMargin\",\n        \"pnlInEvent\": \"1000000000\",\n        \"rawPnlInEvent\": \"1000000000\",\n        \"profitAdjustmentApplied\": true,\n        \"holdingTimeMs\": \"string\",\n        \"feeInEvent\": \"1000000000\",\n        \"fundingInEvent\": \"1000000000\",\n        \"rolloverFeeInEvent\": \"1000000000\",\n        \"executionFeeRate\": \"1000000000\",\n        \"executionFeeInEvent\": \"1000000000\",\n        \"executionFee\": \"1000000000\",\n        \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n        \"isOnchain\": true,\n        \"roe\": \"1000000000\",\n        \"scalpingCoefficient\": \"1000000000\",\n        \"closeReason\": \"string\"\n      }\n    ],\n    \"totalCount\": 0\n  }\n]","headers":[]}],"security":[{"name":"bearer","type":"http · bearer","description":"Персональный API-ключ с префиксом `usk_`.","required":true,"scopes":[]}],"codeSamples":[{"label":"cURL","language":"bash","source":"curl --request GET 'https://api.upscale.trade/positions/{accountId}/portfolio/history' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer YOUR_API_KEY'"},{"label":"JavaScript","language":"javascript","source":"const response = await fetch(\"https://api.upscale.trade/positions/{accountId}/portfolio/history\", {\n  method: \"GET\",\n  headers: {\n    \"Accept\": \"application/json\",\n    \"Authorization\": \"Bearer YOUR_API_KEY\"\n  },\n});\nconsole.log(response.status, await response.text());"},{"label":"Python","language":"python","source":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.upscale.trade/positions/{accountId}/portfolio/history\",\n    headers={\"Accept\":\"application/json\",\"Authorization\":\"Bearer YOUR_API_KEY\"},\n    timeout=30,\n)\nprint(response.status_code, response.text)"}]},"breadcrumbs":[{"title":"Что такое проп-трейдинг","url":"https://docs.upscale.trade/ru"},{"title":"Developers","url":"https://docs.upscale.trade/ru/developers"},{"title":"Получить всю историю позиций","url":"https://docs.upscale.trade/ru/developers/operations/getpositionshistory"}],"headings":[{"depth":2,"id":"authorization","title":"Авторизация"},{"depth":2,"id":"parameters","title":"Параметры"},{"depth":2,"id":"examples","title":"Примеры"},{"depth":2,"id":"responses","title":"Ответы"}],"markdown":"# Получить всю историю позиций\n\n`GET /positions/{accountId}/portfolio/history`\n\nКаждая позиция аккаунта на всех рынках, как открытая, так и закрытая, сначала новые, с общим количеством для пагинации.\n\n- Ограничено фазой, в которой аккаунт находится в данный момент: позиции из более ранней фазы не возвращаются.\n\n<a id=\"authorization\"></a>\n\n## Авторизация\n\nbearer: http · bearer (обязательно). Персональный API-ключ с префиксом `usk_`.\n\n<a id=\"parameters\"></a>\n\n## Параметры\n\n- path: accountId (string · uuid; обязательно). Идентификатор торгового аккаунта. Должен принадлежать вызывающей стороне.\n\nТип: string · uuid\n\nformat: uuid\n\n- query: limit (integer; необязательно). Размер страницы: сколько записей вернуть.\n\nТип: integer\n\nПример: 20\n\nПо умолчанию: 20\n\nminimum: 1\n\nmaximum: 100\n\n- query: offset (integer; необязательно). Сколько записей пропустить перед страницей.\n\nТип: integer\n\nПример: 0\n\nПо умолчанию: 0\n\nminimum: 0\n\nmaximum: 9007199254740991\n\n<a id=\"example-curl\"></a>\n\n## Пример · cURL\n\n```bash\ncurl --request GET 'https://api.upscale.trade/positions/{accountId}/portfolio/history' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer YOUR_API_KEY'\n```\n\n<a id=\"example-javascript\"></a>\n\n## Пример · JavaScript\n\n```javascript\nconst response = await fetch(\"https://api.upscale.trade/positions/{accountId}/portfolio/history\", {\n  method: \"GET\",\n  headers: {\n    \"Accept\": \"application/json\",\n    \"Authorization\": \"Bearer YOUR_API_KEY\"\n  },\n});\nconsole.log(response.status, await response.text());\n```\n\n<a id=\"example-python\"></a>\n\n## Пример · Python\n\n```python\nimport requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.upscale.trade/positions/{accountId}/portfolio/history\",\n    headers={\"Accept\":\"application/json\",\"Authorization\":\"Bearer YOUR_API_KEY\"},\n    timeout=30,\n)\nprint(response.status_code, response.text)\n```\n\n<a id=\"response-401\"></a>\n\n## Ответ 401\n\n**401**  — Неавторизовано\n\n<a id=\"response-403\"></a>\n\n## Ответ 403\n\n**403**  — Аккаунт принадлежит другому пользователю (`account_access_denied`), или запрос аутентифицирован с помощью API-ключа, тогда как `api_trading` отключён на аккаунте (`api_trading_not_enabled`).\n\n<a id=\"response-404\"></a>\n\n## Ответ 404\n\n**404**  — Нет аккаунта с этим идентификатором.\n\n<a id=\"response-429\"></a>\n\n## Ответ 429\n\n**429**  — Превышен лимит частоты запросов API-ключа (`api_key_rate_limit_exceeded`). `Retry-After` указывает, когда вернуться; тело содержит бакет (`read` / `write`), окно, которое сработало, его лимит и `retryAt`.\n\n<a id=\"response-default-positionspaginatedresponse\"></a>\n\n## Ответ default · PositionsPaginatedResponse\n\n**default** application/json — Ответ\n\nТип: object[]\n\n[]Схема: PositionsPaginatedResponse\n\n[]Тип: object\n\n[]Обязательные поля: data, totalCount\n\n[]Типы обязательных полей: data (object[]; обязательно), totalCount (number; обязательно)\n\n- []data (object[]; обязательно)\n\n[]data пример: [\n  {\n    \"idx\": \"string\",\n    \"txId\": \"string\",\n    \"version\": 0,\n    \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"type\": \"long\",\n    \"status\": \"opened\",\n    \"market\": \"00000000-0000-4000-8000-000000000000\",\n    \"trader\": \"00000000-0000-4000-8000-000000000000\",\n    \"size\": \"1000000000\",\n    \"notional\": \"1000000000\",\n    \"fraction\": \"1000000000\",\n    \"margin\": \"1000000000\",\n    \"pnl\": \"1000000000\",\n    \"funding\": \"1000000000\",\n    \"rolloverFee\": \"1000000000\",\n    \"settlementOraclePrice\": \"1000000000\",\n    \"fee\": \"1000000000\",\n    \"feeRate\": \"1000000000\",\n    \"exchangedQuote\": \"1000000000\",\n    \"exchangedBase\": \"1000000000\",\n    \"direction\": \"long\",\n    \"eventName\": \"addMargin\",\n    \"pnlInEvent\": \"1000000000\",\n    \"rawPnlInEvent\": \"1000000000\",\n    \"profitAdjustmentApplied\": true,\n    \"holdingTimeMs\": \"string\",\n    \"feeInEvent\": \"1000000000\",\n    \"fundingInEvent\": \"1000000000\",\n    \"rolloverFeeInEvent\": \"1000000000\",\n    \"executionFeeRate\": \"1000000000\",\n    \"executionFeeInEvent\": \"1000000000\",\n    \"executionFee\": \"1000000000\",\n    \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n    \"isOnchain\": true,\n    \"roe\": \"1000000000\",\n    \"scalpingCoefficient\": \"1000000000\",\n    \"closeReason\": \"string\"\n  }\n]\n\n[]data.Тип: object[]\n\n[]data.Запрошенная страница позиций, сначала самые новые.\n\n[]data.[]Тип: object\n\n[]data.[]Обязательные поля: idx, txId, version, openedAt, lastUpdatedAt, closedAt, type, status, market, trader, size, notional, fraction, margin, pnl, funding, rolloverFee, settlementOraclePrice, fee, feeRate, exchangedQuote, exchangedBase, direction, eventName, pnlInEvent, rawPnlInEvent, profitAdjustmentApplied, holdingTimeMs, feeInEvent, fundingInEvent, rolloverFeeInEvent, executionFeeRate, executionFeeInEvent, executionFee, timestamp, isOnchain, roe, scalpingCoefficient, closeReason\n\n[]data.[]Типы обязательных полей: idx (string · nullable; обязательно), txId (string · nullable; обязательно), version (number; обязательно), openedAt (string · date-time; обязательно), lastUpdatedAt (string · date-time; обязательно), closedAt (string · date-time · nullable; обязательно), type (string · enum; обязательно), status (string · enum; обязательно), market (string · uuid; обязательно), trader (string · uuid; обязательно), size (string · int32; обязательно), notional (string · int32; обязательно), fraction (string · int32; обязательно), margin (string · int32; обязательно), pnl (string · int32 · nullable; обязательно), funding (string · int32 · nullable; обязательно), rolloverFee (string · int32; обязательно), settlementOraclePrice (string · int32; обязательно), fee (string · int32; обязательно), feeRate (string · int32; обязательно), exchangedQuote (string · int32; обязательно), exchangedBase (string · int32; обязательно), direction (string · enum; обязательно), eventName (string · enum; обязательно), pnlInEvent (string · int32; обязательно), rawPnlInEvent (string · int32; обязательно), profitAdjustmentApplied (boolean; обязательно), holdingTimeMs (string · nullable; обязательно), feeInEvent (string · int32; обязательно), fundingInEvent (string · int32; обязательно), rolloverFeeInEvent (string · int32; обязательно), executionFeeRate (string · int32; обязательно), executionFeeInEvent (string · int32; обязательно), executionFee (string · int32; обязательно), timestamp (string · date-time; обязательно), isOnchain (boolean; обязательно), roe (string · int32; обязательно), scalpingCoefficient (string · int32; обязательно), closeReason (string · nullable; обязательно)\n\n- []data.[]idx (string · nullable; обязательно)\n\n[]data.[]idx пример: string\n\n[]data.[]idx.Тип: string · nullable\n\n[]data.[]idx.Идентификатор позиции. То же значение, что и `txId`.\n\n- []data.[]txId (string · nullable; обязательно)\n\n[]data.[]txId пример: string\n\n[]data.[]txId.Тип: string · nullable\n\n[]data.[]txId.Идентификатор позиции. Сохранён для обратной совместимости, всегда равен `idx`.\n\n- []data.[]version (number; обязательно)\n\n[]data.[]version пример: 0\n\n[]data.[]version.Тип: number\n\n[]data.[]version.Ревизия позиции: увеличивается при каждом событии, применённом к ней.\n\n- []data.[]openedAt (string · date-time; обязательно)\n\n[]data.[]openedAt пример: 2026-05-01T12:30:00.000Z\n\n[]data.[]openedAt.Тип: string · date-time\n\n[]data.[]openedAt.Когда позиция была открыта.\n\n[]data.[]openedAt.format: date-time\n\n- []data.[]lastUpdatedAt (string · date-time; обязательно)\n\n[]data.[]lastUpdatedAt пример: 2026-05-01T12:30:00.000Z\n\n[]data.[]lastUpdatedAt.Тип: string · date-time\n\n[]data.[]lastUpdatedAt.Когда к позиции было применено последнее событие.\n\n[]data.[]lastUpdatedAt.format: date-time\n\n- []data.[]closedAt (string · date-time · nullable; обязательно)\n\n[]data.[]closedAt пример: 2026-05-01T12:30:00.000Z\n\n[]data.[]closedAt.Тип: string · date-time · nullable\n\n[]data.[]closedAt.Когда позиция была закрыта; null, пока она всё ещё открыта.\n\n[]data.[]closedAt.format: date-time\n\n- []data.[]type (string · enum; обязательно)\n\n[]data.[]type пример: long\n\n[]data.[]type.Тип: string · enum\n\n[]data.[]type.Направление позиции. То же значение, что и `direction`.\n\n[]data.[]type.Допустимые значения: [\"long\",\"short\"]\n\n- []data.[]status (string · enum; обязательно)\n\n[]data.[]status пример: opened\n\n[]data.[]status.Тип: string · enum\n\n[]data.[]status.Является ли позиция всё ещё открытой, закрытой трейдером или ликвидированной.\n\n[]data.[]status.Допустимые значения: [\"opened\",\"closed\",\"liquidated\"]\n\n- []data.[]market (string · uuid; обязательно)\n\n[]data.[]market пример: 00000000-0000-4000-8000-000000000000\n\n[]data.[]market.Тип: string · uuid\n\n[]data.[]market.Рынок, на котором удерживается позиция.\n\n[]data.[]market.format: uuid\n\n[]data.[]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})$\n\n- []data.[]trader (string · uuid; обязательно)\n\n[]data.[]trader пример: 00000000-0000-4000-8000-000000000000\n\n[]data.[]trader.Тип: string · uuid\n\n[]data.[]trader.Счёт трейдера, которому принадлежит позиция.\n\n[]data.[]trader.format: uuid\n\n[]data.[]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})$\n\n- []data.[]size (string · int32; обязательно)\n\n[]data.[]size пример: 1000000000\n\n[]data.[]size.Тип: string · int32\n\n[]data.[]size.Размер позиции в единицах базового актива, fp9 в сыром виде.\n\n[]data.[]size.format: int32\n\n[]data.[]size.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]notional (string · int32; обязательно)\n\n[]data.[]notional пример: 1000000000\n\n[]data.[]notional.Тип: string · int32\n\n[]data.[]notional.Открытый номинал позиции в валюте котировки, fp9 в сыром виде — размер по цене входа.\n\n[]data.[]notional.format: int32\n\n[]data.[]notional.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]fraction (string · int32; обязательно)\n\n[]data.[]fraction пример: 1000000000\n\n[]data.[]fraction.Тип: string · int32\n\n[]data.[]fraction.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]fraction.format: int32\n\n[]data.[]fraction.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]margin (string · int32; обязательно)\n\n[]data.[]margin пример: 1000000000\n\n[]data.[]margin.Тип: string · int32\n\n[]data.[]margin.Маржа, в настоящее время обеспечивающая позицию, fp9 в сыром виде. Изменяется вместе с pnl, финансированием и ручными изменениями маржи.\n\n[]data.[]margin.format: int32\n\n[]data.[]margin.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]pnl (string · int32 · nullable; обязательно)\n\n[]data.[]pnl пример: 1000000000\n\n[]data.[]pnl.Тип: string · int32 · nullable\n\n[]data.[]pnl.Реализованный pnl, накопленный по каждому событию позиции, fp9 в сыром виде.\n\n[]data.[]pnl.format: int32\n\n[]data.[]pnl.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]funding (string · int32 · nullable; обязательно)\n\n[]data.[]funding пример: 1000000000\n\n[]data.[]funding.Тип: string · int32 · nullable\n\n[]data.[]funding.Финансирование, уплаченное (отрицательное) или полученное (положительное) за всё время существования позиции, fp9 в необработанном виде.\n\n[]data.[]funding.format: int32\n\n[]data.[]funding.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]rolloverFee (string · int32; обязательно)\n\n[]data.[]rolloverFee пример: 1000000000\n\n[]data.[]rolloverFee.Тип: string · int32\n\n[]data.[]rolloverFee.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]rolloverFee.format: int32\n\n[]data.[]rolloverFee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]settlementOraclePrice (string · int32; обязательно)\n\n[]data.[]settlementOraclePrice пример: 1000000000\n\n[]data.[]settlementOraclePrice.Тип: string · int32\n\n[]data.[]settlementOraclePrice.Всегда `1000000000` (1.0). Сохранено для обратной совместимости.\n\n[]data.[]settlementOraclePrice.format: int32\n\n[]data.[]settlementOraclePrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]fee (string · int32; обязательно)\n\n[]data.[]fee пример: 1000000000\n\n[]data.[]fee.Тип: string · int32\n\n[]data.[]fee.Торговые комиссии, взимаемые за всё время существования позиции, fp9 в необработанном виде.\n\n[]data.[]fee.format: int32\n\n[]data.[]fee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]feeRate (string · int32; обязательно)\n\n[]data.[]feeRate пример: 1000000000\n\n[]data.[]feeRate.Тип: string · int32\n\n[]data.[]feeRate.Ставка комиссии, применяемая к позиции, fp9 в виде необработанной дроби (`1000000` = 0.1%).\n\n[]data.[]feeRate.format: int32\n\n[]data.[]feeRate.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]exchangedQuote (string · int32; обязательно)\n\n[]data.[]exchangedQuote пример: 1000000000\n\n[]data.[]exchangedQuote.Тип: string · int32\n\n[]data.[]exchangedQuote.Сумма в котируемой валюте, обмененная в результате последнего события, fp9 в необработанном виде.\n\n[]data.[]exchangedQuote.format: int32\n\n[]data.[]exchangedQuote.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]exchangedBase (string · int32; обязательно)\n\n[]data.[]exchangedBase пример: 1000000000\n\n[]data.[]exchangedBase.Тип: string · int32\n\n[]data.[]exchangedBase.Сумма в базовой валюте, обмененная в результате последнего события, fp9 в необработанном виде.\n\n[]data.[]exchangedBase.format: int32\n\n[]data.[]exchangedBase.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]direction (string · enum; обязательно)\n\n[]data.[]direction пример: long\n\n[]data.[]direction.Тип: string · enum\n\n[]data.[]direction.Направление позиции.\n\n[]data.[]direction.Допустимые значения: [\"long\",\"short\"]\n\n- []data.[]eventName (string · enum; обязательно)\n\n[]data.[]eventName пример: addMargin\n\n[]data.[]eventName.Тип: string · enum\n\n[]data.[]eventName.Тип последнего события, применённого к позиции.\n\n[]data.[]eventName.Допустимые значения: [\"addMargin\",\"removeMargin\",\"closePosition\",\"increasePosition\",\"liquidate\",\"forceClose\",\"payFunding\"]\n\n- []data.[]pnlInEvent (string · int32; обязательно)\n\n[]data.[]pnlInEvent пример: 1000000000\n\n[]data.[]pnlInEvent.Тип: string · int32\n\n[]data.[]pnlInEvent.Реализованный pnl последнего события, fp9 в сыром виде.\n\n[]data.[]pnlInEvent.format: int32\n\n[]data.[]pnlInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]rawPnlInEvent (string · int32; обязательно)\n\n[]data.[]rawPnlInEvent пример: 1000000000\n\n[]data.[]rawPnlInEvent.Тип: string · int32\n\n[]data.[]rawPnlInEvent.Реализованный pnl последнего события до 60-секундной корректировки, fp9 в сыром виде. Отличается от `pnlInEvent` только когда корректировка сработала.\n\n[]data.[]rawPnlInEvent.format: int32\n\n[]data.[]rawPnlInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]profitAdjustmentApplied (boolean; обязательно)\n\n[]data.[]profitAdjustmentApplied пример: true\n\n[]data.[]profitAdjustmentApplied.Тип: boolean\n\n[]data.[]profitAdjustmentApplied.Ограничила ли 60-секундная корректировка прибыль последнего события — в течение минуты после открытия или увеличения позиции pnl не может вырасти выше того, каким он был в тот момент.\n\n- []data.[]holdingTimeMs (string · nullable; обязательно)\n\n[]data.[]holdingTimeMs пример: string\n\n[]data.[]holdingTimeMs.Тип: string · nullable\n\n[]data.[]holdingTimeMs.Как долго позиция удерживалась до самого последнего закрытия, в миллисекундах, считая от открытия или последнего увеличения. Null для событий, которые не являются закрытиями.\n\n- []data.[]feeInEvent (string · int32; обязательно)\n\n[]data.[]feeInEvent пример: 1000000000\n\n[]data.[]feeInEvent.Тип: string · int32\n\n[]data.[]feeInEvent.Комиссия, взимаемая по самому последнему событию, fp9 в сыром виде.\n\n[]data.[]feeInEvent.format: int32\n\n[]data.[]feeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]fundingInEvent (string · int32; обязательно)\n\n[]data.[]fundingInEvent пример: 1000000000\n\n[]data.[]fundingInEvent.Тип: string · int32\n\n[]data.[]fundingInEvent.Фандинг, урегулированный самым последним событием, fp9 в сыром виде.\n\n[]data.[]fundingInEvent.format: int32\n\n[]data.[]fundingInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]rolloverFeeInEvent (string · int32; обязательно)\n\n[]data.[]rolloverFeeInEvent пример: 1000000000\n\n[]data.[]rolloverFeeInEvent.Тип: string · int32\n\n[]data.[]rolloverFeeInEvent.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]rolloverFeeInEvent.format: int32\n\n[]data.[]rolloverFeeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]executionFeeRate (string · int32; обязательно)\n\n[]data.[]executionFeeRate пример: 1000000000\n\n[]data.[]executionFeeRate.Тип: string · int32\n\n[]data.[]executionFeeRate.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]executionFeeRate.format: int32\n\n[]data.[]executionFeeRate.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]executionFeeInEvent (string · int32; обязательно)\n\n[]data.[]executionFeeInEvent пример: 1000000000\n\n[]data.[]executionFeeInEvent.Тип: string · int32\n\n[]data.[]executionFeeInEvent.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]executionFeeInEvent.format: int32\n\n[]data.[]executionFeeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]executionFee (string · int32; обязательно)\n\n[]data.[]executionFee пример: 1000000000\n\n[]data.[]executionFee.Тип: string · int32\n\n[]data.[]executionFee.Всегда `0`. Сохранено для обратной совместимости.\n\n[]data.[]executionFee.format: int32\n\n[]data.[]executionFee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]timestamp (string · date-time; обязательно)\n\n[]data.[]timestamp пример: 2026-05-01T12:30:00.000Z\n\n[]data.[]timestamp.Тип: string · date-time\n\n[]data.[]timestamp.Временная метка самого последнего события. То же значение, что и `lastUpdatedAt`.\n\n[]data.[]timestamp.format: date-time\n\n- []data.[]isOnchain (boolean; обязательно)\n\n[]data.[]isOnchain пример: true\n\n[]data.[]isOnchain.Тип: boolean\n\n[]data.[]isOnchain.Всегда `true`. Сохранено для обратной совместимости.\n\n- []data.[]roe (string · int32; обязательно)\n\n[]data.[]roe пример: 1000000000\n\n[]data.[]roe.Тип: string · int32\n\n[]data.[]roe.Рентабельность капитала позиции — реализованный pnl относительно внесённой маржи, fp9 в виде необработанной дроби.\n\n[]data.[]roe.format: int32\n\n[]data.[]roe.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]scalpingCoefficient (string · int32; обязательно)\n\n[]data.[]scalpingCoefficient пример: 1000000000\n\n[]data.[]scalpingCoefficient.Тип: string · int32\n\n[]data.[]scalpingCoefficient.Динамический множитель спреда, применённый к позиции, fp9 в необработанном виде (`1000000000` = 1.0). Выше 1, когда сделка попала в окно рыночного скальпинга.\n\n[]data.[]scalpingCoefficient.format: int32\n\n[]data.[]scalpingCoefficient.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []data.[]closeReason (string · nullable; обязательно)\n\n[]data.[]closeReason пример: string\n\n[]data.[]closeReason.Тип: string · nullable\n\n[]data.[]closeReason.Почему платформа закрыла позицию (например, `weekly_session_risk_close`). Null для позиций, закрытых трейдером, и для открытых.\n\n- []totalCount (number; обязательно)\n\n[]totalCount пример: 0\n\n[]totalCount.Тип: number\n\n[]totalCount.Общее количество позиций, соответствующих запросу, по всем страницам.\n\nПример\n\n\n\n```json\n[\n  {\n    \"data\": [\n      {\n        \"idx\": \"string\",\n        \"txId\": \"string\",\n        \"version\": 0,\n        \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n        \"type\": \"long\",\n        \"status\": \"opened\",\n        \"market\": \"00000000-0000-4000-8000-000000000000\",\n        \"trader\": \"00000000-0000-4000-8000-000000000000\",\n        \"size\": \"1000000000\",\n        \"notional\": \"1000000000\",\n        \"fraction\": \"1000000000\",\n        \"margin\": \"1000000000\",\n        \"pnl\": \"1000000000\",\n        \"funding\": \"1000000000\",\n        \"rolloverFee\": \"1000000000\",\n        \"settlementOraclePrice\": \"1000000000\",\n        \"fee\": \"1000000000\",\n        \"feeRate\": \"1000000000\",\n        \"exchangedQuote\": \"1000000000\",\n        \"exchangedBase\": \"1000000000\",\n        \"direction\": \"long\",\n        \"eventName\": \"addMargin\",\n        \"pnlInEvent\": \"1000000000\",\n        \"rawPnlInEvent\": \"1000000000\",\n        \"profitAdjustmentApplied\": true,\n        \"holdingTimeMs\": \"string\",\n        \"feeInEvent\": \"1000000000\",\n        \"fundingInEvent\": \"1000000000\",\n        \"rolloverFeeInEvent\": \"1000000000\",\n        \"executionFeeRate\": \"1000000000\",\n        \"executionFeeInEvent\": \"1000000000\",\n        \"executionFee\": \"1000000000\",\n        \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n        \"isOnchain\": true,\n        \"roe\": \"1000000000\",\n        \"scalpingCoefficient\": \"1000000000\",\n        \"closeReason\": \"string\"\n      }\n    ],\n    \"totalCount\": 0\n  }\n]\n```","text":"Получить всю историю позиций Каждая позиция аккаунта на всех рынках, как открытая, так и закрытая, сначала новые, с общим количеством для пагинации. - Ограничено фазой, в которой аккаунт находится в данный момент: позиции из более ранней фазы не возвращаются. GET /positions/{accountId}/portfolio/history Trading accountId Идентификатор торгового аккаунта. Должен принадлежать вызывающей стороне. string · uuid limit Размер страницы: сколько записей вернуть. integer offset Сколько записей пропустить перед страницей. integer 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 Ответ","api":{"title":"Публичный API Upscale","version":"d796ac9","documentation":"https://docs.upscale.trade/ru/developers","playgroundServer":"https://api.upscale.trade"}}