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ả |
|
|
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. |
|
|
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. |
|
|
type phải là buy-limit hoặc sell-limit. |
|
|
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 |
Có |
| Giá chào bán 3 |
1.003 (RPI) |
15 |
Có |
| 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 |
Có |
| Giá chào mua 4 |
997 (RPI) |
30 |
Có |
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 |
Có |
| Giá chào bán 3 |
1.003 (RPI) |
15 |
Có |
| 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 |
Có |
| Giá chào mua 2 |
1.000 (API) |
20 |
Có |
| Giá chào mua 3 |
998 |
25 |
Có |
| Giá chào mua 4 |
997 (RPI) |
30 |
Có |
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 |
|
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 đủ |
|
Tương tự như trên, có thêm tham số includeRpi |
| Giao dịch thị trường gần đây |
|
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 |
|
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 |
|
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 |
|
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ờ |
|
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) |
|
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ả |
|
|
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. |
|
|
Không |
Báo giá độ sâu thị trường, lệnh chờ RPI không được đưa vào luồng đẩy |
|
|
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. |
|
|
Không |
Độ sâu MBP tăng dần; lệnh RPI không được đưa vào luồng đẩy. |
|
|
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 |
|
Thêm trường time-in-force (giá trị: rpi). |
| Đặt lệnh theo lô |
|
Thêm trường time-in-force (giá trị: rpi). |
| Đặt lệnh ký quỹ |
|
Thêm trường time-in-force (giá trị: rpi). |
| Truy vấn lệnh mở hiện tại |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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ử |
|
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 |
|
|
Đẩ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. |
|
|
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.