关键词:自成交保护、STP、欧易 OKX、交易费用、交易风控、合规交易、API 参数、订单取消逻辑、主账户、子账户
自成交保护(Self-Trade Prevention,简称 STP)是数字资产交易所提升市场质量、降低费用损耗的重要手段。2024 年 3 月 13 日 18:00(UTC+8)起,欧易 OKX 将以「主账户」维度对所有交易对及业务线 强制开启 STP。本文拆解新规细节,助你提前布局订单策略,避免因不了解规则而产生非预期撤单或成交异常。
为什么 STP 对普通交易者也重要?
- 降低意外费用
过去同一主账户的内部账户(含子账户或同 UID)若发生撮合,会被系统视为“真实成交”并收取双边手续费。 - 阻断操纵嫌疑
自买自卖若无限制,容易被解读为刷量或虚假流动性。 - 提升算法精度
API 量化开发者能够更安心地分批下单,避免两把“左右互搏”的订单撞单。
👉 立即查看如何避免自成交:详解非冲突挂单技巧 (https://www.okx.com/join/8265080)
本次新规核心一览
- 生效时间:2024-03-13 18:00(UTC+8),适用 所有新订单请求。
- 覆盖范围:现货、U 本位永续、币本位合约、期权、闪兑、大宗交易 全链路上线。
- 取消逻辑:
默认模式为 取消 Maker 订单(taker-gets-through策略),以确保 Taker 订单流动性优先。你亦可自定义为「取消 Taker」或「完全禁止成交」。 - 主账户隔离级别:
同 UID 下,任何两两组合均视为自成交:
主账户 A
├── 子账户 A1(交易者)
├── 子账户 A2(做市)
└── 子账户 A3(套利)只要 A、A1、A2、A3 任意两者挂出的买卖单在同一档出现,STP 就会触发。
五类典型自成交场景与对策
| 场景编号 | 触发条件 | 可预见后果 | 推荐策略 |
|---|---|---|---|
| 场景 1 | 打开网格机器人,与手动子账户发出反向单 | Maker 单被撤、劳务费损失 | 提前调大网格微调间距,或错开交易对 |
| 场景 2 | API 高频做市时,心跳频控导致重复下单 | 订单簿出现稀疏缺口 | 用 order_tags 做幂等控制,订单号加随机后缀 |
| 场景 3 | 大宗 RFQ 询价单与你自营挂单价格重叠 | 无法收到该笔询价 | 将做市仓位迁移至独立子账户 |
| 场景 4 | 现货与合约期现套利同时挂单 | 现货 BUY 被撤,价差忽大忽小 | 以合约子账户挂单改为「只减仓」 |
| 场景 5 | 回撤策略平仓却碰对手盘是冒着同 UID | 持仓风险扩大 | 用「对手号」模拟做撤单重 hanging 不受 STP 限制 |
API 开发者必读:如何用 stpMode 做风控
在 REST 请求下单的 JSON 体中增设字段:
{
"instId": "BTC-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "limit",
"px": "50000",
"sz": "0.01",
"stpMode": "cancel_maker"
}可选值:
cancel_maker:默认值,撤销挂单cancel_taker:撤销吃单cancel_both:同时取消两笔
WebSocket 订单频道推送时,若因 STP 被撤,将返回 state = canceled 及 code = 51036。你可以在日志中直接捕获。
如何评估影响?三步自查清单
- 历史数据跑点时间窗口
拉取最近 30 天订单,counterparty_uid = self_uid即为潜在自成交。 - 手续费损失估算
把撤单对应成交金额 × 手续费率,再乘双边,得出每月额外成本。 架构调整优先级
- 若交易频次高 → 优先拆子账户
- 若仓位大 → 优先把对冲单移入「只减仓」属性
- 若对流动性敏感 → 勾选「cancel_taker」保持 Maker 挂单深度
FAQ:你可能最关心的 5 个问题
Q1:老订单还能被新订单触发 STP 吗?
A:可以。强制 STP 只对新订单生效,但只要它跟老单同方向同价格,仍可能被贴上「自成交」撤单。
Q2:我使用的是跟单/量化平台,需要改代码吗?
A:如果平台用你提供的单一 API Key 下单,确认该平台是否已升级到最新 SDK。否则请联系开发者,把 stpMode 参数补齐。
Q3:会不会出现“撤单滑点”?
A:在高流动性市场滑点极小。但对深度不足的冷门币对,Maker 单被撤后可能出现 0.1 % 以上差价,建议改用 IOC(Immediate-Or-Cancel)作为吃单手路。
Q4:子账户间的资金划转还能做吗?
A:不受影响。划转资金属于账户资产转移,与撮合成交是两码事。
Q5:大宗交易的 RFQ 资格如何判断?
A:Taker 的 UID 若与 Maker 的 UID 一致,则无法发送 RFQ 询价通知。可以把做市账号独立出来避免失效。
提前部署:官方工具与社区实践
- 网页端:点「资产 → 历史订单 → 高级筛选」,在「备注」里搜索
STP即可定位撤单记录。 - App:打开右上角「设置 → 功能实验室」,即将上线「STP 模拟器」。
- 社区经验:多位高频做市商已分享“防自成交蓝图”,把子账户拆成:
主-执行、主-被动挂单、主-风控调仓三类,彻底隔绝交叉风险。
总结与时间线
| 日期 | 事件 |
|---|---|
| 2023-06 | STP 作为 可选功能 向 API 用户开放 |
| 2024-03-13 18:00 | 强制执行 覆盖全站,且不可关闭,需提前自查代码 |
| 2024-03-20(预估) | 社区最优实践汇总更新 |
自成交保护看似只是技术细节,却深刻影响你的交易成本与风控安全。现在检查子账户架构、更新 API 参数、并同步团队培训,即可平稳过渡这一次合规升级。