/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обязательноВес сортировки в списке рынков; более высокий идёт первым. 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 · int32обязательноТекущая индексная цена рынка, fp9 в сыром виде — то, относительно чего оцениваются ордера и сравниваются триггеры.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000blockTimestampnumberобязательноКогда был создан этот снимок состояния, временная метка Unix в миллисекундах.
0fundingRatestring · int32обязательноСтавка финансирования текущего интервала, fp9 в виде необработанной доли. Положительное значение означает, что лонги платят шортам.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000nextFundingAtnumberобязательноКогда в следующий раз будет произведен расчет финансирования, временная метка Unix в миллисекундах.
0lastFundingAtnumber · nullableобязательноКогда финансирование было рассчитано в последний раз, временная метка Unix в миллисекундах. Null до первого расчета.
0vpiSpreadstring · int32обязательноТекущий спред, взимаемый сверх цены индекса, fp9 в виде необработанной доли.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiMarketDepthLongstring · int32обязательноГлубина, доступная на стороне лонгов, fp9 в необработанном виде. Крупные ордера против нее сдвигают цену исполнения.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiMarketDepthShortstring · int32обязательноГлубина, доступная на стороне шорта, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiCoefficientLongstring · int32обязательноКоэффициент влияния на цену, применяемый к длинным ордерам, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000vpiCoefficientShortstring · int32обязательноКоэффициент влияния на цену, применяемый к коротким ордерам, fp9 в сыром виде.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000Посмотреть пример
{
"indexPrice": "1000000000",
"blockTimestamp": 0,
"fundingRate": "1000000000",
"nextFundingAt": 0,
"lastFundingAt": 0,
"vpiSpread": "1000000000",
"vpiMarketDepthLong": "1000000000",
"vpiMarketDepthShort": "1000000000",
"vpiCoefficientLong": "1000000000",
"vpiCoefficientShort": "1000000000"
}settingsobjectобязательноПравила торговли на рынке: комиссии, коэффициенты маржи и лимиты, с которыми сверяется ордер.
Объект · 15 поля
feestring · int32обязательноСтавка торговой комиссии, fp9 в виде сырой дроби (1000000 = 0.1%).
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minInitMarginRatiostring · int32обязательноНаименьший коэффициент начальной маржи, который принимает рынок, fp9 в виде необработанной дроби — предел кредитного плеча.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000initMarginRatiostring · int32обязательноКоэффициент начальной маржи рынка по умолчанию, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maintenanceMarginRatiostring · int32обязательноКоэффициент маржи, ниже которого позиция ликвидируется, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxLeverageByAccountobjectобязательноНаибольшее кредитное плечо, разрешённое для каждого типа аккаунта, fp9 в необработанном виде, с ключом по типу аккаунта.
Дополнительные свойства
string · int32
"1000000000"- pattern
- ^(?:-?[1-9][0-9]*|0)$
Посмотреть пример
{
"key": "1000000000"
}spreadLimitstring · int32обязательноНаибольший спред, который будет взимать рынок, fp9 в виде необработанной дроби.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceImpactstring · int32обязательноМаксимальное влияние на цену, которое может вызвать один ордер, fp9 в виде необработанной доли.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPriceSpreadstring · int32обязательноМаксимально допустимое отклонение между рыночной и индексной ценой, fp9 в виде необработанной доли.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalLongstring · int32обязательноОграничение на открытый номинал, удерживаемый в длинной позиции на этом рынке, fp9 в необработанном виде. 0 означает отсутствие ограничения.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxOpenNotionalShortstring · int32обязательноОграничение на открытый номинал, удерживаемый в короткой позиции на этом рынке, fp9 в необработанном виде. 0 означает отсутствие ограничения.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minStopTriggerDistanceRatiostring · int32обязательноМинимальное расстояние между текущей ценой и триггером стоп-ордера, fp9 в виде необработанной доли. Более близкий триггер отодвигается на это расстояние.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000isCloseOnlybooleanобязательноПринимает ли рынок только ордера, закрывающие позицию.
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": "1000000000",
"vpiMarketDepthShort": "1000000000",
"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
}
}
]