RPI订单介绍
RPI(零售价格优化)订单是一种专为获批做市商提供的特殊订单类型,仅与 APP 及网页端的非算法订单撮合,为零售交易者提供更有针对性的市场流动性和更优的执行价格,同时保护做市商流动性挂单不被算法订单抢占,维护整体市场公平与诚信。
一、什么是 RPI 订单?
RPI 订单是仅供白名单做市商通过 OpenAPI 提交的特殊限价单,具备四大核心特点:
- 定向撮合:仅与 APP 及网页端提交的非算法订单成交,不与 API 订单(含其他 RPI 订单)或网格策略单撮合。
- 优先级最低:同一价位下,所有非 RPI 订单执行完毕后,RPI 订单才参与撮合。
- 只做 Maker:被动挂单,始终为订单簿提供流动性,不主动吃单。
- 可见性差异:APP 及网页端正常显示;API 公共订单簿中不可见。
二、谁可以提交?
仅获批白名单做市商可通过 OpenAPI 提交,且仅限白名单交易对。
- 非白名单做市商提交时提示:「RPI 订单仅适用于获批做市商」
- 非白名单币对提交时提示:「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 保持一致:
- 现货下单:频道
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。
四、撮合范围
可与 RPI 撮合的订单
- 来源:APP 端 / 网页端
- 类型:市价单、限价单、高级限价-FOK、高级限价-IOC、止盈止损单、计划委托触发后的市价单/限价单
- 特殊:带单 / 跟单、冰山单均视同普通单,可正常撮合
不可与 RPI 撮合的订单
- 所有 API 订单(含其他 RPI 订单、API 渠道触发的计划委托)
- 网格策略单
五、交易规则
| 规则项 | 说明 |
|---|---|
| 支持产品 | 现货(含杠杆) |
| 订单机制 | 与普通限价单相同(保证金要求、最小 / 最大规模、价格限制均一致) |
| 支持操作 | 批量下单、修改(价格 / 数量)、撤单、批量撤单、部分成交 |
| 不兼容 | 不可与条件单(止盈止损、计划委托等)组合使用 |
| 价格限制 | 下单时不可与对手盘非RPI订单价格交叉,否则会被撤单 |
价格限制示例
- 提交价格 99 的 RPI 买单 → 接受
- 提交价格 102 的 RPI 买单 → 拒绝,因与卖二价102的普通单价格交叉
| 等级 | 价位 | 数量 |
|---|---|---|
| 卖二价 | 102 | 25 |
| 卖一价 | 100(RPI) | 15 |
| 买一价 | 99(RPI) | 10 |
| 买二价 | 98 | 20 |
六、订单可见性
| 模块 | 场景 | 说明 |
|---|---|---|
| 订单簿 | APP / 网页端 | RPI订单正常展示,无特殊标签;价格交叉时自动隐藏,隐藏后仍在引擎中活跃,符合条件可成交。 |
| OpenAPI | 不可见。 | |
| 个人订单记录 | APP / 网页端 | 做市商可在当前委托及历史记录中查看RPI订单及 “RPI” 标识;普通用户订单无特殊标识。 |
| OpenAPI | RPI订单正常展示,可区分RPI 订单和普通订单。 |
价格交叉隐藏示例:
示例1:两笔 RPI 订单价格交叉(买价 ≥ 卖价)→ 买卖两侧均隐藏
| / | 价位 | 数量 | 可见 |
| 卖四价 | 1,005 | 20 | 是 |
| 卖三价 | 1,003 (RPI) | 15 | 是 |
| 卖二价 | 1,001 (RPI) | 10 | 否 |
| 卖一价 | 999 (RPI) | 5 | 否 |
| 买一价 | 1,002 (RPI) | 10 | 否 |
| 买二价 | 1,000 (RPI) | 20 | 否 |
| 买三价 | 998 | 25 | 是 |
| 买四价 | 997 (RPI) | 30 | 是 |
示例2:RPI 订单与 API 订单或网格单价格交叉 → 隐藏 RPI 订单,对手方正常显示
| / | 价位 | 数量 | 可见 |
| 卖四价 | 1,005 | 20 | 是 |
| 卖三价 | 1,003 (RPI) | 15 | 是 |
| 卖二价 | 1,001 (RPI) | 10 | 否 |
| 卖一价 | 999 (RPI) | 5 | 否 |
| 买一价 | 1,002 (网格策略单) | 10 | 是 |
| 买二价 | 1,000 (API) | 20 | 是 |
| 买三价 | 998 | 25 | 是 |
| 买四价 | 997 (RPI) | 30 | 是 |
七、费率说明
RPI 订单适用专属 RPI Maker 费率,替代做市商原 Maker 费率;非 RPI 订单仍按原费率执行。
RPI 专属费率可通过接口 GET /v2/reference/transact-fee-rate 查询,返回参数中新增 rpiFeeRate 字段即为当前有效的 RPI Maker 费率;也可直接咨询 HTX 做市商运营团队。
八、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 字段 |
| 所有交易对最新 Tickers | GET /market/tickers |
不做结构调整,RPI 成交正常纳入统计 |
| 聚合行情 Ticker | 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} |
返回字段新增 另新增 |
| 基于 clientOrderId 查询 | GET /v1/order/orders/getClientOrder |
返回字段新增 另新增 |
| 成交明细 | GET /v1/order/orders/{order-id}/matchresults |
返回字段新增 另新增 |
| 搜索历史订单 | GET /v1/order/orders |
返回字段新增 另新增 |
| 近 48 小时历史订单 | GET /v1/order/history |
返回字段新增 另新增 |
| 当前和历史成交 | 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,可实时识别因价格交叉触发的撤单 |
以上。