导航
English
Java Python Go C++

2026-08-20

WebSocket 订单频道推送行为调整

为了让客户能够更明确地判断 post-only(包括 mmp_and_post_only)与 rpi 新订单的最终状态,避免收到 state: live 后订单仍被撤销的场景,欧易已调整订单频道post-onlyrpi 订单的 state: live 事件行为。

具体影响

场景 调整前 调整后
post-only 订单挂单失败
(价格穿越 BBO 被撤单)
state: livestate: canceled 只推 state: canceled(不再有 state: live
post-only 订单成功挂单 立即推 state: live state: live(延后约 1 ms)
post-only 订单成功挂单后被吃单
(一次成交)
state: livestate: filled state: live(延后约 1 ms) → state: filled
post-only 订单成功挂单后被吃单
(多次部分成交)
state: livestate: partially_filledstate: filled state: live(延后约 1 ms) → state: partially_filledstate: filled
post-only 订单带 reduceOnly: true
size 被修改
state: livestate: liveamendSource: 4amendResult: 0 state: liveamendSource: 4amendResult: 0) → state: live
rpi 订单,rpiPxRound: false
挂单失败
(不满足价格间距规则被撤单)
N/A 只推 state: canceled(不会有 state: live
rpi 订单,rpiPxRound: true
并且 price 被修改
N/A state: liveamendSource: 6amendResult: 0) → state: live

生效时间

影响范围

受影响的订单类型有:post_onlymmp_and_post_onlyrpi(Retail Price Improvement)。

其他订单类型如 limit(普通限价单)、market(市价单)、iocfok 订单推送行为保持不变。

2026-08-18

RPI 挂单最小名义金额限制

RPI 挂单(ordType: rpielp)现需满足最小名义金额门槛。低于门槛的订单将被拒绝,返回错误码 54051。生产环境自 2026年8月18日 起生效。

各产品类型最低限额

产品类型 最小名义金额
SWAP / FUTURES 10,000 USD
SPOT 1,000 USD
EVENTS 不适用

本规则独立于各产品现有的最小下单量(minSz)校验——RPI 订单需同时满足两者。

下单

名义金额低于适用门槛的 RPI 订单将被拒绝,返回 54051。批量请求中每条子订单独立校验——未通过的子订单返回自身 sCode: 54051,其余子订单不受影响。

非 RPI 订单(包括 rpiTakerAccess: true 的 taker 订单)不受本规则影响。

改单

批量改单请求中每条子订单独立校验——行为与单笔改单一致。

存量订单

本规则生效前已在架的 RPI 挂单不受影响。校验仅适用于上线后新提交的下单与改单请求。

错误码

新增错误码:

错误码 消息
54051 RPI 订单被拒绝。订单价值低于 RPI 订单所需的最低金额({param0} USD)。

适用于所有 REST 及 WebSocket trade 操作:

2026-08-11

RPI 挂单价格间距与可见性规则更新

RPI 挂单价格间距规则的交叉校验与价格档位校验现仅参考首个可见的对手方 RPI,不参考已隐藏的 RPI。RPI 的可见性同时决定 books-rpi 订单簿上展示的可成交 RPI 深度。本次不涉及任何接口、参数、枚举值或错误码的变更。

价格间距规则

可见性

改单

影响 RPI 挂单的下单与改单(ordType: rpi),以及 books-rpi 订单簿:

2026-08-06

获取历史市场数据接口最大查询范围下调

获取历史市场数据 接口的最大查询范围已由 20 下调至 10。

参数名 类型 描述
begin String 最大范围:日度 10 天,月度 10 个月(此前为 20 天 / 20 个月)。

2026-07-28

ELP 更名为 RPI(散户价格优化)计划

OKX 将品牌 Enhanced Liquidity Program(ELP) 更名为 Retail Price Improvement(散户价格优化,RPI)。本次变更包含新的 RPI 合并深度订单簿(books-rpi,同时提供 WebSocket 与 REST)、更名后的挂单类型 rpi(替代 elp)、扩展后的下单参数 rpiTakerAccess(替代 isElpTakerAccess)、用于 RPI 挂单价格间距规则的新参数 rpiPxRound,以及更名后的账户字段 rpi/rpiMaker

