Giới Thiệu Về Lệnh RPI

08/07 23:00:00 (UTC+7)Hướng dân Giao dịch Spot

Giới Thiệu Về Lệnh RPI

Lệnh Cải Thiện Giá Bán Lẻ (RPI) là một loại lệnh chuyên biệt được thiết kế dành riêng cho market maker đã được phê duyệt. Lệnh này chỉ khớp với lệnh không dùng thuật toán được đặt qua ứng dụng hoặc giao diện web, cung cấp cho nhà giao dịch bán lẻ thanh khoản thị trường có mục tiêu hơn và giá thực hiện tốt hơn. Đồng thời, bảo vệ lệnh cung cấp thanh khoản của market maker khỏi bị khớp với lệnh thuật toán, duy trì sự công bằng và tính toàn vẹn tổng thể của thị trường.

 

I. Lệnh RPI là gì?

Lệnh RPI là lệnh giới hạn đặc biệt chỉ có thể được gửi qua OpenAPI bởi market maker đã được đưa vào danh sách trắng. Lệnh này có bốn đặc điểm cốt lõi:

• Khớp lệnh có mục tiêu: Chỉ khớp với lệnh không dùng thuật toán được gửi qua ứng dụng và giao diện web. Lệnh này sẽ không khớp với lệnh API (bao gồm cả các lệnh RPI khác) hoặc lệnh bot lưới.

• Ưu tiên thấp nhất: Ở cùng mức giá, lệnh RPI sẽ chỉ tham gia khớp lệnh sau khi tất cả lệnh không phải RPI đã được thực hiện.

• Chỉ maker: Đây là lệnh giới hạn thụ động luôn cung cấp thanh khoản cho sổ lệnh, không bao giờ lấy thanh khoản.

• Khác biệt về khả năng hiển thị: Hiển thị bình thường trên ứng dụng và giao diện web; không hiển thị trong sổ lệnh API công khai.

II. Ai có thể gửi lệnh RPI?

Lệnh RPI chỉ có thể được gửi qua OpenAPI bởi market maker đã được phê duyệt và đưa vào danh sách trắng, và chỉ giới hạn cho các cặp giao dịch trong danh sách trắng.

• Việc gửi lệnh bởi market maker không có trong danh sách trắng sẽ kích hoạt thông báo: "Lệnh RPI chỉ khả dụng cho market maker đã được phê duyệt."

• Việc gửi lệnh cho các cặp giao dịch không có trong danh sách trắng sẽ kích hoạt thông báo: "Lệnh RPI chỉ được hỗ trợ cho các cặp giao dịch cụ thể."

III. Làm thế nào để gửi lệnh RPI?

Lệnh RPI chỉ có thể được gửi qua OpenAPI, hỗ trợ cả phương thức REST và WebSocket.Khi đặt lệnh, loại lệnh (type) phải được đặt là lệnh giới hạn (buy-limit hoặc sell-limit), và trường time-in-force phải được đặt là rpi. Tất cả các tham số khác vẫn giống với lệnh giới hạn tiêu chuẩn.

Phương thức REST

Các điểm cuối đặt lệnh giao ngay, lệnh theo lô và lệnh ký quỹ đều hỗ trợ lệnh RPI (loại lệnh phải là buy-limit hoặc sell-limit). Chỉ cần thêm trường time-in-force (với giá trị rpi) vào các tham số yêu cầu hiện có:

• Đặt lệnh giao ngay: POST /v1/order/orders/place

• Đặt lệnh theo lô: POST /v1/order/batch-orders

• Đặt lệnh ký quỹ: POST /v1/order/auto/place

Ví dụ yêu cầu (Lệnh mua RPI giao ngay):

{

"account-id": "12345",

"symbol": "btcusdt",

"type": "buy-limit",

"amount": "0.01",

"price": "50000",

"time-in-force": "rpi"

}

Phương thức WebSocket

Các kênh giao dịch WebSocket cũng hỗ trợ đặt lệnh RPI, sử dụng các tham số tương tự như REST API:

