Перейти к основному содержимому

Данные книги ордеров

Каждый рынок на Intotes поддерживает актуальную книгу ордеров с ожидающими лимитными ордерами. Эндпоинт книги ордеров предоставляет снимок всех открытых bid и ask, который можно использовать для отображения глубины, расчета спреда и оценки цен исполнения.

Эндпоинт​

GET /api/v1/market/orderbook/{market_id}

Параметры пути​

ПараметрТипОписание
market_idstringID рынка для запроса.

Ответ​

{
"market_id": "mkt_001",
"bids": [
{ "price": 5500, "amount": 120000 },
{ "price": 5400, "amount": 85000 },
{ "price": 5200, "amount": 200000 }
],
"asks": [
{ "price": 5700, "amount": 95000 },
{ "price": 5800, "amount": 150000 },
{ "price": 6000, "amount": 60000 }
]
}

Справочник полей​

ПолеТипОписание
market_idstringРынок, которому принадлежит книга ордеров.
bidsarrayОрдера на покупку, отсортированные по убыванию цены.
asksarrayОрдера на продажу, отсортированные по возрастанию цены.
bids[].priceintegerЦена bid по шкале 0--10000.
bids[].amountintegerОбщий объем по данному ценовому уровню, в акциях-копейках.
asks[].priceintegerЦена ask по шкале 0--10000.
asks[].amountintegerОбщий объем по данному ценовому уровню, в акциях-копейках.

Порядок сортировки​

  • Bid отсортированы от наивысшей к наименьшей цене. Первый bid -- это лучший bid (наивысшая цена, которую покупатель готов заплатить).
  • Ask отсортированы от наименьшей к наивысшей цене. Первый ask -- это лучший ask (наименьшая цена, которую продавец готов принять).

Этот порядок означает, что начало каждого массива всегда представляет наиболее конкурентную цену.


Понимание цен​

Цены -- целые числа в диапазоне от 0 до 10000, представляющие вероятность от 0% до 100% с двумя десятичными знаками точности.

Необработанная ценаОтображение
00.00%
250025.00%
550055.00%
10000100.00%

Для преобразования в читаемый процент: price / 100.


Понимание объемов​

Объемы выражены в акциях-копейках. Одна полная акция равна 100 акциям-копейкам. Для отображения количества целых акций по ценовому уровню:

shares = amount / 100

Например, объем 120000 означает, что 1,200 акций доступно по данному ценовому уровню.


Расчет спреда​

Спред -- это разница между лучшим ask и лучшим bid:

spread = best_ask.price - best_bid.price

Используя пример ответа выше:

spread = 5700 - 5500 = 200  (т.е. 2.00 процентных пункта)

Узкий спред указывает на ликвидный, активно торгуемый рынок. Широкий спред предполагает тонкую ликвидность или низкую торговую активность.


Интерпретация книги ордеров​

Глубина​

Книга ордеров показывает, сколько ликвидности доступно по каждому ценовому уровню. Сумма объемов по всем уровням bid дает общую глубину покупок; сумма ask -- глубину продаж.

total_bid_depth = sum(bid.amount for each bid)
total_ask_depth = sum(ask.amount for each ask)

Оценка цены исполнения​

Для оценки стоимости рыночной покупки N акций пройдите по стороне ask:

  1. Начните с наименьшего ask.
  2. Потребляйте акции по этой цене, пока уровень не исчерпан или ваш ордер не заполнен.
  3. При необходимости перейдите к следующему уровню ask.
  4. Средневзвешенная цена по потребленным уровням -- это ваша оценка цены исполнения.

Та же логика работает в обратном направлении для рыночных продаж, проходя по стороне bid.

Гибридное исполнение (Orderbook + AMM)​

Intotes использует гибридную модель: входящие ордера сначала сопоставляются с ожидающими лимитными ордерами в книге ордеров. Любой остаток, который не может быть заполнен книгой ордеров, направляется в автоматический маркетмейкер LMSR (AMM). Это означает:

  • Снимок книги ордеров показывает только ликвидность лимитных ордеров.
  • Дополнительная ликвидность всегда доступна через AMM, поэтому ордера никогда не останутся неисполненными (хотя цена AMM может отличаться от цены книги ордеров).
  • Для небольших ордеров на ликвидных рынках книга ордеров обычно предоставляет лучшие цены, чем AMM.

Пример: Получение и отображение книги ордеров​

curl "https://api.intots.com/api/v1/market/orderbook/mkt_001"
const res = await fetch('/api/v1/market/orderbook/mkt_001');
const book = await res.json();

const bestBid = book.bids[0];
const bestAsk = book.asks[0];
const spread = bestAsk.price - bestBid.price;

console.log(`Best Bid: ${bestBid.price / 100}% (${bestBid.amount / 100} shares)`);
console.log(`Best Ask: ${bestAsk.price / 100}% (${bestAsk.amount / 100} shares)`);
console.log(`Spread: ${spread / 100} pp`);

Советы​

  • Опрашивайте периодически или комбинируйте с WebSocket-лентой сделок для поддержания актуальности отображения. Эндпоинт книги ордеров возвращает снимок на момент времени.
  • Пустые массивы для bids или asks означают отсутствие ожидающих лимитных ордеров на этой стороне. AMM по-прежнему обеспечивает ликвидность.
  • Ценовые уровни агрегированы. Каждая запись представляет общий объем всех отдельных ордеров по данной точной цене.