/v2/marketsКаждый рынок, открытый для торговли, с его текущим снимком: цена, дневное изменение, границы кредитного плеча, комиссии и расписание торгов. Скрытые или исключённые из листинга рынки не включаются.
Передача accountId считывает снимок из торгового шарда, который обслуживает этот счёт — состояние, по которому был бы оценён Ордер, размещённый на нём.
Здесь принадлежность счёта не проверяется: он только выбирает, какой шард отвечает.
https://api.upscale.tradeПараметры
accountIdstring · uuidнеобязательноТорговый счёт, относительно которого формируется список рынков: границы кредитного плеча и доступность возвращаются применительно к этому счёту. Если не указан — возвращаются значения по умолчанию для всей платформы.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000Примеры
curl --request GET 'https://api.upscale.trade/v2/markets' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'const response = await fetch("https://api.upscale.trade/v2/markets", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
},
});
console.log(response.status, await response.text());import requests
response = requests.request(
"GET",
"https://api.upscale.trade/v2/markets",
headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
timeout=30,
)
print(response.status_code, response.text)Ответы
Неавторизовано
Превышен лимит частоты запросов API-ключа (api_key_rate_limit_exceeded). Retry-After указывает, когда вернуться; тело содержит бакет (read / write), окно, которое сработало, его лимит и retryAt.
defaultОтветapplication/json
Массив MarketV2Response
idstring · uuidобязательноИдентификатор рынка — значение, которое создание Ордера принимает в качестве marketId.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000configobjectобязательноСтатическое описание рынка: активы, наименование и категория.
Объект · 11 поля
baseAssetstringобязательноТикер базового актива — значение, которое эндпоинты для конкретного рынка принимают как asset.
BTCquoteAssetstringобязательноАктив, в котором котируются цены активов и номиналы.
USDsettlementTokenstringобязательноАктив, в котором рассчитываются позиции.
USDtypestringобязательноМодель ценообразования рынка.
basenamestringобязательноОтображаемое имя рынка.
BTCdescriptionstringобязательноОписание в свободной форме, отображаемое в приложении.
Market descriptiontickerstringобязательноПолная метка пары.
BTC/USDimageLinkstringобязательноИконка рынка.
https://app.storm.tg/markets/btc.pngtagsstring[]обязательноТеги, по которым приложение группирует рынки.
Элементы массива · string
string
"Crypto"Посмотреть пример
[
"Crypto"
]categorystring · enumобязательноЯвляется ли рынок криптовалютным или реальным активом — аккаунт может быть ограничен одним из двух.
"crypto" "rwa"cryptoprioritynumber · nullableобязательноВес сортировки в списке рынков; меньшее значение идёт первым, как упорядочен GET /v2/markets. Null, если не ранжирован, сортируется последним.
0Посмотреть пример
{
"baseAsset": "BTC",
"quoteAsset": "USD",
"settlementToken": "USD",
"type": "base",
"name": "BTC",
"description": "Market description",
"ticker": "BTC/USD",
"imageLink": "https://app.storm.tg/markets/btc.png",
"tags": [
"Crypto"
],
"category": "crypto",
"priority": 0
}stateobjectобязательноТекущее состояние: индексная цена, финансирование и глубина, относительно которой рассчитывается цена ордера.
Объект · 10 поля
indexPricestring · fp9обязательноТекущая индексная цена рынка, fp9 в сыром виде — то, относительно чего оцениваются ордера и сравниваются триггеры.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000blockTimestampnumberобязательноКогда был создан этот снимок состояния, временная метка Unix в миллисекундах.
0fundingRatestring · fp9обязательноСтавка финансирования текущего интервала, fp9 в виде необработанной доли. Знак не выбирает сторону: каждая позиция, длинная или короткая, платит номинал × |ставка|.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000nextFundingAtnumberобязательноКогда в следующий раз будет произведен расчет финансирования, временная метка Unix в миллисекундах.
0lastFundingAtnumber · nullableобязательноКогда финансирование было рассчитано в последний раз, временная метка Unix в миллисекундах. Null до первого расчета.
0vpiSpreadstring · fp9обязательноТекущий спред, взимаемый сверх цены индекса, fp9 в виде необработанной доли.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiMarketDepthLongstringобязательноГлубина, доступная на длинной стороне, в целых USD — не fp9. Крупные ордера против неё сдвигают цену исполнения.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
45604631.000000000vpiMarketDepthShortstringобязательноГлубина, доступная на короткой стороне, в целых USD — не fp9.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
38744214.000000000vpiCoefficientLongstring · fp9обязательноКоэффициент влияния на цену, применяемый к длинным ордерам, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiCoefficientShortstring · fp9обязательноКоэффициент влияния на цену, применяемый к коротким ордерам, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000Посмотреть пример
{
"indexPrice": "1000000000",
"blockTimestamp": 0,
"fundingRate": "1000000000",
"nextFundingAt": 0,
"lastFundingAt": 0,
"vpiSpread": "1000000000",
"vpiMarketDepthLong": "45604631.000000000",
"vpiMarketDepthShort": "38744214.000000000",
"vpiCoefficientLong": "1000000000",
"vpiCoefficientShort": "1000000000"
}settingsobjectобязательноПравила торговли на рынке: комиссии, коэффициенты маржи и лимиты, с которыми сверяется ордер.
Объект · 15 поля
feestring · fp9обязательноСтавка торговой комиссии, fp9 в виде сырой дроби (1000000 = 0.1%).
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minInitMarginRatiostring · fp9обязательноНаименьший коэффициент начальной маржи, который принимает рынок, fp9 в виде необработанной дроби — предел кредитного плеча.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000initMarginRatiostring · fp9обязательноКоэффициент начальной маржи рынка по умолчанию, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maintenanceMarginRatiostring · fp9обязательноКоэффициент маржи, ниже которого позиция ликвидируется, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxLeverageByAccountobjectобязательноНаибольшее кредитное плечо, разрешённое для каждого типа аккаунта, fp9 в необработанном виде, с ключом по типу аккаунта.
Дополнительные свойства
string · fp9
"1000000000"- pattern
- ^(?:-?[1-9][0-9]*|0)$
Посмотреть пример
{
"key": "1000000000"
}spreadLimitstring · fp9обязательноНаибольший спред, который будет взимать рынок, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceImpactstring · fp9обязательноНаибольшее влияние на цену без статического спреда, которое может вызвать один ордер на открытие/увеличение, fp9 в виде необработанной доли; 0 означает отсутствие лимита.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceSpreadstring · fp9обязательноМаксимально допустимое отклонение между рыночной и индексной ценой, fp9 в виде необработанной доли.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalLongstring · fp9обязательноОграничение на открытый номинал, удерживаемый в длинной позиции на этом рынке, fp9 в необработанном виде. 0 означает отсутствие ограничения.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalShortstring · fp9обязательноОграничение на открытый номинал, удерживаемый в короткой позиции на этом рынке, fp9 в необработанном виде. 0 означает отсутствие ограничения.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minStopTriggerDistanceRatiostring · fp9обязательноМинимальное расстояние между текущей ценой и триггером стоп-ордера, fp9 в виде необработанной доли. Более близкий триггер отодвигается на это расстояние.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000isCloseOnlybooleanобязательноНаходится ли рынок в режиме только закрытия: POST /orders принимает только take с triggerPrice: "0" (закрытие по рынку). Новые ордера стоп-лосс, тейк-профит и трейлинг-стоп, изменения ордеров и изменения маржи отклоняются с market_close_only; отмена разрешена.
trueisClosedbooleanобязательноtrueisPausedbooleanобязательноtrueisZeroSpreadbooleanобязательноТоргуется ли рынок в настоящее время без спреда.
trueПосмотреть пример
{
"fee": "1000000000",
"minInitMarginRatio": "1000000000",
"initMarginRatio": "1000000000",
"maintenanceMarginRatio": "1000000000",
"maxLeverageByAccount": {
"key": "1000000000"
},
"spreadLimit": "1000000000",
"maxPriceImpact": "1000000000",
"maxPriceSpread": "1000000000",
"maxOpenNotionalLong": "1000000000",
"maxOpenNotionalShort": "1000000000",
"minStopTriggerDistanceRatio": "1000000000",
"isCloseOnly": true,
"isClosed": true,
"isPaused": true,
"isZeroSpread": true
}changeobjectобязательноСправочные цены для расчёта изменений цены за 1 ч, 4 ч и 24 ч.
Объект · 3 поля
initialPricenumberобязательноЦена 24 часов назад, в виде десятичного числа — база дневного изменения. 0, если история недоступна.
0initialPrice1hnumberобязательноЦена один час назад, в виде десятичного числа. 0, если история недоступна.
0initialPrice4hnumberобязательноЦена четыре часа назад, в виде десятичного числа. 0, когда история недоступна.
0Посмотреть пример
{
"initialPrice": 0,
"initialPrice1h": 0,
"initialPrice4h": 0
}scheduleobject · nullableобязательноТорговые сессии рынка. Null, когда рынок торгуется круглосуточно.
Объект · 6 поля
nextPauseAtnumberобязательноНачало следующего запланированного перерыва, временная метка Unix в миллисекундах. 0, когда у рынка вообще нет перерывов, и 9007199254740991, когда после текущего ничего не запланировано.
0nextUnpauseAtnumberобязательноКонец перерыва, в котором находится рынок, или следующего перерыва, временная метка Unix в миллисекундах. Те же 0 и правила для сигнальных значений, что и nextPauseAt.
0closestPauseAtnumberобязательноТо же значение, что и nextPauseAt. Сохранено для обратной совместимости.
0closestUnpauseAtnumberобязательноТо же значение, что и nextUnpauseAt. Сохранено для обратной совместимости.
0pausedAtnumberобязательноНачало текущего перерыва, метка времени Unix в миллисекундах. 0, когда рынок торгуется.
0inPausebooleanобязательноНаходится ли рынок прямо сейчас в запланированном перерыве. Ордера отклоняются, пока он длится.
trueПосмотреть пример
{
"nextPauseAt": 0,
"nextUnpauseAt": 0,
"closestPauseAt": 0,
"closestUnpauseAt": 0,
"pausedAt": 0,
"inPause": true
}[
{
"id": "00000000-0000-4000-8000-000000000000",
"config": {
"baseAsset": "BTC",
"quoteAsset": "USD",
"settlementToken": "USD",
"type": "base",
"name": "BTC",
"description": "Market description",
"ticker": "BTC/USD",
"imageLink": "https://app.storm.tg/markets/btc.png",
"tags": [
"Crypto"
],
"category": "crypto",
"priority": 0
},
"state": {
"indexPrice": "1000000000",
"blockTimestamp": 0,
"fundingRate": "1000000000",
"nextFundingAt": 0,
"lastFundingAt": 0,
"vpiSpread": "1000000000",
"vpiMarketDepthLong": "45604631.000000000",
"vpiMarketDepthShort": "38744214.000000000",
"vpiCoefficientLong": "1000000000",
"vpiCoefficientShort": "1000000000"
},
"settings": {
"fee": "1000000000",
"minInitMarginRatio": "1000000000",
"initMarginRatio": "1000000000",
"maintenanceMarginRatio": "1000000000",
"maxLeverageByAccount": {
"key": "1000000000"
},
"spreadLimit": "1000000000",
"maxPriceImpact": "1000000000",
"maxPriceSpread": "1000000000",
"maxOpenNotionalLong": "1000000000",
"maxOpenNotionalShort": "1000000000",
"minStopTriggerDistanceRatio": "1000000000",
"isCloseOnly": true,
"isClosed": true,
"isPaused": true,
"isZeroSpread": true
},
"change": {
"initialPrice": 0,
"initialPrice1h": 0,
"initialPrice4h": 0
},
"schedule": {
"nextPauseAt": 0,
"nextUnpauseAt": 0,
"closestPauseAt": 0,
"closestUnpauseAt": 0,
"pausedAt": 0,
"inPause": true
}
}
]