Описание ордеров 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
Распространенные коды ошибок
| Код ошибки |
Описание |
|
|
Текущий аккаунт не включен в белый список RPI и не имеет права размещать ордера RPI. |
|
|
Эта торговая пара не включена в белый список RPI и не поддерживает размещение ордеров RPI. |
|
|
Параметр type должен иметь значение buy-limit или sell-limit. |
|
|
Функция 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-запрос |
Описание изменений |
| Глубина книги ордеров |
|
Добавлен необязательный параметр includeRpi типа Boolean со значением false по умолчанию. Если установить значение true, неагрегированные данные глубины step0 будут включать ордера RPI. Другие агрегированные уровни остаются без изменений. |
| Полная глубина книги ордеров |
|
Аналогично указанному выше: добавлен параметр includeRpi. |
| Последние рыночные сделки |
|
В ответ для каждой сделки добавлено поле isRpiTrade типа Boolean. Значение true означает, что исполнение произошло с участием ордера RPI. |
| История последних сделок |
|
Аналогично указанному выше: добавлено поле isRpiTrade. |
| Последние тикеры всех торговых пар |
|
Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке. |
| Сводные данные тикера |
|
Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке. |
| Рыночные данные за 24 часа |
|
Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке. |
| Данные свечей (K-линий) |
|
Структура не изменена. Исполнения ордеров RPI учитываются в показателях в обычном порядке. |
Потоки рыночных данных WebSocket
| Канал |
Включает ордера RPI |
Описание |
|
|
Нет |
Поток лучших цен покупки и продажи для каждого изменения. Ордера RPI не учитываются при расчете. |
|
|
Нет |
Котировки глубины рынка. Активные ордера RPI не включаются в отправляемые данные. |
|
|
Да (новый) |
Добавлен новый канал отправки агрегированных данных об активных ордерах RPI. Протокол соответствует каналу depth, благодаря чему маркет-мейкеры могут отдельно подписываться на данные полной глубины с учетом RPI. |
|
|
Нет |
Инкрементальные данные глубины MBP. Ордера RPI не включаются в отправляемые данные. |
|
|
Нет |
Полный снимок MBP. Ордера RPI не включаются в отправляемые данные. |
Эндпоинты размещения и запроса ордеров (REST)
| Название эндпоинта |
HTTP-запрос |
Описание изменений |
| Размещение спотовых ордеров |
|
Добавлено поле time-in-force со значением rpi. |
| Пакетное размещение ордеров |
|
Добавлено поле time-in-force со значением rpi. |
| Размещение маржинального ордера |
|
Добавлено поле time-in-force со значением rpi. |
| Запрос текущих открытых ордеров |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. |
| Запрос деталей ордера |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI. |
| Запрос по clientOrderId |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI. |
| Детали сделки |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI. |
| Поиск в истории ордеров |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI. |
| История ордеров за последние 48 часов |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. Добавлено новое значение перечисления canceled-source - rpi_cancel. Оно означает, что ордер был отменен системой из-за пересечения цены с ордером не-RPI. |
| Текущие и исторические сделки |
|
В ответ добавлено новое поле time-in-force. Значение rpi указывает на ордер RPI. |
Отправка данных об ордерах (WebSocket)
| Канал |
Описание |
Описание изменений |
|
|
Отправка обновлений ордеров |
Добавлено новое поле time-in-force со значением rpi, позволяющее в реальном времени отличать ордера RPI от обычных ордеров. |
|
|
Отправка обновлений по сделкам после клиринга и отменам ордеров |
Добавлено новое поле time-in-force со значением rpi, а также новое значение перечисления canceled-source - rpi_cancel. Это позволяет в реальном времени определять отмены, вызванные пересечением цен. |
На этом документация по ордерам RPI завершена.