引言
欧易交易所的统一账户交易系统将API从V3版本升级至V5版本,带来了更丰富和完善的功能。本文作为系列教程的第二部分,将重点介绍V5 API在交易执行、账户管理与持仓监控中的实用技巧,帮助开发者提升交易系统的效率和可靠性。
交易操作详解
交易模式设置
在统一账户系统中,全仓与逐仓设置更加灵活,允许用户同时以两种模式交易同一产品。因此,下单时必须通过tdMode
字段明确指定交易模式。
常见情景下的tdMode
取值规则:
- 跨币种保证金模式下,若采用全仓模式,应设置为
cross
- 逐仓模式下需设置为
isolated
实战下单示例
假设配置如下:
- 账户模式:跨币种保证金
- 持仓模式:单向持仓
- 交易产品:BTC-USDT永续合约
- 保证金模式:全仓
- 操作方向:买入开多
- 订单类型:限价单
- 委托价格:50,912.4 USDT
- 委托数量:1张
根据规则,tdMode
应设置为cross
。同时强烈建议设置客户自定义订单ID(clOrdId
字段),格式要求:
- 以字母开头
- 由字母与数字或纯字母组成
- 区分大小写
- 最长32位
例如可将clOrdId
设为testBTC0123
。
订单频道订阅策略
下单前必须通过WebSocket订阅订单频道,才能实时监控订单状态变化(如等待成交、完全成交等)。V5 API提供多种维度的订阅方式:
- 按产品类型订阅:指定
instType
为SWAP
- 按产品ID订阅:指定
instId
为具体交易对 - 通用订阅:设置
instType
为ANY
,可一次性订阅所有产品类型
重要提示:订单频道不提供首次订阅的全量数据推送,仅在订单状态变更时推送更新。如需获取订阅前的未完成订单,需调用REST API:
GET /api/v5/trade/orders-pending
订单执行方式
REST API下单
使用以下端点提交订单:
POST /api/v5/trade/order
服务器返回订单ID(ordId
字段)仅表示请求已被接收,并不保证订单立即生效,需进一步确认订单状态。
WebSocket下单
通过私有WebSocket连接发送操作请求,设置"op": "order"
。异步通信机制要求提供唯一信息ID(id
字段)用于匹配响应。
订单状态监控
成功下单后,订单频道将推送状态为live
的信息。当订单完全成交时,会收到状态为filled
的更新,并包含成交ID(tradeId
字段),该字段是后续持仓对账的关键标识。
订单修改与撤销
V5 API支持所有产品类型的订单修改,可调整价格(newPx
字段)和数量(newSz
字段)。特色功能:
- 支持
cxlOnFail
参数:修改失败时自动撤单 - 通过REST(
POST /api/v5/trade/amend-order
)或WebSocket("op": "amend-order"
)操作 - 已完全成交或撤销的订单不可修改
撤单操作类似:
- REST端点:
POST /api/v5/trade/cancel-order
- WebSocket操作:
"op": "cancel-order"
- 最终需通过订单频道确认状态变为
canceled
批量操作功能
支持批量下单、改单和撤单,单次最多处理20个订单。统一API允许同一批次包含不同产品类型:
操作类型 | REST端点 | WebSocket操作 |
---|---|---|
批量下单 | POST /api/v5/trade/batch-orders | "op": "batch-orders" |
批量改单 | POST /api/v5/trade/amend-batch-orders | "op": "batch-amend-orders" |
批量撤单 | POST /api/v5/trade/cancel-batch-orders | "op": "batch-cancel-orders" |
批量操作允许部分成功,需检查返回结果中每个订单的sCode
和sMsg
字段确认执行状态。
账户与持仓管理
统一账户体系
欧易统一账户系统将所有产品类型整合到单一账户中,不再区分币币、杠杆、合约等独立账户。
WebSocket账户订阅
建议通过WebSocket订阅账户频道获取实时更新。可选用ccy
参数筛选特定币种:
首次订阅将推送全量数据,包含所有资产不为0的币种信息(总权益、可用保证金、可用余额任一不为0)。后续推送分两种类型:
- 事件触发推送:由交易事件引发,仅推送受影响币种
- 定时推送:每10秒推送一次全量数据
REST账户查询
通过以下端点查询账户余额:
GET /api/v5/account/balance
支持单币种或多币种查询(最多20个),无论资产是否为0都会返回数据,这与WebSocket推送逻辑不同。
最大可用数量查询
跨币种保证金模式下,启用自动借币功能后可超过余额进行交易。通过以下API获取最大可用数量:
GET /api/v5/account/max-avail-size
返回结果包含:
availBuy
:计价货币最大买入量availSell
:交易货币最大卖出量
持仓监控策略
WebSocket持仓订阅
持仓频道提供多种订阅维度,支持按产品类型或产品ID订阅,也可设置instType
为ANY
订阅所有类型。
首次订阅推送持仓数量不为0的全量数据(pos
字段大于或小于0)。后续推送机制:
- 事件触发推送:开仓、平仓等事件引发,可能聚合多个事件
- 定时推送:每10秒推送一次全量数据
持仓ID体系
每项持仓都有唯一标识(posId
),由mgnMode
+ posSide
+ instId
+ ccy
字段生成。该标识不随平仓和再开仓变化,可用于REST API查询:
GET /api/v5/account/positions
支持按产品类型、产品ID或多个持仓ID查询。
订单与持仓对账方法
利用成交ID(tradeId
字段)可实现订单成交与持仓变动的对账。注意事项:
- 多个持仓变化可能聚合为单次推送
- 强平/强减或ADL不推送订单更新
- 强平/强减触发的持仓更新不更新
tradeId
准确对账需综合比较:
- 成交ID的数字大小(新的成交ID值更大)
- 持仓数量变化
- 持仓更新时间(
uTime
字段)
👉 查看进阶对账策略
常见问题
V5 API与V3的主要区别是什么?
V5 API主要改进包括:统一账户支持、更灵活的订阅维度、全量数据推送机制、增强的批量操作功能,以及更完善的订单修改支持。
如何选择REST还是WebSocket下单?
WebSocket下单延迟更低且节省资源,适合高频交易场景;REST API更简单易用,适合普通交易频率。两者功能完全一致。
为什么订阅订单频道后收不到历史订单数据?
订单频道设计为仅推送状态变更,不提供历史数据。需要获取初始状态需调用GET /api/v5/trade/orders-pending
接口。
最大可用数量查询包含借币额度吗?
是的,在启用自动借币的跨币种保证金模式下,最大可用数量查询结果包含可用余额加上交易所的最大可借额度。
持仓ID会重复使用吗?
不会。持仓ID在账户内唯一标识一个持仓位置,即使平仓后重新开仓,也会生成新的持仓ID。
如何正确处理定时推送和事件推送?
定时推送用于保证数据一致性,事件推送用于实时更新。系统应同时处理两种推送类型,以事件推送为主,定时推送作为冗余校验。
总结
本文详细介绍了欧易V5 API的交易操作流程、账户管理方法和持仓监控技巧。关键要点包括:正确设置交易模式、实时订阅订单频道、灵活运用批量操作、有效管理统一账户资产,以及精准实现订单持仓对账。
通过掌握这些进阶技巧,开发者能够构建更稳定高效的交易系统,在欧易统一账户环境中获得更优越的交易体验。建议持续关注官方API文档更新,以获取最新功能规范和技术细节。