使用 欧易 V5 API 的技巧和诀窍(1)
引言
欧易在推出统一账户交易系统的同时,亦把 API 由 V3 升级到了 V5,带来了更多和更完善的功能。本文旨在讲解 V5 API 相对于 V3 API 有什么改动,亦会提出在交易前设置账户时,有哪些技巧和诀窍。
V5 API 的改动
产品共用统一 API
V5 API 其中一个改动就是所有产品共用统一 API,无论是下单还是查看持仓信息,都不再像 V3 API 那样以产品划分。
举个例子,我们下单的时候,只需要连接到以下 URL,并在请求 body 中列明产品类型:
POST /api/v5/trade/order |
任何产品类型,在同一个 API 都会使用同样的请求和返回结果格式。换言之,您无需再特别为每个产品创建相应 API 的模型。
更短的命名规则
V5 API 的字段改为驼峰式大小写,并会用上缩写,更能节省带宽和内存开销。
示例:
字段 | V5 API | V3 API |
Currency (币种) | ccy | currency |
Instrument ID (产品 ID) | instId | instrument_id |
Underlying (合约标的指数) | uly | underlying |
Unrealized PnL (未实现盈亏) | upl | unrealized_pnl |
标准 WebSocket 数据压缩
V5 API 使用标准的 WebSocket 压缩扩展“Per-Message Deflate”,收到 WebSocket 信息后无需再以 V3 API 的方式手动解压缩数据。
要使用 WebSocket 数据压缩,请检查客户端是否已启用相关的扩展,启用后发送的请求头应包含“permessage-deflate”。
公共和私有 WebSocket
WebSocket 频道现分为两类:公共频道(如行情、K 线)和私有频道(如账户、持仓)。
两类频道各需要连接的 URL 并不相同。连接公共频道的 WebSocket 时不用传送登陆请求,否则订阅会失败。
使用 WebSocket 下单
除 REST 之外,V5 API 新增了 WebSocket 下单/改单/撤单。详情请查阅 API 文档或本文章的第 2 部分。
登陆
V5 API 的 REST 登陆和 V3 API 的一样(即在 REST 请求头上加上签名)。
V5 API 的 WebSocket 登陆也和 V3 API 的很类似(即传送登陆请求),只是在格式上改为键值对:
创建子账户的 API Key
在使用母账户(即主账户)时,现在我们可以透过 V5 API 进行子账户 API Key 的 CRUD 操作(创建、查询、更新、删除)。
创建 | POST /api/v5/users/subaccount/apikey |
查询 | GET /api/v5/users/subaccount/apikey |
更新 | POST /api/v5/users/subaccount/modify-apikey |
删除 | POST /api/v5/users/subaccount/delete-apikey |
我们强烈建议您为 API Key 绑定 IP 地址,加强账户安全。
配置账户
完成创建子账户和 API Key 后,还有一步就是配置每一个账户。
账户配置
我们可以通过以下的 REST API 查看当前账户/子账户的配置:
GET /api/v5/account/config |
API 会返回 (1) 账户模式、(2) 持仓模式、(3) 自动借币设置、(4) 期权希腊值 PA/BS 的配置。
账户模式
欧易 统一账户交易系统提供多个账户模式:(i) 现货模式、(ii)现货和合约模式、(iii) 跨币种保证金模式。
由于更改账户模式需要用户的操作,仅限于在网页上更改。
持仓模式
欧易 统一账户交易系统新增了单向持仓模式(买卖模式),亦保留了原有的双向持仓模式(开平仓模式):
单向持仓模式 | 只可持有多头或空头仓位。交易所会根据您所指定的持仓数量自动开/平仓 |
双向持仓模式 | 可同时持有多头仓位和空头仓位 |
我们可以通过以下的 REST API 设置持仓模式(设置前需平掉所有仓位):
POST /api/v5/account/set-position-mode |
自动借币
自动借币是跨币种保证金模式下的功能,只限于在网页上更改。
期权希腊值 PA/BS
和 V3 API 相似,我们可以通过以下的 REST API 设置期权希腊值 PA/BS:
POST /api/v5/account/set-greeks |
全仓/逐仓保证金模式
欧易 统一账户交易系统的全仓/逐仓设置更为弹性,我们可以同时以全仓和逐仓交易同一产品。
因此,V5 API 并没有设置合约标的指数保证金模式的 API。取而代之,我们需要在下单时指定该订单的保证金模式(交易模式)。详情请查阅 API 文档或本文章的第 2 部分。
杠杆倍数
获取杠杆倍数
我们可以通过以下的 REST API 获取杠杆倍数:
GET /api/v5/account/leverage-info |
目前杠杆倍数没有全局设置,同一产品可以有几种杠杆倍数的设置场景。
币币杠杆:
其他产品类型:
设置杠杆倍数
在获取杠杆倍数之后,可根据您的需要设置杠杆倍数:
POST /api/v5/account/set-leverage |
我们可以运用上述两个 API 编写程序,在交易前预先设置每个产品的杠杆倍数。
示例:
假设我们有以下的设置和需求:
- 账户模式:跨币种保证金
- 持仓模式:单向持仓
- 需要设置杠杆倍数为 3.0 的产品:
- BTC-USD-210319、BTC-USD-210326、BTC-USD-210625
- BTC-USD-SWAP
- 以上产品只使用全仓保证金模式
币币/币币杠杆的设置层面为币种,我们可以截取币种去逐一设置,即 BTC、USDT、EOS 和 LTC。
设置 BTC 币种杠杆倍数为 3.0 的请求 body 示例(适用于卖出 BTC-USDT 和买入 LTC-BTC):
设置 USDT、EOS 和 LTC 的请求 body 也很类似,不在此一一列举。
下一步就是设置 BTC-USD-210319、BTC-USD-210326 和 BTC-USD-210625 的杠杆倍数。因为这三个产品都有共同的标的指数(即 BTC-USD),我们只需在这三个产品中选其一设置杠杆倍数。
最后,我们需要设置 BTC-USD-SWAP 的杠杆倍数。虽然标的指数和以上的交割一样为 BTC-USD,但交割和永续的杠杆倍数设置是分开独立的,我们仍需要发送以下请求 body 去设置:
在发送了以上共 6 个 API REST 请求后,这 8 个产品杠杆倍数的设置便完成了。
总结
运用以上的技巧和诀窍,我们应该能够使用新的 API 设置子账户,亦能设置各种账户配置如持仓模式和杠杆倍数等,配合您的交易风格。
在下一部分,我们会讲解一些在使用 V5 API 交易时的技巧和诀窍,如使用 WebSocket 下单和订单成交推送与持仓的对账。
由于 欧易 会持续不断地改进统一账户交易系统,上文提到的这些想法均会随之发生变动。请查阅 V5 API 文档以得知最新的规范:做市商申请
© 2024 OKX。本文可以全文复制或分发,也可以使用本文 100 字或更少的摘录,前提是此类使用是非商业性的。整篇文章的任何复制或分发亦必须突出说明:“本文版权所有 © 2024 OKX,经许可使用。”允许的摘录必须引用文章名称并包含出处,例如“文章名称,[作者姓名 (如适用)],© 2024 OKX”。不允许对本文进行衍生作品或其他用途。