{"format":"opendoc-document","version":1,"url":"https://docs.upscale.trade/ru/developers/operations/getaccounttradingstats","title":"Получить торговую статистику аккаунта трейдера","description":"GET /accounts/{accountId}/stats: Агрегирует по закрытым позициям аккаунта: доля выигрышей, средняя прибыль и убыток, соотношение риска и вознаграждения, максимальная просадка и…","kind":"api-operation","locale":"ru","inLanguage":"ru","translation":{"sourceLanguage":"en","targetLanguage":"ru","status":"complete","translatedUnits":41,"totalUnits":41},"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/getaccounttradingstats","markdown":"https://docs.upscale.trade/ru/developers/operations/getaccounttradingstats.md","json":"https://docs.upscale.trade/ru/developers/operations/getaccounttradingstats.json"},"translations":{"en":"https://docs.upscale.trade/developers/operations/getaccounttradingstats","ru":"https://docs.upscale.trade/ru/developers/operations/getaccounttradingstats","es":"https://docs.upscale.trade/es/developers/operations/getaccounttradingstats"},"operation":{"id":"getAccountTradingStats","method":"GET","path":"/accounts/{accountId}/stats","summary":"Получить торговую статистику аккаунта трейдера","description":"Агрегирует по закрытым позициям аккаунта: доля выигрышей, средняя прибыль и убыток, соотношение риска и вознаграждения, максимальная просадка и среднее время удержания.\n\n- Отвечает пустым телом, пока у аккаунта ещё нет закрытых позиций.\n- Охватывает каждую фазу, через которую прошёл аккаунт, а не только текущую.","tags":["Accounts"],"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"}],"bodies":[],"responses":[{"status":"200","description":"Ответ","mediaType":"application/json","properties":[{"name":"sumPnl","type":"string · int32","required":true,"description":"Realised pnl summed over every closed position, fp9 raw, before fees and funding.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Realised pnl summed over every closed position, fp9 raw, before fees and funding.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"sumFee","type":"string · int32","required":true,"description":"Trading fees paid over every closed position, fp9 raw.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Trading fees paid over every closed position, fp9 raw.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"sumFunding","type":"string · int32","required":true,"description":"Funding settled over every closed position, fp9 raw. Positive when the account received more than it paid.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Funding settled over every closed position, fp9 raw. Positive when the account received more than it paid.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"profit","type":"string · int32","required":true,"description":"Net result of the closed positions, fp9 raw: pnl minus fees plus funding. This is what the win rate splits on.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Net result of the closed positions, fp9 raw: pnl minus fees plus funding. This is what the win rate splits on.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"positionsCount","type":"number","required":true,"description":"Number of closed positions the statistics are built from.","example":"0","schema":{"type":"number","types":["number"],"description":"Number of closed positions the statistics are built from.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"profitablePositionsCount","type":"number","required":true,"description":"Closed positions that ended at or above break-even.","example":"0","schema":{"type":"number","types":["number"],"description":"Closed positions that ended at or above break-even.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"unprofitablePositionsCount","type":"number","required":true,"description":"Closed positions that ended below break-even.","example":"0","schema":{"type":"number","types":["number"],"description":"Closed positions that ended below break-even.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"winratePercent","type":"number","required":true,"description":"Share of closed positions that ended at or above break-even, in percent with two decimals.","example":"62.5","schema":{"type":"number","types":["number"],"description":"Share of closed positions that ended at or above break-even, in percent with two decimals.","example":62.5,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"minProfit","type":"string · int32 · nullable","required":true,"description":"Smallest win among profitable positions, fp9 raw. Null when there is none.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Smallest win among profitable positions, fp9 raw. Null when there is none.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"minLoss","type":"string · int32 · nullable","required":true,"description":"Smallest loss among losing positions, fp9 raw (negative, closest to zero). Null when there is none.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Smallest loss among losing positions, fp9 raw (negative, closest to zero). Null when there is none.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"maxProfit","type":"string · int32 · nullable","required":true,"description":"Largest win, fp9 raw. Null when no position ended in profit.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Largest win, fp9 raw. Null when no position ended in profit.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"maxLoss","type":"string · int32 · nullable","required":true,"description":"Largest loss, fp9 raw (the most negative value). Null when no position ended in loss.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Largest loss, fp9 raw (the most negative value). Null when no position ended in loss.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"avgProfit","type":"string · int32 · nullable","required":true,"description":"Average win across profitable positions, fp9 raw. Null when there is none.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Average win across profitable positions, fp9 raw. Null when there is none.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"avgLoss","type":"string · int32 · nullable","required":true,"description":"Average loss across losing positions, fp9 raw (negative). Null when there is none.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Average loss across losing positions, fp9 raw (negative). Null when there is none.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"riskRewardRatio","type":"number[]","required":true,"description":"Average win over the absolute average loss. Null while no losing position exists to divide by.","schema":{"type":"number[]","types":["array"],"description":"Average win over the absolute average loss. Null while no losing position exists to divide by.","example":1.8,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxDrawdownPercent","type":"number[]","required":true,"description":"Deepest equity drawdown of the account across all its phases, in percent with two decimals.","schema":{"type":"number[]","types":["array"],"description":"Deepest equity drawdown of the account across all its phases, in percent with two decimals.","example":12.34,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLongPositionHoldTime","type":"number[]","required":true,"description":"Average holding time of long positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Average holding time of long positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgShortPositionHoldTime","type":"number[]","required":true,"description":"Average holding time of short positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Average holding time of short positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgPositionHoldTime","type":"number[]","required":true,"description":"Average holding time across all closed positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Average holding time across all closed positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianPositionHoldTime","type":"number[]","required":true,"description":"Median holding time across all closed positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Median holding time across all closed positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxProfitablePositionHoldTime","type":"number[]","required":true,"description":"Longest a profitable position was held, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Longest a profitable position was held, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxUnprofitablePositionHoldTime","type":"number[]","required":true,"description":"Longest a losing position was held, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Longest a losing position was held, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianProfitablePositionHoldTime","type":"number[]","required":true,"description":"Median holding time of profitable positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Median holding time of profitable positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianUnprofitablePositionHoldTime","type":"number[]","required":true,"description":"Median holding time of losing positions, in seconds.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Median holding time of losing positions, in seconds.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLeverageProfitablePosition","type":"number[]","required":true,"description":"Average leverage of profitable positions — notional over margin, as a plain multiple.","schema":{"type":"number[]","types":["array"],"description":"Average leverage of profitable positions — notional over margin, as a plain multiple.","example":12,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLeverageUnprofitablePosition","type":"number[]","required":true,"description":"Average leverage of losing positions — notional over margin, as a plain multiple.","schema":{"type":"number[]","types":["array"],"description":"Average leverage of losing positions — notional over margin, as a plain multiple.","example":20,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"topMarket","type":"string[]","required":true,"description":"Base asset ticker of the most traded market, by number of closed positions. Null when nothing has been closed.","schema":{"type":"string[]","types":["array"],"description":"Base asset ticker of the most traded market, by number of closed positions. Null when nothing has been closed.","example":"BTC","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"topMarketPercent","type":"number[]","required":true,"description":"Share of closed positions that were on `topMarket`, in percent with two decimals.","schema":{"type":"number[]","types":["array"],"description":"Share of closed positions that were on `topMarket`, in percent with two decimals.","example":41.67,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}}],"schema":{"type":"object","types":["object"],"reference":"#/components/schemas/AccountTradingStatsResponse","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[{"name":"sumPnl","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":"sumFee","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":"sumFunding","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":"profit","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":"positionsCount","type":"number","required":true,"description":"Количество закрытых позиций, на основе которых построена статистика.","example":"0","schema":{"type":"number","types":["number"],"description":"Количество закрытых позиций, на основе которых построена статистика.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"profitablePositionsCount","type":"number","required":true,"description":"Закрытые позиции, завершившиеся на уровне безубыточности или выше.","example":"0","schema":{"type":"number","types":["number"],"description":"Закрытые позиции, завершившиеся на уровне безубыточности или выше.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"unprofitablePositionsCount","type":"number","required":true,"description":"Закрытые позиции, которые завершились ниже точки безубыточности.","example":"0","schema":{"type":"number","types":["number"],"description":"Закрытые позиции, которые завершились ниже точки безубыточности.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"winratePercent","type":"number","required":true,"description":"Доля закрытых позиций, которые завершились на уровне точки безубыточности или выше, в процентах с двумя десятичными знаками.","example":"62.5","schema":{"type":"number","types":["number"],"description":"Доля закрытых позиций, которые завершились на уровне точки безубыточности или выше, в процентах с двумя десятичными знаками.","example":62.5,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"minProfit","type":"string · int32 · nullable","required":true,"description":"Наименьшая прибыль среди прибыльных позиций, fp9 в исходном виде. Null, когда таковых нет.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Наименьшая прибыль среди прибыльных позиций, fp9 в исходном виде. Null, когда таковых нет.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"minLoss","type":"string · int32 · nullable","required":true,"description":"Наименьший убыток среди убыточных позиций, fp9 в исходном виде (отрицательный, ближайший к нулю). Null, когда таковых нет.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Наименьший убыток среди убыточных позиций, fp9 в исходном виде (отрицательный, ближайший к нулю). Null, когда таковых нет.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"maxProfit","type":"string · int32 · nullable","required":true,"description":"Наибольшая прибыль, fp9 в исходном виде. Null, когда ни одна позиция не завершилась с прибылью.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Наибольшая прибыль, fp9 в исходном виде. Null, когда ни одна позиция не завершилась с прибылью.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"maxLoss","type":"string · int32 · nullable","required":true,"description":"Наибольший убыток, fp9 в исходном виде (самое отрицательное значение). Null, когда ни одна позиция не завершилась с убытком.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Наибольший убыток, fp9 в исходном виде (самое отрицательное значение). Null, когда ни одна позиция не завершилась с убытком.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"avgProfit","type":"string · int32 · nullable","required":true,"description":"Средняя прибыль по прибыльным позициям, fp9 в исходном виде. Null, когда таковых нет.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Средняя прибыль по прибыльным позициям, fp9 в исходном виде. Null, когда таковых нет.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"avgLoss","type":"string · int32 · nullable","required":true,"description":"Средний убыток по убыточным позициям, fp9 в сыром виде (отрицательный). Null, если таковых нет.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Средний убыток по убыточным позициям, fp9 в сыром виде (отрицательный). Null, если таковых нет.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"riskRewardRatio","type":"number[]","required":true,"description":"Средний выигрыш к абсолютному среднему убытку. Null, пока не существует убыточной позиции, на которую можно разделить.","schema":{"type":"number[]","types":["array"],"description":"Средний выигрыш к абсолютному среднему убытку. Null, пока не существует убыточной позиции, на которую можно разделить.","example":1.8,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxDrawdownPercent","type":"number[]","required":true,"description":"Самая глубокая просадка капитала счёта по всем его фазам, в процентах с двумя знаками после запятой.","schema":{"type":"number[]","types":["array"],"description":"Самая глубокая просадка капитала счёта по всем его фазам, в процентах с двумя знаками после запятой.","example":12.34,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLongPositionHoldTime","type":"number[]","required":true,"description":"Среднее время удержания длинных позиций, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Среднее время удержания длинных позиций, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgShortPositionHoldTime","type":"number[]","required":true,"description":"Среднее время удержания коротких позиций, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Среднее время удержания коротких позиций, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgPositionHoldTime","type":"number[]","required":true,"description":"Среднее время удержания по всем закрытым позициям, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Среднее время удержания по всем закрытым позициям, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianPositionHoldTime","type":"number[]","required":true,"description":"Медианное время удержания по всем закрытым позициям, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Медианное время удержания по всем закрытым позициям, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxProfitablePositionHoldTime","type":"number[]","required":true,"description":"Самое длительное время удержания прибыльной позиции, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Самое длительное время удержания прибыльной позиции, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"maxUnprofitablePositionHoldTime","type":"number[]","required":true,"description":"Самое длительное время удержания убыточной позиции, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Самое длительное время удержания убыточной позиции, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianProfitablePositionHoldTime","type":"number[]","required":true,"description":"Медианное время удержания прибыльных позиций, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Медианное время удержания прибыльных позиций, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"medianUnprofitablePositionHoldTime","type":"number[]","required":true,"description":"Медианное время удержания убыточных позиций, в секундах.","example":"[\n  0\n]","schema":{"type":"number[]","types":["array"],"description":"Медианное время удержания убыточных позиций, в секундах.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLeverageProfitablePosition","type":"number[]","required":true,"description":"Среднее кредитное плечо прибыльных позиций — отношение номинальной стоимости к марже, в виде простого множителя.","schema":{"type":"number[]","types":["array"],"description":"Среднее кредитное плечо прибыльных позиций — отношение номинальной стоимости к марже, в виде простого множителя.","example":12,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"avgLeverageUnprofitablePosition","type":"number[]","required":true,"description":"Среднее кредитное плечо убыточных позиций — отношение номинальной стоимости к марже, в виде простого множителя.","schema":{"type":"number[]","types":["array"],"description":"Среднее кредитное плечо убыточных позиций — отношение номинальной стоимости к марже, в виде простого множителя.","example":20,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"topMarket","type":"string[]","required":true,"description":"Тикер базового актива самого торгуемого рынка по количеству закрытых позиций. Null, когда ничего не было закрыто.","schema":{"type":"string[]","types":["array"],"description":"Тикер базового актива самого торгуемого рынка по количеству закрытых позиций. Null, когда ничего не было закрыто.","example":"BTC","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"topMarketPercent","type":"number[]","required":true,"description":"Доля закрытых позиций, которые были на `topMarket`, в процентах с двумя десятичными знаками.","schema":{"type":"number[]","types":["array"],"description":"Доля закрытых позиций, которые были на `topMarket`, в процентах с двумя десятичными знаками.","example":41.67,"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"number","types":["number"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}}],"variants":[]},"exampleDiagnostic":"Body.riskRewardRatio must be array Body.maxDrawdownPercent must be array Body.avgLeverageProfitablePosition must be array","headers":[]},{"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":[]}],"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/accounts/{accountId}/stats' \\\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/accounts/{accountId}/stats\", {\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/accounts/{accountId}/stats\",\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/getaccounttradingstats"}],"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 /accounts/{accountId}/stats`\n\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<a id=\"example-curl\"></a>\n\n## Пример · cURL\n\n```bash\ncurl --request GET 'https://api.upscale.trade/accounts/{accountId}/stats' \\\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/accounts/{accountId}/stats\", {\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/accounts/{accountId}/stats\",\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-200-accounttradingstatsresponse\"></a>\n\n## Ответ 200 · AccountTradingStatsResponse\n\n**200** application/json — Ответ\n\nBody.riskRewardRatio must be array Body.maxDrawdownPercent must be array Body.avgLeverageProfitablePosition must be array\n\nСхема: AccountTradingStatsResponse\n\nТип: object\n\nОбязательные поля: sumPnl, sumFee, sumFunding, profit, positionsCount, profitablePositionsCount, unprofitablePositionsCount, winratePercent, minProfit, minLoss, maxProfit, maxLoss, avgProfit, avgLoss, riskRewardRatio, maxDrawdownPercent, avgLongPositionHoldTime, avgShortPositionHoldTime, avgPositionHoldTime, medianPositionHoldTime, maxProfitablePositionHoldTime, maxUnprofitablePositionHoldTime, medianProfitablePositionHoldTime, medianUnprofitablePositionHoldTime, avgLeverageProfitablePosition, avgLeverageUnprofitablePosition, topMarket, topMarketPercent\n\nТипы обязательных полей: sumPnl (string · int32; обязательно), sumFee (string · int32; обязательно), sumFunding (string · int32; обязательно), profit (string · int32; обязательно), positionsCount (number; обязательно), profitablePositionsCount (number; обязательно), unprofitablePositionsCount (number; обязательно), winratePercent (number; обязательно), minProfit (string · int32 · nullable; обязательно), minLoss (string · int32 · nullable; обязательно), maxProfit (string · int32 · nullable; обязательно), maxLoss (string · int32 · nullable; обязательно), avgProfit (string · int32 · nullable; обязательно), avgLoss (string · int32 · nullable; обязательно), riskRewardRatio (number[]; обязательно), maxDrawdownPercent (number[]; обязательно), avgLongPositionHoldTime (number[]; обязательно), avgShortPositionHoldTime (number[]; обязательно), avgPositionHoldTime (number[]; обязательно), medianPositionHoldTime (number[]; обязательно), maxProfitablePositionHoldTime (number[]; обязательно), maxUnprofitablePositionHoldTime (number[]; обязательно), medianProfitablePositionHoldTime (number[]; обязательно), medianUnprofitablePositionHoldTime (number[]; обязательно), avgLeverageProfitablePosition (number[]; обязательно), avgLeverageUnprofitablePosition (number[]; обязательно), topMarket (string[]; обязательно), topMarketPercent (number[]; обязательно)\n\n- sumPnl (string · int32; обязательно)\n\nsumPnl пример: 1000000000\n\nsumPnl.Тип: string · int32\n\nsumPnl.Реализованный PnL, суммированный по всем закрытым позициям, fp9 в сыром виде, до комиссий и финансирования.\n\nsumPnl.format: int32\n\nsumPnl.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- sumFee (string · int32; обязательно)\n\nsumFee пример: 1000000000\n\nsumFee.Тип: string · int32\n\nsumFee.Торговые комиссии, уплаченные по всем закрытым позициям, fp9 в сыром виде.\n\nsumFee.format: int32\n\nsumFee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- sumFunding (string · int32; обязательно)\n\nsumFunding пример: 1000000000\n\nsumFunding.Тип: string · int32\n\nsumFunding.Финансирование, рассчитанное по всем закрытым позициям, fp9 в сыром виде. Положительное, когда аккаунт получил больше, чем заплатил.\n\nsumFunding.format: int32\n\nsumFunding.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- profit (string · int32; обязательно)\n\nprofit пример: 1000000000\n\nprofit.Тип: string · int32\n\nprofit.Чистый результат закрытых позиций, fp9 в необработанном виде: pnl минус комиссии плюс финансирование. Именно по этому разбивается процент выигрышей.\n\nprofit.format: int32\n\nprofit.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- positionsCount (number; обязательно)\n\npositionsCount пример: 0\n\npositionsCount.Тип: number\n\npositionsCount.Количество закрытых позиций, на основе которых построена статистика.\n\n- profitablePositionsCount (number; обязательно)\n\nprofitablePositionsCount пример: 0\n\nprofitablePositionsCount.Тип: number\n\nprofitablePositionsCount.Закрытые позиции, завершившиеся на уровне безубыточности или выше.\n\n- unprofitablePositionsCount (number; обязательно)\n\nunprofitablePositionsCount пример: 0\n\nunprofitablePositionsCount.Тип: number\n\nunprofitablePositionsCount.Закрытые позиции, которые завершились ниже точки безубыточности.\n\n- winratePercent (number; обязательно)\n\nwinratePercent пример: 62.5\n\nwinratePercent.Тип: number\n\nwinratePercent.Доля закрытых позиций, которые завершились на уровне точки безубыточности или выше, в процентах с двумя десятичными знаками.\n\n- minProfit (string · int32 · nullable; обязательно)\n\nminProfit пример: 1000000000\n\nminProfit.Тип: string · int32 · nullable\n\nminProfit.Наименьшая прибыль среди прибыльных позиций, fp9 в исходном виде. Null, когда таковых нет.\n\nminProfit.format: int32\n\nminProfit.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- minLoss (string · int32 · nullable; обязательно)\n\nminLoss пример: 1000000000\n\nminLoss.Тип: string · int32 · nullable\n\nminLoss.Наименьший убыток среди убыточных позиций, fp9 в исходном виде (отрицательный, ближайший к нулю). Null, когда таковых нет.\n\nminLoss.format: int32\n\nminLoss.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- maxProfit (string · int32 · nullable; обязательно)\n\nmaxProfit пример: 1000000000\n\nmaxProfit.Тип: string · int32 · nullable\n\nmaxProfit.Наибольшая прибыль, fp9 в исходном виде. Null, когда ни одна позиция не завершилась с прибылью.\n\nmaxProfit.format: int32\n\nmaxProfit.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- maxLoss (string · int32 · nullable; обязательно)\n\nmaxLoss пример: 1000000000\n\nmaxLoss.Тип: string · int32 · nullable\n\nmaxLoss.Наибольший убыток, fp9 в исходном виде (самое отрицательное значение). Null, когда ни одна позиция не завершилась с убытком.\n\nmaxLoss.format: int32\n\nmaxLoss.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- avgProfit (string · int32 · nullable; обязательно)\n\navgProfit пример: 1000000000\n\navgProfit.Тип: string · int32 · nullable\n\navgProfit.Средняя прибыль по прибыльным позициям, fp9 в исходном виде. Null, когда таковых нет.\n\navgProfit.format: int32\n\navgProfit.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- avgLoss (string · int32 · nullable; обязательно)\n\navgLoss пример: 1000000000\n\navgLoss.Тип: string · int32 · nullable\n\navgLoss.Средний убыток по убыточным позициям, fp9 в сыром виде (отрицательный). Null, если таковых нет.\n\navgLoss.format: int32\n\navgLoss.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- riskRewardRatio (number[]; обязательно)\n\nriskRewardRatio.Тип: number[]\n\nriskRewardRatio.Средний выигрыш к абсолютному среднему убытку. Null, пока не существует убыточной позиции, на которую можно разделить.\n\nriskRewardRatio.[]Тип: number\n\n- maxDrawdownPercent (number[]; обязательно)\n\nmaxDrawdownPercent.Тип: number[]\n\nmaxDrawdownPercent.Самая глубокая просадка капитала счёта по всем его фазам, в процентах с двумя знаками после запятой.\n\nmaxDrawdownPercent.[]Тип: number\n\n- avgLongPositionHoldTime (number[]; обязательно)\n\navgLongPositionHoldTime пример: [\n  0\n]\n\navgLongPositionHoldTime.Тип: number[]\n\navgLongPositionHoldTime.Среднее время удержания длинных позиций, в секундах.\n\navgLongPositionHoldTime.[]Тип: number\n\n- avgShortPositionHoldTime (number[]; обязательно)\n\navgShortPositionHoldTime пример: [\n  0\n]\n\navgShortPositionHoldTime.Тип: number[]\n\navgShortPositionHoldTime.Среднее время удержания коротких позиций, в секундах.\n\navgShortPositionHoldTime.[]Тип: number\n\n- avgPositionHoldTime (number[]; обязательно)\n\navgPositionHoldTime пример: [\n  0\n]\n\navgPositionHoldTime.Тип: number[]\n\navgPositionHoldTime.Среднее время удержания по всем закрытым позициям, в секундах.\n\navgPositionHoldTime.[]Тип: number\n\n- medianPositionHoldTime (number[]; обязательно)\n\nmedianPositionHoldTime пример: [\n  0\n]\n\nmedianPositionHoldTime.Тип: number[]\n\nmedianPositionHoldTime.Медианное время удержания по всем закрытым позициям, в секундах.\n\nmedianPositionHoldTime.[]Тип: number\n\n- maxProfitablePositionHoldTime (number[]; обязательно)\n\nmaxProfitablePositionHoldTime пример: [\n  0\n]\n\nmaxProfitablePositionHoldTime.Тип: number[]\n\nmaxProfitablePositionHoldTime.Самое длительное время удержания прибыльной позиции, в секундах.\n\nmaxProfitablePositionHoldTime.[]Тип: number\n\n- maxUnprofitablePositionHoldTime (number[]; обязательно)\n\nmaxUnprofitablePositionHoldTime пример: [\n  0\n]\n\nmaxUnprofitablePositionHoldTime.Тип: number[]\n\nmaxUnprofitablePositionHoldTime.Самое длительное время удержания убыточной позиции, в секундах.\n\nmaxUnprofitablePositionHoldTime.[]Тип: number\n\n- medianProfitablePositionHoldTime (number[]; обязательно)\n\nmedianProfitablePositionHoldTime пример: [\n  0\n]\n\nmedianProfitablePositionHoldTime.Тип: number[]\n\nmedianProfitablePositionHoldTime.Медианное время удержания прибыльных позиций, в секундах.\n\nmedianProfitablePositionHoldTime.[]Тип: number\n\n- medianUnprofitablePositionHoldTime (number[]; обязательно)\n\nmedianUnprofitablePositionHoldTime пример: [\n  0\n]\n\nmedianUnprofitablePositionHoldTime.Тип: number[]\n\nmedianUnprofitablePositionHoldTime.Медианное время удержания убыточных позиций, в секундах.\n\nmedianUnprofitablePositionHoldTime.[]Тип: number\n\n- avgLeverageProfitablePosition (number[]; обязательно)\n\navgLeverageProfitablePosition.Тип: number[]\n\navgLeverageProfitablePosition.Среднее кредитное плечо прибыльных позиций — отношение номинальной стоимости к марже, в виде простого множителя.\n\navgLeverageProfitablePosition.[]Тип: number\n\n- avgLeverageUnprofitablePosition (number[]; обязательно)\n\navgLeverageUnprofitablePosition.Тип: number[]\n\navgLeverageUnprofitablePosition.Среднее кредитное плечо убыточных позиций — отношение номинальной стоимости к марже, в виде простого множителя.\n\navgLeverageUnprofitablePosition.[]Тип: number\n\n- topMarket (string[]; обязательно)\n\ntopMarket.Тип: string[]\n\ntopMarket.Тикер базового актива самого торгуемого рынка по количеству закрытых позиций. Null, когда ничего не было закрыто.\n\ntopMarket.[]Тип: string\n\n- topMarketPercent (number[]; обязательно)\n\ntopMarketPercent.Тип: number[]\n\ntopMarketPercent.Доля закрытых позиций, которые были на `topMarket`, в процентах с двумя десятичными знаками.\n\ntopMarketPercent.[]Тип: number\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`.","text":"Получить торговую статистику аккаунта трейдера Агрегирует по закрытым позициям аккаунта: доля выигрышей, средняя прибыль и убыток, соотношение риска и вознаграждения, максимальная просадка и среднее время удержания. - Отвечает пустым телом, пока у аккаунта ещё нет закрытых позиций. - Охватывает каждую фазу, через которую прошёл аккаунт, а не только текущую. GET /accounts/{accountId}/stats Accounts accountId Идентификатор торгового аккаунта. Должен принадлежать вызывающей стороне. string · uuid 200 Ответ sumPnl Realised pnl summed over every closed position, fp9 raw, before fees and funding. string · int32 sumFee Trading fees paid over every closed position, fp9 raw. string · int32 sumFunding Funding settled over every closed position, fp9 raw. Positive when the account received more than it paid. string · int32 profit Net result of the closed positions, fp9 raw: pnl minus fees plus funding. This is what the win rate splits on. string · int32 positionsCount Number of closed positions the statistics are built from. number profitablePositionsCount Closed positions that ended at or above break-even. number unprofitablePositionsCount Closed positions that ended below break-even. number winratePercent Share of closed positions that ended at or above break-even, in percent with two decimals. number minProfit Smallest win among profitable positions, fp9 raw. Null when there is none. string · int32 · nullable minLoss Smallest loss among losing positions, fp9 raw (negative, closest to zero). Null when there is none. string · int32 · nullable maxProfit Largest win, fp9 raw. Null when no position ended in profit. string · int32 · nullable maxLoss Largest loss, fp9 raw (the most negative value). Null when no position ended in loss. string · int32 · nullable avgProfit Average win across profitable positions, fp9 raw. Null when there is none. string · int32 · nullable avgLoss Average loss across losing positions, fp9 raw (negative). Null when there is none. string · int32 · nullable riskRewardRatio Average win over the absolute average loss. Null while no losing position exists to divide by. number[] maxDrawdownPercent Deepest equity drawdown of the account across all its phases, in percent with two decimals. number[] avgLongPositionHoldTime Average holding time of long positions, in seconds. number[] avgShortPositionHoldTime Average holding time of short positions, in seconds. number[] avgPositionHoldTime Average holding time across all closed positions, in seconds. number[] medianPositionHoldTime Median holding time across all closed positions, in seconds. number[] maxProfitablePositionHoldTime Longest a profitable position was held, in seconds. number[] maxUnprofitablePositionHoldTime Longest a losing position was held, in seconds. number[] medianProfitablePositionHoldTime Median holding time of profitable positions, in seconds. number[] medianUnprofitablePositionHoldTime Median holding time of losing positions, in seconds. number[] avgLeverageProfitablePosition Average leverage of profitable positions — notional over margin, as a plain multiple. number[] avgLeverageUnprofitablePosition Average leverage of losing positions — notional over margin, as a plain multiple. number[] topMarket Base asset ticker of the most traded market, by number of closed positions. Null when nothing has been closed. string[] topMarketPercent Share of closed positions that were on `topMarket`, in percent with two decimals. number[] 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`.","api":{"title":"Публичный API Upscale","version":"d796ac9","documentation":"https://docs.upscale.trade/ru/developers","playgroundServer":"https://api.upscale.trade"}}