• Đặt lệnh giao ngay: Kênh create-order

• Đặt lệnh theo lô: Kênh create-batchorder

• Đặt lệnh ký quỹ: Kênh create-margin-order

Mã lỗi thường gặp

Mã lỗi

Mô tả

order-rpi-maker-not-allowed

Tài khoản hiện tại không có trong danh sách trắng RPI và không được phép gửi lệnh RPI.

order-rpi-symbol-not-allowed

Cặp giao dịch này không có trong danh sách trắng RPI và không hỗ trợ gửi lệnh RPI.

order-rpi-only-limit-maker

type phải là buy-limit hoặc sell-limit.

order-rpi-not-enabled

Tính năng RPI hiện đang bị vô hiệu hóa. Vui lòng liên hệ với đội ngũ vận hành để xác nhận lịch trình ra mắt.

 

Những cặp giao dịch nào hỗ trợ lệnh RPI?

Gọi điểm cuối Lấy Tất Cả Cặp Giao Dịch GET /v2/settings/common/symbol. Mỗi cặp giao dịch trong phản hồi bao gồm trường enable_rpi (boolean). Giá trị true cho biết hỗ trợ RPI đã được kích hoạt cho cặp giao dịch, trong khi giá trị false cho biết không được hỗ trợ.

Ví dụ phản hồi (chỉ các trường chính):

{

"status": "ok",

"data": [

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

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

]

}

Nếu gửi yêu cầu đặt lệnh RPI cho một cặp giao dịch không hỗ trợ RPI, hệ thống sẽ trả về mã lỗi order-rpi-symbol-not-allowed.

IV. Phạm vi khớp lệnh

Các lệnh có thể khớp với lệnh RPI

• Nguồn: Ứng dụng/Giao diện web

• Loại: Lệnh thị trường, lệnh giới hạn, lệnh giới hạn nâng cao-FOK, lệnh giới hạn nâng cao-IOC, lệnh chốt lời/cắt lỗ, lệnh thị trường/lệnh giới hạn được kích hoạt bởi lệnh điều kiện

• Đặc biệt: Lệnh sao chép giao dịch/lệnh theo dõi giao dịch và lệnh iceberg được coi là lệnh thông thường và có thể được khớp lệnh bình thường

Các lệnh không đủ điều kiện để khớp với RPI

• Tất cả các lệnh API (bao gồm các lệnh RPI khác và lệnh điều kiện được kích hoạt qua các kênh API)

• Lệnh bot lưới

 

V. Quy tắc giao dịch

Mục quy tắc

Mô tả

Sản phẩm được hỗ trợ

Giao ngay (bao gồm ký quỹ)

Cơ chế lệnh

Giống như lệnh giới hạn tiêu chuẩn (yêu cầu ký quỹ, quy mô lệnh tối thiểu/tối đa và giới hạn giá giống nhau)

Thao tác được hỗ trợ

Đặt lệnh theo lô, sửa đổi (giá/số lượng), hủy lệnh, hủy lệnh theo lô và thực hiện lệnh một phần

Không tương thích

Không thể kết hợp với lệnh điều kiện (TP/SL, lệnh kích hoạt, v.v.)

Giới hạn giá

Khi đặt lệnh, lệnh không được vượt quá giá của các lệnh không phải RPI ở hướng đối diện; nếu không, chúng sẽ bị hủy

Ví dụ về giới hạn giá

•Đặt một lệnh mua RPI ở mức giá 99 → Được chấp nhận.

•Đặt lệnh mua RPI ở mức giá 102 → Bị từ chối, do giao với lệnh không phải RPI ở Giá chào bán 2 (giá 102)

Cấp độ

Giá

Số lượng

Giá chào bán 2

102

25

Giá chào bán 1

100 (RPI)

15

Giá chào mua 1

99 (RPI)

10

Giá chào mua 2

98

20

VI. Hiển thị lệnh

Mô-đun

Kịch bản

Mô tả

Sổ lệnh

Ứng dụng / Web

