Описание ордеров RPI

08.07 19:00:00 (UTC+3)Руководство по спотовой торговле

Описание ордеров RPI

Ордер Retail Price Improvement (RPI) - это специализированный тип ордера, предназначенный исключительно для одобренных маркет-мейкеров. Он сопоставляется только с неалгоритмическими ордерами, размещенными через приложение или веб-интерфейс, обеспечивая розничным трейдерам ликвидность, ориентированную на их потребности, и более выгодные цены исполнения. При этом ордера маркет-мейкеров, предоставляющие ликвидность, защищены от сопоставления с алгоритмическими ордерами, что способствует поддержанию справедливости и целостности рынка.

 

I. Что такое ордер RPI?

Ордер RPI - это специальный лимитный ордер, который могут размещать через OpenAPI только маркет-мейкеры, включенные в белый список. Он обладает четырьмя основными характеристиками:

• Целевое сопоставление: сопоставляется исключительно с неалгоритмическими ордерами, размещенными через приложение и веб-интерфейс. Он не сопоставляется с API-ордерами, включая другие ордера RPI, а также с ордерами торговых ботов Сетки.

• Самый низкий приоритет: на одном ценовом уровне ордера RPI участвуют в сопоставлении только после исполнения всех ордеров, не относящихся к RPI.

• Только мейкер: это пассивные лимитные ордера, которые всегда добавляют ликвидность в книгу ордеров и никогда ее не забирают.

• Различия в отображении: ордера отображаются обычным образом в приложении и веб-интерфейсе, но не отображаются в публичной книге ордеров API.

II. Кто может размещать ордера RPI?

Ордера RPI могут размещать через OpenAPI только одобренные маркет-мейкеры, включенные в белый список. Размещение таких ордеров строго ограничено торговыми парами из белого списка.

• При отправке ордера маркет-мейкером, не включенным в белый список, появится сообщение: «Ордера RPI доступны только одобренным маркет-мейкерам».

• При отправке ордера для торговой пары, не включенной в белый список, появится сообщение: «Ордера RPI поддерживаются только для определенных торговых пар».

III. Как размещать ордера RPI?

Ордера RPI можно размещать только через OpenAPI с помощью методов REST и WebSocket. При размещении ордера в поле «Тип» (type) необходимо выбрать «Лимитная покупка» (buy-limit) или «Лимитная продажа» (sell-limit), а для поля time-in-force установить значение rpi. Все остальные параметры совпадают с параметрами стандартных лимитных ордеров.

Метод REST

Эндпоинты размещения спотовых и маржинальных ордеров, а также пакетного размещения ордеров поддерживают ордера RPI. В поле «Тип» (type) необходимо указать «Лимитная покупка» (buy-limit) или «Лимитная продажа» (sell-limit). Для этого просто добавьте к существующим параметрам запроса поле time-in-force со значением rpi:

• Размещение спотового ордера: POST /v1/order/orders/place

• Пакетное размещение ордеров: POST /v1/order/batch-orders

• Размещение маржинального ордера: POST /v1/order/auto/place

Пример запроса для спотового ордера RPI на покупку:

{

"account-id": "12345",

"symbol": "btcusdt",

"type": "buy-limit",

"amount": "0.01",

"price": "50000",

"time-in-force": "rpi"

}

Метод WebSocket

Торговые каналы WebSocket также поддерживают размещение ордеров RPI и используют те же параметры, что и REST API:

• Размещение спотового ордера: канал create-order

• Пакетное размещение ордеров: канал create-batchorder

• Размещение маржинального ордера: канал create-margin-order

Распространенные коды ошибок

Код ошибки

Описание

order-rpi-maker-not-allowed

Текущий аккаунт не включен в белый список RPI и не имеет права размещать ордера RPI.

order-rpi-symbol-not-allowed

Эта торговая пара не включена в белый список RPI и не поддерживает размещение ордеров RPI.

order-rpi-only-limit-maker

Параметр type должен иметь значение buy-limit или sell-limit.

order-rpi-not-enabled

Функция RPI в настоящее время отключена. Обратитесь к операционной команде, чтобы уточнить сроки запуска.

 

Какие торговые пары поддерживают ордера RPI?

Вызовите эндпоинт получения всех торговых пар GET /v2/settings/common/symbol. Для каждой торговой пары в ответе предусмотрено логическое поле enable_rpi. Значение true означает, что торговая пара поддерживает RPI, а значение false - что поддержка отсутствует.

