Bitget 零售价格优化 (RPI) 订单
【预计阅读时间:5分钟】
RPI(Retail Price Improvement,零售价格优化)订单是统一账户模式下的一种特殊订单类型,只可与非算法订单(即非 OpenAPI 委托订单)匹配,目的是提高流动性。该订单类型为符合条件的零售订单提供更优的成交价格,从而实现价格改善(Price Improvement),降低滑点。
RPI 订单核心机制
1. RPI 订单只与非算法订单相匹配,不与通过 OpenAPI 提交的订单进行交易。
2. 所有 RPI 订单均为被动委托订单,属于 Maker 订单,只能和 Taker 订单成交,可为订单簿增加流动性。
3. 在同价格档位,无论时间先后,RPI 订单相比于非 RPI 订单成交优先级更低,只有在相同价位的非 RPI 订单全部执行完毕后,才会执行 RPI 订单。
RPI 订单如何下单
1. RPI 订单可通过 REST API 或 WebSocket API 提交,需设置订单设置为limit 且 timeInForce = rpi。
2. 仅特定做市商合作伙伴可以下达 RPI 订单。如未经授权的做市商尝试下单,将会收到以下错误提示:“账号不支持委托该品种的RPI订单”。
RPI 订单交易规则
1. RPI 订单支持统一账户逐仓保证金、全仓保证金模式;支持交易合约、现货和杠杆业务线
2. 盘前交易不支持 RPI 订单,只有集合竞价后可以下,否则订单会被拒绝。
3. RPI 订单校验逻辑同普通限价单,保证金要求、最小和最大订单规模、OI 限仓等与普通限价单相同
4. RPI 订单限价规则
a. 对合约:
• 买单:标记价格*110%>= RPI 订单委托价>=标记价格*50%
• 卖单:标记价格*150%>= RPI 订单委托价>=标记价格*90%
b. 对杠杆、现货:
• 买单:最新成交价格*110%>= RPI 订单委托价>=最新成交价格*70%
• 卖单:最新成交价格*130%>= RPI 订单委托价>=最新成交价格*90%
备注:以上 50%、90% 和 110%、150% 均为参考阈值,每个币对可单独配置,平台有权根据市场情况进行调整
5. RPI 订单支持批量下单、订单修改(包括价格和数量)及取消操作。
6. RPI 订单无法与策略订单(包括止损、止盈或止损限价单)结合使用。
7. RPI 订单不能成交对手盘中的非 RPI 订单。当对手盘中仅有 RPI 订单时,允许成交,但 RPI 订单之间不会相互撮合。
8. 市场波动可能导致 RPI 买单价格超过非 RPi 买一价,RPI 卖单价格低于非 RPI 卖一价。这些 RPI 订单将被视为无效订单,无法撮合,但仍处于挂单状态。一旦出现价格更优的非 RPI 订单,这些订单将被视为有效。
RPI 订单显示
1. API 订单簿:RPI 订单会显示在 API 订单簿中。
2. 交易页面订单簿:RPI 订单会在交易界面显示,无任何特殊标签。
为使订单簿井然有序,买入价高于卖出价的交叉 RPI 订单将被隐藏。关于交叉 RPI 订单的更多详情,请参考下述示例:
示例 1
订单簿如下所示:
|
|
价格
|
数量
|
|
卖二价
|
1,002
|
200
|
|
卖一价
|
1,000 (RPI)
|
100
|
|
买一价
|
999 (RPI)
|
90
|
|
买二价
|
998
|
120
|
• 提交价格为 1,000 的新 RPI 买单,被接受。
• 提交价格为 1,001 的新 RPI 买单,被接受。
• 提交价格为 1,002 的新 RPI 买单,被拒绝,因为卖二价位存在非 RPI 订单。
交易页面上的订单簿:
当出现触价时:
• 触价的 RPI 订单在交易页面的订单簿中处于隐藏状态,但仍会在撮合引擎中保持有效,并可根据规则执行。
• 未触价的 RPI 订单正常显示,无特殊标签。
示例 2
订单簿如下所示。触价的 RPI 订单处于隐藏状态,且不会相互撮合。
|
|
价格
|
数量
|
是否可见
|
|
卖四价
|
1,004
|
200
|
是
|
|
卖三价
|
1,003 (RPI)
|
150
|
是
|
|
卖二价
|
1,001 (RPI)
|
100
|
否
|
|
卖一价
|
999 (RPI)
|
50
|
否
|
|
买一价
|
1,002 (RPI)
|
100
|
否
|
|
买二价
|
1,000 (RPI)
|
200
|
否
|
|
买三价
|
999
|
200
|
是
|
|
买四价
|
996 (RPI)
|
300
|
是
|
在 API 的订单簿数据或数据流中,所有 RPI 订单均被排除在外。
OpenAPI 和数据深度
1. RPI 深度
1.1 REST
• GET /api/v3/market/rpi-orderbook
• 限频: 10次/s
|
参数名称
|
参数类型
|
请求响应
|
是否必填
|
参数说明
|
|
category
|
String
|
请求参数
|
是
|
业务线
spot现货
usdt-futuresU本位合约
coin-futures币本位合约
usdc-futuresUSDC合约
|
|
symbol
|
String
|
请求参数
|
是
|
交易对名称
|
|
limit
|
String
|
请求参数
|
否
|
深度档位
spot最大值为200,默认值为5
usdt-futures,coin-futures,usdc-futures最大值为200,默认值为5
|
|
a
|
Array
|
响应参数
|
/
|
卖方深度
• 按价格升序排序
|
|
> Index 0
|
String
|
响应参数
|
/
|
卖方价格
|
|
> Index 1
|
String
|
响应参数
|
/
|
卖方非RPI数量
|
|
> Index 2
|
String
|
响应参数
|
/
|
卖方RPI数量
|
|
b
|
Array
|
响应参数
|
/
|
买方深度
• 按价格降序排序
|
|
> Index 0
|
String
|
响应参数
|
/
|
买方价格
|
|
> Index 1
|
String
|
响应参数
|
/
|
买方非RPI数量
|
|
> Index 2
|
String
|
响应参数
|
/
|
买方RPI数量
|
|
ts
|
String
|
响应参数
|
/
|
系统生成数据的时间戳
• Unix时间戳, 毫秒
|
1.2 WebSocket
1.2.1 请求参数
|
参数名
|
类型
|
是否必传
|
说明
|
|
op
|
String
|
是
|
操作
subscribe 订阅
unsubscribe 退订
|
|
args
|
List
|
是
|
请求订阅的频道列表
|
|
> instType
|
String
|
|
产品线类型
spot现货交易
usdt-futuresUSDT合约
coin-futures币本位合约
usdc-futuresUSDC合约
|
|
> topic
|
String
|
是
|
频道名
rpi-books全部档位频道
rpi-books1一档频道
rpi-books5五档频道
rpi-books50五十频道
|
|
> symbol
|
String
|
是
|
交易对名称
例如BTCUSDT
|
1.2.2 返回参数
|
参数
|
类型
|
描述
|
|
event
|
String
|
事件
subscribe 订阅
unsubscribe 退订
error参数错误
|
|
arg
|
Object
|
订阅的频道
|
|
> instType
|
String
|
产品线类型
spot现货交易
usdt-futuresUSDT合约
coin-futures币本位合约
usdc-futuresUSDC合约
|
|
> topic
|
String
|
频道名
rpi-books全部档位频道
rpi-books1一档频道
rpi-books5五档频道
rpi-books50五十频道
|
|
code
|
String
|
错误码
|
|
msg
|
String
|
错误消息
|
1.2.3 推送参数
|
参数
|
类型
|
描述
|
|
arg
|
Object
|
订阅频道
|
|
> instType
|
String
|
产品线类型
spot现货交易
usdt-futuresUSDT合约
coin-futures币本位合约
usdc-futuresUSDC合约
|
|
> symbol
|
String
|
交易对名称
|
|
> topic
|
String
|
频道名
|
|
action
|
String
|
推送数据动作
snapshot全量
update增量
|
|
data
|
List
|
订阅数据
|
|
> a
|
String
|
卖方深度
|
|
>> a[0]
|
String
|
卖方价格
|
|
>> a[1]
|
String
|
卖方非RPI数量
|
|
>> a[2]
|
String
|
卖方RPI数量
|
|
> b
|
String
|
买方深度
|
|
>> b[0]
|
String
|
买方价格
|
|
>> b[1]
|
String
|
买方非RPI数量
|
|
>> b[2]
|
String
|
买方RPI数量
|
|
> ts
|
String
|
撮合时间戳
|
|
> seq
|
String
|
序列号
|
|
> previousSeq
|
String
|
上次推送序列号
|
2. 成交信息
平台成交接口及频道新增 RPI 类型标识
• 获取平台近期成交数据 /api/v3/market/fills
• 获取成交明细 /api/v3/trade/fills
• 公共成交频道 topic=publicTrade
• 私有成交频道 topic=fill
|
参数名称
|
参数类型
|
请求响应
|
是否必填
|
参数说明
|
|
isRPI
|
String
|
响应参数
|
/
|
是否为RPI类型成交
yes是
no否
|
3. 下单& 批量下单
下单及批量下单接口的订单执行策略新增rpi类型
• 下单 POST /api/v3/trade/place-order
• 批量下单 POST /api/v3/trade/place-batch
• 下单频道 topic=place-order
• 批量下单频道 topic=batch-place
|
参数名称
|
参数类型
|
请求响应
|
是否必填
|
参数说明
|
|
timeInForce
|
String
|
请求参数
|
是
|
订单执行策略
ioc 无法立即成交的部分就撤销
fok 无法全部立即成交就撤销
gtc 普通订单, 订单会一直有效,直到被成交或者取消
post_only 只做maker
rpi 零售价格优化订单
订单类型为限价单limit时必填,若省略则默认为gtc
|
4. 订单信息 & 当前委托 & 历史委托
• 订单信息GET /api/v3/trade/order-info
• 当前委托 GET /api/v3/trade/unfilled-orders
• 历史委托 GET /api/v3/trade/history-orders
• 订单频道 topic=order
|
参数名称
|
参数类型
|
请求响应
|
是否必填
|
参数说明
|
|
timeInForce
|
String
|
响应参数
|
是
|
订单执行策略
ioc 无法立即成交的部分就撤销
fok 无法全部立即成交就撤销
gtc 普通订单, 订单会一直有效,直到被成交或者取消
post_only 只做maker
rpi 零售价格优化订单
|
FAQs
1. 什么是零售价格优化 (RPI) 订单
RPI 订单是统一账户模式下的一种特殊订单类型,只可与非算法订单(即非 OpenAPI 委托订单)匹配,目的是提高流动性。该订单类型为符合条件的零售订单提供更优的成交价格,从而实现价格改善,降低滑点。
2. RPI 订单属于 Maker 还是 Taker?
所有 RPI 订单均为被动委托订单,属于 Maker 订单,只能和 Taker 订单成交,可为订单簿增加流动性。
3. RPI 订单在相同价格档位的成交优先级如何?
在同价格档位,无论时间先后,RPI 订单相比于非 RPI 订单成交优先级更低,只有在相同价位的非 RPI 订单全部执行完毕后,才会执行 RPI 订单。
4. RPI 订单支持哪些业务线和保证金模式?
RPI 订单支持统一账户逐仓保证金、全仓保证金模式;支持交易合约、现货和杠杆业务线。盘前交易不支持 RPI 订单,只有集合竞价后可以下,否则订单会被拒绝。
5. RPI 订单的校验逻辑是否与普通限价单相同?
RPI 订单校验逻辑同普通限价单,保证金要求、最小和最大订单规模、OI 限仓等与普通限价单相同。