Lệnh RPI được hiển thị bình thường mà không có thẻ đặc biệt; tự động ẩn khi giá giao nhau. Các lệnh bị ẩn vẫn hoạt động trong công cụ khớp lệnh và có thể được thực hiện khi đáp ứng các điều kiện.

OpenAPI

Không hiển thị.

Lịch sử lệnh cá nhân

Ứng dụng / Web

Market maker có thể xem lệnh RPI và thẻ "RPI" trong hồ sơ lệnh hiện tại và lịch sử; lệnh của người dùng thông thường không hiển thị thẻ đặc biệt.

OpenAPI

Lệnh RPI được hiển thị bình thường và có thể phân biệt với lệnh thông thường.

Ví dụ về ẩn lệnh khi giá giao nhau

Ví dụ 1: Hai lệnh RPI có giá giao nhau (giá mua ≥ giá bán) → Cả hai hướng đều bị ẩn.

/

Giá

Số lượng

Hiển thị

Giá chào bán 4

1.005

20

Giá chào bán 3

1.003 (RPI)

15

Giá chào bán 2

1.001 (RPI)

10

Không

Giá chào bán 1

999 (RPI)

5

Không

Giá chào mua 1

1.002 (RPI)

10

Không

Giá chào mua 2

1.000 (RPI)

20

Không

Giá chào mua 3

998

25

Giá chào mua 4

997 (RPI)

30

Ví dụ 2: Lệnh RPI giao với lệnh API hoặc lệnh chiến lược lưới → Lệnh RPI bị ẩn; Lệnh của đối tác được hiển thị bình thường

/

Giá

Số lượng

Hiển thị

Giá chào bán 4

1.005

20

Giá chào bán 3

1.003 (RPI)

15

Giá chào bán 2

1.001 (RPI)

10

Không

Giá chào bán 1

999 (RPI)

5

Không

Giá chào mua 1

1.002 (Bot lưới)

10

Giá chào mua 2

1.000 (API)

20

Giá chào mua 3

998

25

Giá chào mua 4

997 (RPI)

30

VII. Cấu trúc phí

Lệnh RPI phải chịu mức phí maker RPI độc quyền, thay thế mức phí maker ban đầu của market maker. Lệnh không phải RPI vẫn tiếp tục được tính phí theo mức phí ban đầu.

Mức phí RPI độc quyền có thể được truy vấn thông qua điểm cuối GET /v2/reference/transact-fee-rate. Một trường rpiFeeRate mới được thêm vào tham số phản hồi, thể hiện mức phí maker RPI hiện hành. Ngoài ra, bạn có thể liên hệ trực tiếp với đội ngũ Vận hành Market Maker HTX.

 

VIII. Cập nhật điểm cuối API và Luồng dữ liệu

Để hỗ trợ cơ chế lệnh RPI, các điểm cuối hiện có đã được điều chỉnh theo các quy tắc sau.

Dữ liệu thị trường REST

Tên điểm cuối

Yêu cầu HTTP

Mô tả thay đổi

Độ sâu sổ lệnh

GET /market/depth

Thêm tham số tùy chọn includeRpi (Boolean, mặc định là false). Khi được đặt thành true, dữ liệu độ sâu chưa được tổng hợp (step0) sẽ bao gồm các lệnh RPI. Các bậc tổng hợp khác vẫn không bị ảnh hưởng.

Độ sâu sổ lệnh đầy đủ

GET /market/fullMbp

Tương tự như trên, có thêm tham số includeRpi

Giao dịch thị trường gần đây

GET /market/trade

Phản hồi cho mỗi giao dịch sẽ thêm trường isRpiTrade (Boolean); true cho biết việc thực hiện giao dịch đó được tạo ra bởi lệnh RPI.

Lịch sử giao dịch gần đây

GET /market/history/trade

Tương tự như trên, có thêm trường isRpiTrade

Tickers mới nhất của tất cả cặp giao dịch

GET /market/tickers