Пример ответа, только основные поля:

{

"status": "ok",

"data": [

{ "sc": "btcusdt", "dn": "BTC/USDT", "enable_rpi": true },

{ "sc": "ethusdt", "dn": "ETH/USDT", "enable_rpi": false }

]

}

Если запрос на размещение ордера RPI отправлен для торговой пары, которая не поддерживает RPI, система вернет код ошибки order-rpi-symbol-not-allowed.

IV. Область сопоставления

Ордера, которые могут сопоставляться с ордерами RPI

• Источник: приложение / веб-интерфейс

• Типы: рыночные ордера, лимитные ордера, расширенные лимитные ордера FOK, расширенные лимитные ордера IOC, ордера тейк-профит/стоп-лосс, а также рыночные и лимитные ордера, активированные условными ордерами

• Особые случаи: ордера Копитрейдинга / следования за сделками и айсберг-ордера считаются обычными ордерами и могут сопоставляться в стандартном порядке

Ордера, которые не могут сопоставляться с ордерами RPI

• Все API-ордера, включая другие ордера RPI и условные ордера, активированные через каналы API

• Ордера торговых ботов Сетки

 

V. Правила торговли

Параметр

Описание

Поддерживаемые продукты

Спот, включая маржинальную торговлю

Механизм ордера

Совпадает с механизмом стандартных лимитных ордеров: применяются те же требования к марже, минимальный и максимальный размеры ордера, а также ценовые ограничения

Поддерживаемые операции

Пакетное размещение ордеров, изменение цены и количества, отмена, пакетная отмена ордеров и частичное исполнение ордера

Несовместимость

Нельзя использовать совместно с условными ордерами, включая TP/SL, триггерные ордера и т. д.

Ограничение цены

При размещении цена ордера не должна пересекать цену ордеров не-RPI на противоположной стороне книги ордеров. В противном случае ордер будет отменен

Пример ограничения цены

• Отправка ордера RPI на покупку по цене 99 → Принят.

• Отправка ордера RPI на покупку по цене 102 → Отклонен, поскольку его цена пересекает цену ордера не-RPI на уровне Ask 2, равную 102.

Уровень

Цена

Количество

Ask 2

102

25

Ask 1

100 (RPI)

15

Bid 1

99 (RPI)

10

Bid 2

98

20

VI. Отображение ордеров

Модуль

Сценарий

Описание

Книга ордеров

Приложение / веб-интерфейс

Ордера RPI отображаются обычным образом без специальных меток и автоматически скрываются при пересечении цен. Скрытые ордера остаются активными в механизме сопоставления и могут быть исполнены при выполнении соответствующих условий.

OpenAPI

Не отображаются.

Личная история ордеров

Приложение / веб-интерфейс

Маркет-мейкеры могут просматривать ордера RPI и метку «RPI» в записях о текущих и исторических ордерах. Ордера обычных пользователей не имеют специальных меток.

OpenAPI

Ордера RPI отображаются обычным образом, при этом их можно отличить от стандартных ордеров.

Примеры скрытия при пересечении цен

Пример 1: цены двух ордеров RPI пересекаются, то есть цена покупки ≥ цене продажи → Ордера с обеих сторон скрываются.

/

Цена

Количество

Отображается

Ask 4

1005

20

Да

Ask 3

1003 (RPI)

15

Да

Ask 2

1001 (RPI)

10

Нет

Ask 1

999 (RPI)

5

Нет

Bid 1

1002 (RPI)

10

Нет

Bid 2

1000 (RPI)

20

Нет

Bid 3

998

25

Да

Bid 4

997 (RPI)

30

Да

Пример 2: цена ордера RPI пересекается с ценой API-ордера или ордера стратегии Сетки → Ордер RPI скрывается, а ордер встречной стороны отображается обычным образом.

/

Цена

Количество

Отображается

Ask 4

1005

20

Да

Ask 3

1003 (RPI)

15

Да

Ask 2

1001 (RPI)

10

Нет

Ask 1

999 (RPI)

5

Нет

Bid 1

1002 (Торговые боты Сетки)

10

Да

Bid 2

1000 (API)

20

Да

Bid 3

998

25

Да

Bid 4

997 (RPI)

30

Да

VII. Структура комиссий