ELP 命名弃用截止日期:2026年10月31日

在此日期之前,OKX 将以两种不同方式并行运行 ELP 与 RPI 命名:

现有集成可继续正常运行,无需改动。ELP 命名将于上述截止日期后停止支持——请在此之前完成所有集成向 RPI 命名的迁移。

新增合并深度:books-rpi(WS + REST)

asks/bids 中的每个元素为 [price, totalQty, nonRpiQty, count]——totalQty 为该档位的总深度,nonRpiQty 为其中仅有机的部分,count 为该档位的汇总订单数量。

REST 请求参数:instId(必填)、sz(每侧深度档数,最大 400,默认 1)。

吃单参数:rpiTakerAccess(替代 isElpTakerAccess

均适用于下单/改单,REST + WS:

参数名 类型 是否必须 描述
rpiTakerAccess Boolean 默认值为 false
设为 true 时,订单可使用 RPI 流动性,适用于所有标准订单类型(此前仅 ioc)。
rpiTakerAccesstrue 时,减速带机制在下单和改单时均适用于所有 ordType,包括 post_only
改单时不会从原始订单继承,必须每次显式指定(省略则该次改单视为 false)。

挂单类型:rpi(替代 elp

适用于下单,REST + WS:

挂单参数:rpiPxRound

均适用于下单/改单,REST + WS(接口列表同上方 rpiTakerAccess)。

参数名 类型 是否必须 描述
rpiPxRound Boolean 默认值为 false。设为 true 时,违反间距规则的价格将自动向外取整至最近的可挂单、且不会吃单的价位,而非直接拒绝。

RPI 挂单价格间距规则

RPI 挂单需遵守间距规则(见下方 rpiMinLevel / rpiMinPxBand)。订单违反该规则时将被拒绝,除非 rpiPxRound 设为 true,此时价格会自动向外取整至最近的合规价位(见上方 rpiPxRound)。

参数名 类型 描述
rpiMinLevel String RPI 买一价与卖一价之间的最小间距,以有机价格档位数计。默认值为 4;事件合约(Event Contracts)为 0
rpiMinPxBand String 满足间距规则所需的、与对方最优有机报价之间的最小距离,单位为基点(bps),例如 20

RPI 挂单权限字段:rpi(替代 elp

参数名 类型 描述
rpi String RPI 挂单权限。
0:该产品未开通 RPI
1:已开通,但当前用户无权限下 RPI 订单
2:已开通且当前用户有权限
返回 1/2 不代表当前存在 RPI 流动性。

RPI 挂单费率字段:rpiMaker(替代 elpMaker

参数名 类型 描述
rpiMaker String RPI 挂单有效费率,若该产品不适用 RPI 则返回 ""

成交来源字段:source

错误码变更

错误消息由 ELP 更新为 RPI:

错误码 原消息 更新后消息
54039 ELP 订单不支持仅减仓设置 RPI 订单不支持仅减仓设置
54040 ELP 订单无法与止盈止损设置同时使用 RPI 订单无法与止盈止损设置同时使用
54041 {param0} 不支持下 ELP 订单 {param0} 不支持下 RPI 订单
54042 您无法为 {param0} 下 ELP 订单 您无法为 {param0} 下 RPI 订单
54043 您最多只能为 {param0} 下 {param1} 个 ELP 订单,请撤销部分订单后再试 您最多只能为 {param0} 下 {param1} 个 RPI 订单,请撤销部分订单后再试
54044 {param0} 不支持 ELP,你不能吃单 ELP 挂单 {param0} 不支持 RPI,你不能吃单 RPI 挂单
54046 你不能吃单 ELP 挂单 你不能吃单 RPI 挂单
54049 由于系统繁忙,API 用户目前无法吃单 ELP 挂单。请将 isElpTakerAccess 设置为 false 以继续操作 由于系统繁忙,API 用户目前无法吃单 RPI 挂单。请将 rpiTakerAccess 设置为 false 以继续操作

已弃用错误码:

错误码 消息 原因
54045 OpenAPI 用户只能下 IOC 订单来吃单 ELP 挂单 已废弃——rpiTakerAccess 现适用于所有订单类型,不再限于 IOC。

2026-07-23

GLP 做市商表现 API

新增两个只读接口,面向已加入 Global Liquidity Program (GLP) 的做市商查询自己的考核表现:当日快照(含当日及 MTD)和逐日历史记录。仅已加入且在有效期的 GLP 做市商可调用,子账户解析到其 master account。

GET / 获取 GLP 当日表现

获取当前账户在所有已加入 GLP 业务线(Spot / Perp / Expiry & Nitro)的当日和月度累计(MTD)表现快照。无需请求参数,账户由 API key 自动解析。

限速:5次/2s

限速规则:User ID

权限:读取

HTTP请求

GET /api/v5/users/glp/todayperformance

请求示例

GET /api/v5/users/glp/todayperformance

请求参数

无。账户由登录态自动解析。

返回示例

{
    "code": "0",
    "msg": "",
    "data": [
        {
            "dataReady": true,
            "dataDate": "2026-07-13",
            "account": {
                "masterAccountId": "832545488879789797",
                "combinedAccountIds": ["832545488879789798"]
            },
            "programs": [
                {
                    "program": "SPOT",
                    "marketMakerBusinessId": "1",
                    "enrollmentStatus": "ENROLLED",
                    "marketMakerLevelId": "42",
                    "enrolledTierDisplay": "Tier 1 Class A",
                    "qualifyingPool": "TYPE_A",
                    "qualifyingRows": ["TOTAL"],
                    "daily": {
                        "volume": {
                            "typeA": {"maker": "1000000.00", "taker": "1000000.00"},
                            "typeBTotal": {"maker": "1000000.00", "taker": "1000000.00"},
                            "tradfiX2": {"maker": "1000000.00", "taker": "1000000.00"},
                            "total": {"maker": "2000000.00", "taker": "2000000.00"}
                        },
                        "share": {
                            "typeA": {"maker": "0.0000", "taker": "0.0000"},
                            "typeBAdj": {"maker": "0.0000", "taker": "0.0000"},
                            "total": {"maker": "0.0000", "taker": "0.0000"}
                        }
                    },
                    "mtd": {
                        "volume": {
                            "typeA": {"maker": "30000000.00", "taker": "30000000.00"},
                            "typeBTotal": {"maker": "30000000.00", "taker": "30000000.00"},
                            "tradfiX2": {"maker": "30000000.00", "taker": "30000000.00"},
                            "total": {"maker": "60000000.00", "taker": "60000000.00"}
                        },
                        "share": {
                            "typeA": {"maker": "0.0000", "taker": "0.0000"},
                            "typeBAdj": {"maker": "0.0000", "taker": "0.0000"},
                            "total": {"maker": "0.0000", "taker": "0.0000"}
                        },
                        "mtdStatus": "QUALIFIED",
                        "qualifyingShare": {"maker": "0.0000", "taker": "0.0000"}
                    }
                }
            ]
        }
    ]
}

返回参数

参数名 类型 描述
dataReady Boolean dataDate 是否已有数据。为 falseprograms 为空数组
dataDate String 数据快照日期,yyyy-MM-dd 格式(UTC+8)。通常为 T-1;T-1 计算未完成时回退 T-2
account Object 账户身份信息
> masterAccountId String master account ID
> combinedAccountIds Array of strings 同机构组的兄弟账户 ID(不含自己)。无组则为空数组
programs Array of objects 各已加入 GLP 业务线的表现数据。dataReadyfalse 时为空数组
> program String GLP 业务线标识。
SPOT:现货
PERP:永续合约
FUT_NTO:交割合约 & Nitro
> marketMakerBusinessId String 该业务线的做市商 business ID
> enrollmentStatus String 加入状态。当前恒为 ENROLLED
> marketMakerLevelId String 当前档位 ID
> enrolledTierDisplay String 当前档位展示名,如 Tier 1 Class A
> qualifyingPool String 决定当前档位的池。
TYPE_A
TYPE_B_ADJ
TYPE_A_AND_B
> qualifyingRows Array of strings 合格行 key,如 ["TOTAL"]
> daily Object 当日表现快照。包含 volumeshare(结构见下方说明)
> mtd Object 月度累计表现。包含 volumeshare(同 daily 结构),以及以下额外字段
>> mtdStatus String MTD 档位状态。
QUALIFIED:达标
UPGRADE:升档
DOWNGRADE:降档
>> qualifyingShare Object 决定档位的池的份额。包含 maker(String)和 taker(String)

交易量和份额结构

dailymtd 均包含 volume(交易量)和 share(份额)两个 Object。每个 Object 下含分类 key,每个分类为包含 maker(String)和 taker(String)字段的 Object。

分类 volume share 描述
typeA Type A。FUT_NTO 时为 null
typeBTotal Type B 合计。FUT_NTO 时为 null
typeBAdj Type B 调整后。FUT_NTO 时为 null
tradfiX2 TradFi 量(已 ×2)。FUT_NTO 时为 null
total 各类型合计。始终存在

GET / 获取 GLP 历史表现

获取单个 GLP 业务线的逐日表现记录,按日期降序排列(最新日期在前)。

限速:5次/2s

限速规则:User ID

权限:读取

HTTP请求

GET /api/v5/users/glp/historicalperformance

请求示例

GET /api/v5/users/glp/historicalperformance?program=SPOT
GET /api/v5/users/glp/historicalperformance?program=SPOT&begin=1751299200000&end=1753804800000&limit=31

请求参数

参数名 类型 是否必须 描述
program String GLP 业务线标识。
SPOT
PERP
FUT_NTO
begin String 开始日期过滤(含)。Unix 毫秒字符串,如 "1751299200000"。默认:当月 1 号(UTC+8)
end String 结束日期过滤(含)。Unix 毫秒字符串。默认:今天(UTC+8)
limit String 每页最大记录数。默认 "31",最大 "100"

返回示例

{
    "code": "0",
    "msg": "",
    "data": [
        {
            "date": "2026-07-13",
            "volume": {
                "typeA": {"maker": "1000000.00", "taker": "1000000.00"},
                "typeBTotal": {"maker": "1000000.00", "taker": "1000000.00"},
                "tradfiX2": {"maker": "1000000.00", "taker": "1000000.00"},
                "total": {"maker": "2000000.00", "taker": "2000000.00"}
            },
            "share": {
                "typeA": {"maker": "0.0012", "taker": "0.0010"},
                "typeBAdj": {"maker": "0.0008", "taker": "0.0007"},
                "total": {"maker": "0.0010", "taker": "0.0009"}
            }
        },
        {
            "date": "2026-07-12",
            "volume": {
                "typeA": {"maker": "950000.00", "taker": "980000.00"},
                "typeBTotal": {"maker": "850000.00", "taker": "900000.00"},
                "tradfiX2": {"maker": "800000.00", "taker": "820000.00"},
                "total": {"maker": "1800000.00", "taker": "1880000.00"}
            },
            "share": {
                "typeA": {"maker": "0.0011", "taker": "0.0009"},
                "typeBAdj": {"maker": "0.0007", "taker": "0.0006"},
                "total": {"maker": "0.0009", "taker": "0.0008"}
            }
        }
    ]
}

返回参数

参数名 类型 描述
date String 日期,yyyy-MM-dd 格式(UTC+8)
volume Object 各池类型的交易量(美元名义,2 位小数)。结构同当日表现接口的 daily.volume
share Object 各池类型的市场份额(小数字符串,4 位小数,无 % 后缀)。结构同当日表现接口的 daily.share

错误码

错误码 HTTP 状态码 错误提示
50030 200 您无权使用此 API 端点
50014 200 参数 {param0} 不能为空
51000 200 参数错误
50016 200 参数 {param0} 与参数 {param1} 不匹配

FUTURES 和 SWAP 计划委托支持追逐限价委托(Chase Order)

FUTURES 和 SWAP 计划委托(Trigger Order)现可在触发时下发追逐限价委托(Chase Order)——advanceOrdType 新增取值 chase,其参数由新增数组 advChaseParams 承载。查询接口通过新增字段 subAlgoIdList 返回触发后生成的追逐委托 algoId;在计划委托触发前,可通过改单接口修改追逐值。本期暂不支持追逐委托与附带止盈止损(attachAlgoOrds)同时设置。

策略委托下单

参数名 类型 是否必须 描述
advanceOrdType String 计划委托的子订单类型。
fokiocchase
chase 仅适用于 FUTURES 和 SWAP。
默认为空(按 orderPx 下发限价或市价单)。
orderPx String 条件必填 计划委托触发时下发订单的价格。-1 表示市价。当 advanceOrdTypechase 时不适用(追逐委托无固定价格)。
advChaseParams Array of objects 条件必填 追逐参数。当 advanceOrdTypechase 时必填。
> chaseType String 条件必填 追逐距离单位。
distance(默认):与买一价/卖一价的绝对价格距离,以结算货币计。
ratio:百分比。
> chaseVal String 条件必填 追逐值。当 chaseTypedistance 时,为与买一价/卖一价的距离(以结算货币计);当 ratio 时,0.1 表示 10%。
默认值 0 表示直接跟随买一价/卖一价;大于 0 表示设置一个距离。
> maxChaseType String 条件必填 最大追逐距离单位。distanceratio。须与 maxChaseVal 成对出现。
> maxChaseVal String 条件必填 最大追逐距离值。须为正数。须与 maxChaseType 成对出现。当偏离达到该值时,追逐委托自动撤单。

修改策略委托订单

参数名 类型 是否必须 描述
advChaseParams Array of objects 条件必填 待修改的追逐参数。仅适用于 advanceOrdTypechase 的挂单中计划委托。
> newChaseVal String 条件必填 新的追逐值。非负数,按订单已有(不可修改)的 chaseType 解释。不可越过原 chaseVal0 ↔ 非 0 边界——直接跟随买一价/卖一价(0)与设置距离(大于 0)两种模式不可互换。
> newMaxChaseVal String 条件必填 新的最大追逐距离值。须为正数,按已有(不可修改)的 maxChaseType 解释。仅在已启用最大追逐距离时适用。

查询接口(委托单信息、委托单列表、WS 频道)

参数名 类型 描述
advanceOrdType String 计划委托的子订单类型。fokiocchase 或空。
advChaseParams Array of objects 追逐参数。当 advanceOrdTypechase 时返回。
> chaseType String 追逐距离单位。distanceratio
> chaseVal String 追逐值。0 表示直接跟随买一价/卖一价;大于 0 表示距离。
> maxChaseType String 最大追逐距离单位。distanceratio
> maxChaseVal String 最大追逐距离值。
subAlgoIdList Array of strings 计划委托触发时生成的策略委托单 algoId。当 advanceOrdTypechase 时,在触发后存放生成的追逐委托 algoId,触发前为空。与 ordIdList 对应,后者记录生成的普通订单,对追逐委托始终为空。

2026-05-26

错误码 HTTP状态码 错误提示
54092 200 操作要求:请通过网页端或 App 前端尝试下单 TradFi 永续合约(TradFi Perps)交易,并完成免责声明确认。每个主账户及子账户都必须单独接受免责声明后,方可启用 API 交易功能。

2025-07-02

参数 类型 描述
notes String 备注

2025-06-26

2025-06-24

2025-05-28

2025-04-17

错误码 错误提示
59515 您当前不在托管账户白名单上。请联系客服寻求帮助。
59516 请先创建 Copper 托管资金账户
59517 请先创建 Komainu 托管资金账户
59518 您当前无法使用 API 创建子账户。请在网页端或 App 端创建。
59519 此功能已冻结,暂时无法使用,冻结原因:{freezereason}

2024-09-18