使用 欧易 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. This article may be reproduced or distributed in its entirety, or excerpts of 100 words or less of this article may be used, provided such use is non-commercial. Any reproduction or distribution of the entire article must also prominently state: “This article is © 2024 OKX and is used with permission.” Permitted excerpts must cite to the name of the article and include attribution, for example “Article Name, [author name if applicable], © 2024 OKX.” No derivative works or other uses of this article are permitted.
Information about: digital currency exchange services is prepared by OKX Australia Pty Ltd (ABN 22 636 269 040); derivatives and margin by OKX Australia Financial Pty Ltd (ABN 14 145 724 509, AFSL 379035) and is only intended for wholesale clients (within the meaning of the Corporations Act 2001 (Cth)); and other products and services by the relevant OKX entities which offer them (see Terms of Service). Information is general in nature and should not be taken as investment advice, personal recommendation or an offer of (or solicitation to) buy any crypto or related products. You should do your own research and obtain professional advice, including to ensure you understand the risks associated with these products, before you make a decision about them. Past performance is not indicative of future performance - never risk more than you are prepared to lose. Read our Terms of ServiceTerms of Serviceand Risk Disclosure Statement for more information.