К ордерам RPI применяется специальная ставка комиссии мейкера RPI, которая заменяет исходную ставку комиссии мейкера для маркет-мейкера. Для ордеров, не относящихся к RPI, продолжает применяться исходная ставка комиссии.

Специальную ставку комиссии RPI можно запросить через эндпоинт GET /v2/reference/transact-fee-rate. В параметры ответа добавлено новое поле rpiFeeRate, которое содержит текущую применяемую ставку комиссии мейкера RPI. Также эту информацию можно уточнить непосредственно у операционной команды HTX по работе с маркет-мейкерами.

 

VIII. Обновления эндпоинтов API и потоков данных

Для поддержки механизма ордеров RPI существующие эндпоинты были скорректированы в соответствии со следующими правилами.

Рыночные данные REST

Название эндпоинта

HTTP-запрос

Описание изменений

Глубина книги ордеров

GET /market/depth

Добавлен необязательный параметр includeRpi типа Boolean со значением false по умолчанию. Если установить значение true, неагрегированные данные глубины step0 будут включать ордера RPI. Другие агрегированные уровни остаются без изменений.

Полная глубина книги ордеров

GET /market/fullMbp

Аналогично указанному выше: добавлен параметр includeRpi.

Последние рыночные сделки

GET /market/trade

В ответ для каждой сделки добавлено поле isRpiTrade типа Boolean. Значение true означает, что исполнение произошло с участием ордера RPI.

История последних сделок

GET /market/history/trade

Аналогично указанному выше: добавлено поле isRpiTrade.

Последние тикеры всех торговых пар

GET /market/tickers

Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке.

Сводные данные тикера

GET /market/detail/merged

Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке.

Рыночные данные за 24 часа

GET /market/detail

Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке.

Данные свечей (K-линий)

GET /market/history/kline

Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке.

Потоки рыночных данных WebSocket

Канал

Включает ордера RPI

Описание

market.$symbol.bbo

Нет

Поток лучших цен покупки и продажи для каждого изменения. Ордера RPI не учитываются при расчете.

market.$symbol.depth.$type

Нет

Котировки глубины рынка. Активные ордера RPI не включаются в отправляемые данные.

market.$symbol.fullDepth.$type

Да (новый)

Добавлен новый канал отправки агрегированных данных об активных ордерах RPI. Протокол соответствует каналу depth, благодаря чему маркет-мейкеры могут отдельно подписываться на данные полной глубины с учетом RPI.

market.$symbol.mbp.$levels

Нет

Инкрементальные данные глубины MBP. Ордера RPI не включаются в отправляемые данные.

market.$symbol.mbp.refresh.$levels

Нет

Полный снимок MBP. Ордера RPI не включаются в отправляемые данные.

Эндпоинты размещения и запроса ордеров (REST)

Название эндпоинта

HTTP-запрос

Описание изменений

Размещение спотовых ордеров

POST /v1/order/orders/place

Добавлено поле time-in-force со значением rpi.

Пакетное размещение ордеров

POST /v1/order/batch-orders

Добавлено поле time-in-force со значением rpi.

Размещение маржинального ордера

POST /v1/order/auto/place

Добавлено поле time-in-force со значением rpi.

Запрос текущих открытых ордеров

GET /v1/order/openOrders

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Запрос деталей ордера

GET /v1/order/orders/{order-id}

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI.

Запрос по clientOrderId

GET /v1/order/orders/getClientOrder

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI.

Детали сделки

GET /v1/order/orders/{order-id}/matchresults

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI.

Поиск в истории ордеров

GET /v1/order/orders

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI.

История ордеров за последние 48 часов

GET /v1/order/history

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI.

Текущие и исторические сделки

GET /v1/order/matchresults

В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI.

Отправка данных об ордерах (WebSocket)

Канал

Описание

Описание изменений

orders#${symbol}

Отправка обновлений ордеров

Добавлено новое поле time-in-force со значением rpi, позволяющее в реальном времени отличать ордера RPI от обычных ордеров.

trade.clearing#${symbol}#${mode}

Отправка обновлений по сделкам после клиринга и отменам ордеров

Добавлено новое поле time-in-force со значением rpi, а также новое значение перечисления canceled-source - rpi_cancel. Это позволяет в реальном времени определять отмены, вызванные пересечением цен.

На этом документация по ордерам RPI завершена.