Không có thay đổi cấu trúc; các giao dịch RPI được tính vào số liệu thống kê như bình thường.

Chi tiết ticker tổng hợp

GET /market/detail/merged

Không có thay đổi cấu trúc; các giao dịch RPI được tính vào số liệu thống kê như bình thường.

Chi tiết thị trường 24 giờ

GET /market/detail

Không có thay đổi cấu trúc; các giao dịch RPI được tính vào số liệu thống kê như bình thường.

Dữ liệu biểu đồ nến (K-Line)

GET /market/history/kline

Không có thay đổi cấu trúc; các giao dịch RPI được tính vào số liệu như bình thường.

Luồng dữ liệu thị trường WebSocket

Kênh

Bao gồm lệnh RPI

Mô tả

market.$symbol.bbo

Không

Dữ liệu giá chào mua/chào bán tốt nhất theo từng tick; lệnh RPI bị loại khỏi tính toán.

market.$symbol.depth.$type

Không

Báo giá độ sâu thị trường, lệnh chờ RPI không được đưa vào luồng đẩy

market.$symbol.fullDepth.$type

Có (Mới)

Thêm một kênh đẩy mới để tổng hợp các lệnh chờ RPI. Giao thức này nhất quán với kênh độ sâu, cho phép market maker đăng ký độc lập dữ liệu độ sâu đầy đủ bao gồm cả RPI.

market.$symbol.mbp.$levels

Không

Độ sâu MBP tăng dần; lệnh RPI không được đưa vào luồng đẩy.

market.$symbol.mbp.refresh.$levels

Không

Ảnh chụp nhanh MBP đầy đủ; lệnh RPI không được đưa vào luồng đẩy.

Điểm cuối đặt lệnh và truy vấn (REST)

Tên điểm cuối

Yêu cầu HTTP

Mô tả thay đổi

Đặt lệnh giao ngay

POST /v1/order/orders/place

Thêm trường time-in-force (giá trị: rpi).

Đặt lệnh theo lô

POST /v1/order/batch-orders

Thêm trường time-in-force (giá trị: rpi).

Đặt lệnh ký quỹ

POST /v1/order/auto/place

Thêm trường time-in-force (giá trị: rpi).

Truy vấn lệnh mở hiện tại

GET /v1/order/openOrders

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Chi tiết truy vấn lệnh

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

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho biết lệnh đã bị hệ thống hủy do giá giao nhau với một lệnh không phải RPI.

Truy vấn theo clientOrderId

GET /v1/order/orders/getClientOrder

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho biết lệnh đã bị hệ thống hủy do giá giao nhau với một lệnh không phải RPI.

Chi tiết giao dịch

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

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho biết lệnh đã bị hệ thống hủy do giá giao nhau với một lệnh không phải RPI.

Tìm kiếm lịch sử lệnh

GET /v1/order/orders

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho biết lệnh đã bị hệ thống hủy do giá giao nhau với một lệnh không phải RPI.

Lịch sử lệnh trong 48 giờ qua

GET /v1/order/history

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho biết lệnh đã bị hệ thống hủy do giá giao nhau với một lệnh không phải RPI.

Giao dịch hiện tại và lịch sử

GET /v1/order/matchresults

Một trường time-in-force mới được thêm vào phản hồi (giá trị rpi cho biết lệnh RPI).

Đẩy lệnh (WebSocket)

Kênh

Mô tả

Mô tả thay đổi

orders#${symbol}

Đẩy cập nhật lệnh

Một trường time-in-force mới được thêm vào (giá trị: rpi), cho phép phân biệt theo thời gian thực giữa lệnh RPI và lệnh thông thường.

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

Cập nhật giao dịch sau khi thanh toán và hủy lệnh

Một trường time-in-force được thêm vào (giá trị: rpi); một giá trị enum mới rpi_cancel cho canceled-source được thêm vào, cho phép xác định theo thời gian thực các lệnh bị hủy do giá giao nhau.

Phần trên đây kết thúc tài liệu giới thiệu về lệnh RPI.