Вступ до ордерів 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 (тип повинен бути 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 (boolean). Значення 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, на рівні ціни продажу 2 (ціна 102)

Рівень

Ціна

Кількість

Ціна продажу 2

102

25

Ціна продажу 1

100 (RPI)

15

Ціна купівлі 1

99 (RPI)

10

Ціна купівлі 2

98

20

VI. Видимість ордерів

Модуль

Сценарій

Опис

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

Додаток / Вебверсія

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

OpenAPI

Не видимі.

Історія особистих ордерів

Додаток / Вебверсія

Маркетмейкери можуть переглядати ордери з позначкою "RPI" у поточних і записах попередніх ордерів; ордери звичайних користувачів не містять спеціальних позначок.

OpenAPI

Ордери RPI показуються у звичайному режимі, їх можна відрізнити від стандартних ордерів.

Приклади приховування перетину цін

Приклад 1: два ордери RPI з перетином цін (ціна купівлі ≥ ціна продажу) → обидві сторони приховані.

/

Ціна

Кількість

Видимість

Ціна продажу 4

1 005

20

Так

Ціна продажу 3

1 003 (RPI)

15

Так

Ціна продажу 2

1 001 (RPI)

10

Ні

Ціна продажу 1

999 (RPI)

5

Ні

Ціна купівлі 1

1 002 (RPI)

10

Ні

Ціна купівлі 2

1 000 (RPI)

20

Ні

Ціна купівлі 3

998

25

Так

Ціна купівлі 4

997 (RPI)

30

Так

Приклад 2: ордер RPI перетинається з ордером API або ордером за сітковою стратегією → ордер RPI прихований; ордер контрагента показується як звичайно

/

Ціна

Кількість

Видимість

Ціна продажу 4

1 005

20

Так

Ціна продажу 3

1 003 (RPI)

15

Так

Ціна продажу 2

1 001 (RPI)

10

Ні

Ціна продажу 1

999 (RPI)

5

Ні

Ціна купівлі 1

1 002 (ордер сіткового бота)

10

Так

Ціна купівлі 2

1 000 (API)

20

Так

Ціна купівлі 3

998

25

Так

Ціна купівлі 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-Line)

GET /market/history/kline

Структурних змін немає; виконання RPI враховується в показниках у звичайному порядку.

Потік ринкових даних WebSocket

Канал

Включає ордери RPI

Опис

market.$symbol.bbo

Ні

Дані про найкращі ціни купівлі/продажу з точністю до кожного тіку; ордери RPI не враховуються при розрахунках.

market.$symbol.depth.$type

Ні

Котирування глибини ринку та відкладені ордери RPI не включені в push-повідомлення

market.$symbol.fullDepth.$type

Так (нові)

Додає новий push-канал для агрегації відкладених ордерів RPI. Протокол відповідає каналу глибини ринку, що дозволяє маркетмейкерам самостійно підписуватися на повні дані про глибину ринку, включно з RPI.

market.$symbol.mbp.$levels

Ні

Інкрементальна глибина MBP, ордери RPI не включаються в push.

market.$symbol.mbp.refresh.$levels

Ні

Повний знімок MBP, ордери RPI не включаються в push.

Кінцеві точки для розміщення ордерів і запитів (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).

Push-оновлення ордерів (WebSocket)

Канал

Опис

Опис змін

orders#${symbol}

Push-оновлення щодо ордерів

Додано нове поле time-in-force (значення: rpi), яке дає змогу в режимі реального часу розрізняти ордери RPI та звичайні ордери.

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

Оновлення угод і скасувань ордерів після клірингу

Додано нове поле time-in-force (значення: rpi), а також нове значення rpi_cancel для поля canceled-source, що дає змогу в режимі реального часу визначати скасування, спричинені перетином цін.

На цьому документація щодо ордеру RPI завершується.