概览
欢迎查看 V5 API文档。我们提供完整的REST和WebSocket API以满足您的交易需求。
请注意:
- API V5 仅适用于已升级的账户。
- 对于尚未升级的账户,请使用 API V3。
- 如果您的账户已升级但仍需使用 API V3,请参考 API V3 C/W API V5。
- 部分功能尚未开放。因此,响应中可能会出现一些未使用的字段。在本文档中,这些字段以删除线标记以便于理解。
API学习资源与技术支持
教程
- 学习使用V5 API交易: V5 API使用指南
Python包
Python SDK将于系统公开同时开放。
客户服务
- 如有问题请咨询线上客服
创建我的APIKey
点击跳转至官网创建V5APIKey的页面 创建我的APIKey
生成APIKey
在对任何请求进行签名之前,您必须通过交易网站创建一个APIKey。创建APIKey后,您将获得3个必须记住的信息:
- APIKey
- SecretKey
- Passphrase
APIKey和SecretKey将由平台随机生成和提供,Passphrase将由您提供以确保API访问的安全性。平台将存储Passphrase加密后的哈希值进行验证,但如果您忘记Passphrase,则无法恢复,请您通过交易网站重新生成新的APIKey。
API key 有如下3种权限,一个 API key 可以有一个或多个权限。
- 读取 :查询账单和历史记录等 读权限
- 提现 :可以进行提币
- 交易 :可以下单和撤单,转账,调整配置 等写权限
REST 请求验证
发起请求
所有REST私有请求头都必须包含以下内容:
OK-ACCESS-KEY字符串类型的APIKey。OK-ACCESS-SIGN使用HMAC SHA256哈希函数获得哈希值,再使用Base-64编码(请参阅签名)。OK-ACCESS-TIMESTAMP发起请求的时间(UTC),如:2020-12-08T09:08:57.715ZOK-ACCESS-PASSPHRASE您在创建API密钥时指定的Passphrase。
所有请求都应该含有application/json类型内容,并且是有效的JSON。
签名
生成签名
OK-ACCESS-SIGN的请求头是对timestamp + method + requestPath + body字符串(+表示字符串连接),以及SecretKey,使用HMAC SHA256方法加密,通过Base-64编码输出而得到的。
如:sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp + 'GET' + '/api/v5/account/balance?ccy=BTC', SecretKey))
其中,timestamp的值与OK-ACCESS-TIMESTAMP请求头相同,为ISO格式,如2020-12-08T09:08:57.715Z。
method是请求方法,字母全部大写:GET/POST。
requestPath是请求接口路径。如:/api/v5/account/balance
body是指请求主体的字符串,如果请求没有主体(通常为GET请求)则body可省略。如:{"instId":"BTC-JPY","lever":"5"}
SecretKey为用户申请APIKey时所生成。如:22582BD0CFF14C41EDBF1AB98506286D
WebSocket
概述
WebSocket是HTML5一种新的协议(Protocol)。它实现了用户端与服务器全双工通信, 使得数据可以快速地双向传播。通过一次简单的握手就可以建立用户端和服务器连接, 服务器根据业务规则可以主动推送信息给用户端。其优点如下:
- 用户端和服务器进行数据传输时,请求头信息比较小,大概2个字节。
- 用户端和服务器皆可以主动地发送数据给对方。
- 不需要多次创建TCP请求和销毁,节约宽带和服务器的资源。
连接
连接限制:3 次/秒 (基于IP)
当订阅公有频道时,使用公有服务的地址;当订阅私有频道时,使用私有服务的地址
请求限制:
每个连接 对于 订阅/取消订阅/登录 请求的总次数限制为 480 次/小时
连接限制
子账户维度,订阅每个 WebSocket 频道的最大连接数为 30 个。每个 WebSocket 连接都由唯一的 connId 标识。
受此限制的 WebSocket 频道如下:
若用户通过不同的请求参数在同一个 WebSocket 连接下订阅同一个频道,例如使用 {"channel": "orders", "instType": "ANY"} 和 {"channel": "orders", "instType": "SWAP"},只算为一次连接。若用户使用相同或不同的 WebSocket 连接订阅上述频道,例如订单频道和账户频道。在该两个频道之间,计数不会累计,因为它们被视作不同的频道。简言之,系统计算每个频道对应的 WebSocket 连接数量。
新链接订阅频道时,平台将对该订阅返回channel-conn-count的消息同步链接数量。
链接数量更新
{
"event":"channel-conn-count",
"channel":"orders",
"connCount": "2",
"connId":"abcd1234"
}
当超出限制时,一般最新订阅的链接会收到拒绝。用户会先收到平时的订阅成功信息然后收到channel-conn-count-error消息,代表平台终止了这个链接的订阅。在异常场景下平台会终止已订阅的现有链接。
链接数量限制报错
{
"event": "channel-conn-count-error",
"channel": "orders",
"connCount": "20",
"connId":"a4d3ae55"
}
通过 WebSocket 进行的订单操作,例如下单、修改和取消订单,不会受到此改动影响。
登录
请求示例
{
"op": "login",
"args":
[
{
"apiKey": "985d5b66-57ce-40fb-b714-afc0b9787083",
"passphrase": "123456",
"timestamp": "1538054050",
"sign": "7L+zFQ+CEgGu5rzCj4+BdV2/uUHGqddA9pI6ztsRRPs="
}
]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作,login |
| args | Array | 是 | 账户列表 |
| > apiKey | String | 是 | APIKey |
| > passphrase | String | 是 | APIKey 的密码 |
| > timestamp | String | 是 | 时间戳,Unix Epoch时间,单位是秒 |
| > sign | String | 是 | 签名字符串 |
全部成功返回示例
{
"event": "login",
"code": "0",
"msg": "",
"connId": "a4d3ae55"
}
全部失败返回示例
{
"event": "error",
"code": "60009",
"msg": "Login failed.",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 操作,login error |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
apiKey:调用API的唯一标识。需要用户手动设置一个 passphrase:APIKey的密码 timestamp:Unix Epoch 时间戳,单位为秒,如 1704876947 sign:签名字符串,签名算法如下:
先将timestamp 、 method 、requestPath 进行字符串拼接,再使用HMAC SHA256方法将拼接后的字符串和SecretKey加密,然后进行Base64编码
SecretKey:用户申请APIKey时所生成的安全密钥,如:22582BD0CFF14C41EDBF1AB98506286D
其中 timestamp 示例:const timestamp = '' + Date.now() / 1,000
其中 sign 示例: sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp +'GET'+ '/users/self/verify', secret))
method 总是 'GET'
requestPath 总是 '/users/self/verify'
订阅
订阅说明
请求格式说明
{
"op": "subscribe",
"args": ["<SubscriptionTopic>"]
}
WebSocket 频道分成两类: 公共频道 和 私有频道
公共频道无需登录,包括行情频道,K线频道,交易数据频道,资金费率频道,限价范围频道,深度数据频道,标记价格频道等。
私有频道需登录,包括用户账户频道,用户交易频道,用户持仓频道等。
用户可以选择订阅一个或者多个频道,多个频道总长度不能超过 64 KB。
以下是一个请求参数的例子。每一个频道的请求参数的要求都不一样。请根据每一个频道的需求来订阅频道。
请求示例
{
"op":"subscribe",
"args":[
{
"channel":"tickers",
"instId":"BTC-JPY"
}
]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作,subscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名 |
| > instType | String | 否 | 产品类型SPOT:币币 ANY:全部 |
| > instId | String | 否 | 产品ID |
返回示例
{
"event": "subscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-JPY"
},
"connId": "accb8e21"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件,subscribe error |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instType | String | No | Instrument typeSPOTANY |
| > instId | String | 否 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
取消订阅
可以取消一个或者多个频道
请求格式说明
{
"op": "unsubscribe",
"args": ["< SubscriptionTopic > "]
}
请求示例
{
"op": "unsubscribe",
"args": [
{
"channel": "tickers",
"instId": "BTC-JPY"
}
]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作,unsubscribe |
| args | Array | 是 | 取消订阅的频道列表 |
| > channel | String | 是 | 频道名 |
| > instType | String | 否 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
返回示例
{
"event": "unsubscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-JPY"
},
"connId": "d0b44253"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件,unsubscribe error |
| arg | Object | 否 | 取消订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instType | String | 否 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
实盘交易
实盘API交易地址如下:
- REST:https://api.okj.com
- WebSocket公共频道:wss://ws.okj.com:8443/ws/v5/public
- WebSocket私有频道:wss://ws.okj.com:8443/ws/v5/private
- WebSocket业务频道:wss://ws.okj.com:8443/ws/v5/business
AWS 地址如下:
- REST:
https://api.okj.com - WebSocket公共频道:
wss://ws.okj.com:8443/ws/v5/public - WebSocket私有频道:
wss://ws.okj.com:8443/ws/v5/private - WebSocket业务频道:
wss://ws.okj.com:8443/ws/v5/business
基本信息
交易所层面的下单规则如下:
- 未成交订单(包括 post only,limit和处理中的taker单)的最大挂单数:4,000个
单个交易产品未成交订单的最大挂单数为500个,被计入到 500 笔挂单数量限制的订单类型包括:
- 限价委托 (Limit)
- 市价委托 (Market)
- 只挂单 (Post only)
- 全部成交或立即取消 (FOK)
- 立即成交并取消剩余 (IOC)
- 止盈止损 (TP/SL)
- 以下类型的订单触发的限价和市价委托:
- 止盈止损 (TP/SL)
策略委托订单最大挂单数:
- 止盈止损:100个 每个Instrument ID
交易限制规则如下:
- 当taker订单匹配的maker订单数量超过最大限制1000笔时,taker订单将被取消
- 限价单仅成交与1000笔maker订单相对应的部分,并取消剩余;
- 全部成交或立即取消(FOK)订单将直接被取消。
返回数据规则如下:
当返回数据中,有
code,且没有sCode字段时,code和msg代表请求结果或者报错原因;当返回中有
sCode字段时,代表请求结果或者报错原因的是sCode和sMsg,而不是code和msg。
交易时效性
由于网络延时或者OKJ服务器繁忙会导致订单无法及时处理。如果您对交易时效性有较高的要求,可以灵活设置请求有效截止时间expTime以达到你的要求。
(批量)下单,(批量)改单接口请求中如果包含expTime,如果服务器当前系统时间超过expTime,则该请求不会被服务器处理。
你应跟我们服务器系统时间同步。请用获取系统时间来获取系统时间。
REST API
请求头中设置如下参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
目前支持如下接口:
请求示例
curl -X 'POST' \
'https://api.okj.com/api/v5/trade/order' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'OK-ACCESS-KEY: *****' \
-H 'OK-ACCESS-SIGN: *****'' \
-H 'OK-ACCESS-TIMESTAMP: *****'' \
-H 'OK-ACCESS-PASSPHRASE: *****'' \
-H 'expTime: 1597026383085' \ // 有效截止时间
-d '{
"instId": "BTC-JPY",
"tdMode": "cash",
"side": "buy",
"ordType": "limit",
"px": "1000",
"sz": "0.01"
}'
WebSocket
请求中设置如下参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
目前支持如下接口:
请求示例
{
"id": "1512",
"op": "order",
"expTime":"1597026383085", // 有效截止时间
"args": [{
"side": "buy",
"instId": "BTC-JPY",
"tdMode": "isolated",
"ordType": "market",
"sz": "100"
}]
}
限速
我们的 REST 和 WebSocket API 使用限速来保护我们的 API 免受恶意使用,因此我们的交易平台可以可靠和公平地运行。
当请求因限速而被我们的系统拒绝时,系统会返回错误代码 50011(用户请求频率过快,超过该接口允许的限额。请参考 API 文档并限制请求)。
每个接口的限速都不同。 您可以从接口详细信息中找到每个接口的限制。 限速定义详述如下:
WebSocket 登录和订阅限速基于连接。
公共未经身份验证的 REST 限速基于 IP 地址。
私有 REST 限速基于 User ID(子帐户具有单独的 User ID)。
WebSocket 订单管理限速基于 User ID(子账户具有单独的 User ID)。
交易相关API
对于与交易相关的 API(下订单、取消订单和修改订单),以下条件适用:
限速在 REST 和 WebSocket 通道之间共享。
下单、修改订单、取消订单的限速相互独立。
限速在 Instrument ID 级别定义
批量订单接口和单订单接口的限速也是独立的,除了只有一个订单发送到批量订单接口时,该订单将被视为一个订单并采用单订单限速。
交易账户
账户功能模块下的API接口需要身份验证。
REST API
获取交易产品基础信息
获取当前账户可交易产品的信息列表。
限速:20次/2s
限速规则:UserID + InstType
HTTP请求
GET /api/v5/account/instruments
请求示例
GET /api/v5/account/instruments?instType=SPOT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
result = accountAPI.get_instruments(instType="SPOT")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID |
返回结果
{
"code": "0",
"data": [
{
"auctionEndTime": "",
"baseCcy": "BTC",
"expTime": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"listTime": "1704876947000",
"lotSz": "0.00000001",
"maxLmtAmt": "1000000",
"maxLmtSz": "9999999999",
"maxMktAmt": "1000000",
"maxMktSz": "1000000",
"maxStopSz": "1000000",
"minSz": "0.00001",
"quoteCcy": "JPY",
"state": "live",
"ruleType": "normal",
"tickSz": "1"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品id, 如 BTC-JPY |
| baseCcy | String | 交易货币币种,如 BTC-JPY 中的 BTC,仅适用于币币 |
| quoteCcy | String | 计价货币币种,如 BTC-JPY 中的JPY ,仅适用于币币 |
| listTime | String | 上线时间 Unix时间戳的毫秒数格式,如 1597026383085 |
| auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085 仅适用于通过集合竞价方式上线的 币币,其余情况返回"" |
| expTime | String | 产品下线时间 适用于 币币;亦可以为产品下线时间,有变动就会推送。 |
| tickSz | String | 下单价格精度,如 0.0001 |
| lotSz | String | 下单数量精度 ,现货的数量单位是 交易货币 |
| minSz | String | 最小下单数量 ,现货的数量单位是 交易货币 |
| state | String | 产品状态live:交易中 suspend:暂停中preopen:预上线;部分交易产品上线前test:测试中(测试产品,不可交易) |
| ruleType | String | 交易规则类型normal:普通交易pre_market:盘前交易 |
| maxLmtSz | String | 限价单的单笔最大委托数量 ,现货的数量单位是 交易货币 |
| maxMktSz | String | 市价单的单笔最大委托数量 ,现货的数量单位是 JPY |
| maxLmtAmt | String | 限价单的单笔最大日元价值 |
| maxMktAmt | String | 市价单的单笔最大日元价值 仅适用于 币币 |
| maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 ,现货的数量单位是 JPY |
BTC-JPY |
||
BTC-JPY |
||
BTC |
||
instId支持的最大杠杆倍数,不适用于币币 |
||
,现货的数量单位是 交易货币 单笔最小委托数量为 minSz*2 |
||
,现货的数量单位是 交易货币 |
||
,现货的数量单位是 交易货币 |
查看账户余额
获取交易账户中资金余额信息。
限速:10次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/balance
请求示例
# 获取账户中所有资产余额
GET /api/v5/account/balance
# 获取账户中BTC、ETH两种资产余额
GET /api/v5/account/balance?ccy=BTC,ETH
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 查看账户余额
result = accountAPI.get_account_balance()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 |
返回结果
{
"code": "0",
"data": [
{
"details": [
{
"availBal": "4834.317093622894",
"cashBal": "4850.435693622894",
"ccy": "JPY",
"eq": "4992.890093622894",
"eqJpy": "4991.542013297616",
"frozenBal": "158.573",
"ordFrozen": "0",
"stgyEq": "150",
"uTime": "1705449605015",
"spotBal": "",
"openAvgPx": "",
"accAvgPx": "",
"spotUpl": "",
"spotUplRatio": "",
"totalPnl": "",
"totalPnlRatio": ""
}
],
"totalEq": "55837.43556134779",
"uTime": "1705474164160"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| uTime | String | 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| totalEq | String | 日元层面权益 |
| details | Array | 各币种资产详细信息 |
| > ccy | String | 币种 |
| > eq | String | 币种总权益 |
| > cashBal | String | 币种余额 |
| > uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > availBal | String | 可用余额 |
| > frozenBal | String | 币种占用金额 |
| > ordFrozen | String | 挂单冻结数量 适用于 现货模式 |
| > eqJpy | String | 币种权益日元价值 |
| > stgyEq | String | 策略权益 |
| > spotBal | String | 现货余额 ,单位为 币种,比如 BTC。点击了解更多 |
| > openAvgPx | Array | 现货开仓成本价 单位 jpy。 点击了解更多 |
| > accAvgPx | Array | 现货累计成本价 单位 jpy。 点击了解更多 |
| > spotUpl | String | 现货未实现收益,单位 jpy。 点击了解更多 |
| > spotUplRatio | String | 现货未实现收益率。点击了解更多 |
| > totalPnl | String | 现货累计收益,单位 jpy。 点击了解更多 |
| > totalPnlRatio | String | 现货累计收益率。点击了解更多 |
值为正数,如 21625.64 |
||
值为正数,如 9.01 |
||
0、1、2、3、4、5 其中之一,数字越大代表您的负债币种触发自动换币概率越高 |
||
仅适用于现货带单/跟单 |
||
默认为0,仅适用于跟单人 |
||
默认为0,仅适用于跟单人 |
账单流水查询(近七天)
帐户资产流水是指导致帐户余额增加或减少的行为。本接口可以查询最近7天的账单数据。
限速:5次/s
限速规则:UserID
HTTP请求
GET /api/v5/account/bills
请求示例
GET /api/v5/account/bills
GET /api/v5/account/bills?instType=SPOT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 查看账户账单详情 (近七日内)
result = accountAPI.get_account_bills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 否 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
| ccy | String | 否 | 账单币种 |
| type | String | 否 | 账单类型1:划转2:交易 |
| subType | String | 否 | 账单子类型1:买入2:卖出 11:转入 12:转出 |
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的billId |
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的billId |
| begin | String | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"bal": "8694.2179403378290202",
"balChg": "0.0219338232210000",
"billId": "623950854533513219",
"ccy": "JPY",
"clOrdId": "",
"execType": "T",
"fee": "-0.000021955779",
"fillTime": "1695033476166",
"from": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"mgnMode": "cash",
"notes": "",
"ordId": "623950854525124608",
"px": "27105.9",
"subType": "1",
"sz": "0.021955779",
"tag": "",
"to": "",
"tradeId": "586760148",
"ts": "1695033476167",
"type": "2"
}]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| billId | String | 账单ID |
| type | String | 账单类型 |
| subType | String | 账单子类型 |
| ts | String | 余额更新完成的时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| balChg | String | 账户层面的余额变动数量 |
| bal | String | 账户层面的余额数量 |
| sz | String | 数量 |
| px | String | 价格,与 subType 相关1:买入 2:卖出 |
| ccy | String | 账户余额币种 |
| fee | String | 手续费 正数代表平台返佣 ,负数代表平台扣除 手续费规则 |
| mgnMode | String | 保证金模式cash:现金账单不是由仓位变化产生的,该字段返回 "" |
| instId | String | 产品ID,如 BTC-JPY |
| ordId | String | 订单ID 当type为 2/5/9时,返回相应订单id无订单时,该字段返回 "" |
| execType | String | 流动性方向T:takerM:maker |
| from | String | 转出账户6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" |
| to | String | 转入账户6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" |
| notes | String | 备注 |
| tag | String | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 |
| fillTime | String | 最新成交时间 |
| tradeId | String | 最新成交ID |
| clOrdId | String | 客户自定义订单ID |
账单流水查询(近三月)
帐户资产流水是指导致帐户余额增加或减少的行为。本接口可以查询最近3个月的账单数据。
限速:5次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/bills-archive
请求示例
GET /api/v5/account/bills-archive
GET /api/v5/account/bills-archive?instType=SPOT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 查看账户账单详情 (近三个月内)
result = accountAPI.get_account_bills_archive()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 否 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
| ccy | String | 否 | 账单币种 |
| type | String | 否 | 账单类型1:划转2:交易 |
| subType | String | 否 | 账单子类型1:买入2:卖出 11:转入 12:转出 |
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的billId |
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的billId |
| begin | String | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"bal": "8694.2179403378290202",
"balChg": "0.0219338232210000",
"billId": "623950854533513219",
"ccy": "JPY",
"clOrdId": "",
"execType": "T",
"fee": "-0.000021955779",
"fillTime": "1695033476166",
"from": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"mgnMode": "cash",
"notes": "",
"ordId": "623950854525124608",
"px": "27105.9",
"subType": "1",
"sz": "0.021955779",
"tag": "",
"to": "",
"tradeId": "586760148",
"ts": "1695033476167",
"type": "2"
}]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| billId | String | 账单ID |
| type | String | 账单类型 |
| subType | String | 账单子类型 |
| ts | String | 余额更新完成的时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| balChg | String | 账户层面的余额变动数量 |
| bal | String | 账户层面的余额数量 |
| sz | String | 数量 |
| px | String | 价格,与 subType 相关1:买入 2:卖出 |
| ccy | String | 账户余额币种 |
| fee | String | 手续费 正数代表平台返佣 ,负数代表平台扣除 手续费规则 |
| mgnMode | String | 保证金模式cash:现金账单不是由仓位变化产生的,该字段返回 "" |
| instId | String | 产品ID,如 BTC-JPY |
| ordId | String | 订单ID 当type为 2/5/9时,返回相应订单id无订单时,该字段返回 "" |
| execType | String | 流动性方向T:takerM:maker |
| from | String | 转出账户6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" |
| to | String | 转入账户6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" |
| notes | String | 备注 |
| tag | String | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 |
| fillTime | String | 最新成交时间 |
| tradeId | String | 最新成交ID |
| clOrdId | String | 客户自定义订单ID |
查看账户配置
查看当前账户的配置信息。
限速:5次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/config
请求示例
GET /api/v5/account/config
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 查看账户配置
result = accountAPI.get_account_config()
print(result)
请求参数
无
返回结果
{
"code": "0",
"data": [
{
"acctLv": "1",
"acctStpMode": "cancel_maker",
"ip": "",
"kycLv": "",
"label": "v5 test",
"level": "Lv1",
"levelTmp": "",
"mainUid": "44705892343619584",
"perm": "read_only,withdraw,trade",
"roleType": "0",
"type": "0",
"uid": "44705892343619584"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| uid | String | 当前请求的账户ID |
| mainUid | String | 当前请求的母账户ID 如果 uid = mainUid,代表当前账号为母账户;如果 uid != mainUid,代表当前账户为子账户。 |
| acctLv | String | 账户模式1:现货模式 |
| acctStpMode | String | 账户自成交保护模式 cancel_maker:撤销挂单 |
| level | String | 当前在平台上真实交易量的用户等级,例如 Lv1 |
| roleType | String | 用户角色0:普通用户 |
| label | String | 当前请求API key的备注名,不超过50位字母(区分大小写)或数字,可以是纯字母或纯数字。 |
| ip | String | 当前请求API key绑定的ip地址,多个ip用半角逗号隔开,如:117.37.203.58,117.37.203.57。如果没有绑定ip,会返回空字符串"" |
| perm | String | 当前请求的 API key 或 Access token 的权限read_only:读取trade:交易withdraw:提币 |
| kycLv | String | 母账户KYC等级 |
| type | String | 账户类型 0:母账户 1:普通子账户 |
long_short_mode:开平仓模式 |
||
true:自动借币 false:非自动借币 |
||
PA:币本位 BS:美元本位 |
||
Lv3 |
||
automatic:开仓划转autonomy:自主划转 |
||
automatic:开仓划转quick_margin:一键借币 |
||
0:普通用户; |
||
0:未开通1:已经开通 |
||
现货模式下是否支持借币true:支持false:不支持 |
||
现货模式下是否支持自动还币true:支持false:不支持 |
||
0:母账户 1:普通子账户 2:资管子账户 5:托管交易子账户 - Copper9:资管交易子账户 - Copper12:托管交易子账户 - Komainu |
获取最大可下单数量
获取最大可下单数量,可对应下单时的 "sz" 字段
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/max-size
请求示例
GET /api/v5/account/max-size?instId=BTC-JPY&tdMode=cash
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 获取最大可买卖/开仓数量
result = accountAPI.get_max_order_size(
instId="BTC-JPY",
tdMode="cash"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY支持同一业务线下的多产品ID查询(不超过5个),半角逗号分隔 |
| tdMode | String | 是 | 交易模式cash:非保证金 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"instId": "BTC-JPY",
"maxBuy": "0.0500695098559788",
"maxSell": "64.4798671570072269"
}]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instId | String | 产品ID |
| maxBuy | String | 币币:最大可买的交易币数量 |
| maxSell | String | 币币:最大可卖的计价币数量 |
获取最大可用余额
可用余额
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/max-avail-size
请求示例
# 获取BTC-JPY币币最大可用数量
GET /api/v5/account/max-avail-size?instId=BTC-JPY&tdMode=cash
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 获取BTC-JPY币币最大可用数量
result = accountAPI.get_max_avail_size(
instId="BTC-JPY",
tdMode="cash"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY支持多产品ID查询(不超过5个),半角逗号分隔 |
| tdMode | String | 是 | 交易模式cash:非保证金 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"instId": "BTC-JPY",
"availBuy": "100",
"availSell": "1"
}]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instId | String | 产品ID |
| availBuy | String | 最大买入可用余额/保证金 |
| availSell | String | 最大卖出可用余额/保证金 |
获取当前账户交易手续费费率
限速:5次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/trade-fee
请求示例
# 获取币币BTC-JPY交易手续费率
GET /api/v5/account/trade-fee?instType=SPOT&instId=BTC-JPY
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 获取当前账户交易手续费费率
result = accountAPI.get_fee_rates(
instType="SPOT",
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"instType": "SPOT",
"level": "lv1",
"maker": "-0.0008",
"taker": "-0.001",
"ruleType": "normal",
"ts": "1608623351857"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| level | String | 手续费等级 |
| taker | String | 对于币币,为 JPY 交易区的吃单手续费率; |
| maker | String | 对于币币,为 JPY 交易区的挂单手续费率; |
| instType | String | 产品类型 |
| ruleType | String | 交易规则类型normal:普通交易pre_market:盘前交易 |
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 |
获取当前账户全部币对交易手续费费率
限速:5次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/trade-fee-all
请求示例
# 获取币币交易手续费率
GET /api/v5/account/trade-fee-all?instType=SPOT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 获取当前账户交易手续费费率
result = accountAPI.get_fee_rates_all(
instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"instId":"BTC-JPY",
"instType":"SPOT",
"level":"LV1",
"maker":"0.0001",
"ruleType":"normal",
"taker":"-0.0001",
"ts":"1746766729131"
},
{
"instId":"ETH-JPY",
"instType":"SPOT",
"level":"LV1",
"maker":"0.0001",
"ruleType":"normal",
"taker":"-0.0001",
"ts":"1746766729131"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| level | String | 手续费等级 |
| taker | String | 对于币币,为 JPY 交易区的吃单手续费率; |
| maker | String | 对于币币,为 JPY 交易区的挂单手续费率; |
| instType | String | 产品类型 |
| instId | String | 产品Id |
| ruleType | String | 交易规则类型normal:普通交易pre_market:盘前交易 |
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 |
查看账户最大可转余额
当指定币种时会返回该币种的交易账户到资金账户的最大可划转数量,不指定币种会返回所有拥有的币种资产可划转数量。
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/account/max-withdrawal
请求示例
GET /api/v5/account/max-withdrawal
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False)
# 查看账户最大可转余额
result = accountAPI.get_max_withdrawal()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 |
返回结果
{
"code": "0",
"msg": "",
"data": [{
"ccy": "BTC",
"maxWd": "124"
},
{
"ccy": "ETH",
"maxWd": "10"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ccy | String | 币种 |
| maxWd | String | 最大可划转数量 |
WebSocket
账户频道
获取账户信息,首次订阅按照订阅维度推送数据,此外,当下单、撤单、成交等事件触发时,推送数据以及按照订阅维度定时推送数据
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
"op": "subscribe",
"args": [{
"channel": "account",
"ccy": "BTC"
}]
}
请求示例
{
"op": "subscribe",
"args": [
{
"channel": "account",
"extraParams": "
{
\"updateInterval\": \"0\"
}
"
}
]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名account |
| > ccy | String | 否 | 币种 |
| > extraParams | String | 否 | 额外配置 |
| >> updateInterval | int | 否 | 0: 仅根据账户事件推送数据 若不添加该字段或将其设置为除0外的其他值,数据将根据事件推送并定时推送。 使用该字段需严格遵守以下格式。 "extraParams": " { \"updateInterval\": \"0\" } " |
成功返回示例:单个
{
"event": "subscribe",
"arg": {
"channel": "account",
"ccy": "BTC"
},
"connId": "a4d3ae55"
}
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "account"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"account\", \"ccy\" : \"BTC\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名account |
| > ccy | String | 否 | 币种 |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "account",
"uid": "44*********584"
},
"data": [{
"details": [{
"accAvgPx":"13726482.110594058",
"availBal":"4.02776655",
"cashBal":"4.02776655",
"ccy":"BTC",
"eq":"4.02776655",
"eqJpy":"58437022.59366886",
"eqUsd":"58437022.59366886",
"frozenBal":"0",
"openAvgPx":"13726482.110594058",
"ordFrozen":"0",
"spotBal":"1.0099999999999998",
"spotIsoBal":"0",
"spotUpl":"789881.0993500013",
"spotUplRatio":"0.0569745757219434",
"stgyEq":"0",
"totalPnl":"789881.0993499998",
"totalPnlRatio":"0.0569745757219432",
"uTime":"1732523313429"
}],
"totalEq": "55868.06403501676",
"uTime": "1705564223311"
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 请求订阅的频道 |
| > channel | String | 频道名 |
| > uid | String | 用户标识 |
| data | Array | 订阅的数据 |
| > uTime | String | 获取账户信息的最新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > totalEq | String | 日元层面权益 |
| > details | Array | 各币种资产详细信息 |
| >> ccy | String | 币种 |
| >> eq | String | 币种总权益 |
| >> cashBal | String | 币种余额 |
| >> uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| >> availBal | String | 可用余额 |
| >> frozenBal | String | 币种占用金额 |
| >> ordFrozen | String | 挂单冻结数量 |
| >> eqJpy | String | 币种权益日元价值 |
| >> eqUsd | String | 币种权益日元价值 |
| >> stgyEq | String | 策略权益 |
| >> spotBal | String | 现货余额 ,单位为 币种,比如 BTC。 |
| >> openAvgPx | Array | 现货开仓成本价 单位 JPY。 |
| >> accAvgPx | Array | 现货累计成本价 单位 JPY。 |
| >> spotUpl | String | 现货未实现收益,单位 JPY。 |
| >> spotUplRatio | String | 现货未实现收益率。 |
| >> totalPnl | String | 现货累计收益,单位 JPY。 |
| >> totalPnlRatio | String | 现货累计收益率。 |
账户余额和持仓频道
获取账户余额和持仓信息,首次订阅按照订阅维度推送数据,此外,当成交、资金划转等事件触发时,推送数据。
该频道适用于尽快获取账户现金余额和仓位资产变化的信息。
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例
{
"op": "subscribe",
"args": [{
"channel": "balance_and_position"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名balance_and_position |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "balance_and_position"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"balance_and_position\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名balance_and_position |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "balance_and_position",
"uid": "77982378738415879"
},
"data": [{
"pTime": "1597026383085",
"eventType": "snapshot",
"balData": [{
"ccy": "BTC",
"cashBal": "1",
"uTime": "1597026383085"
}],
"trades": [{
"instId": "BTC-JPY",
"tradeId": "2",
}]
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 请求订阅的频道 |
| > channel | String | 频道名 |
| > uid | String | 用户标识 |
| data | Array | 订阅的数据 |
| > pTime | String | 推送时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > eventType | String | 事件类型snapshot:首推快照transferred:划转filled:成交 |
| > balData | String | 余额数据 |
| >> ccy | String | 币种 |
| >> cashBal | String | 币种余额 |
| >> uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > trades | Array | 成交数据 |
| >> instId | String | 产品ID,如 BTC-JPY |
| >> tradeId | String | 最新成交ID |
撮合交易
交易
交易功能模块下的API接口需要身份验证。
POST / 下单
只有当您的账户有足够的资金才能下单。
限速:60次/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/order
请求示例
# 币币下单
POST /api/v5/trade/order
body
{
"instId":"BTC-JPY",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
}
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 现货模式限价单
result = tradeAPI.place_order(
instId="BTC-JPY",
tdMode="cash",
clOrdId="b15",
side="buy",
ordType="limit",
px="2.15",
sz="2"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| tdMode | String | 是 | 交易模式cash:非保证金 |
| clOrdId | String | 否 | 客户自定义订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 |
| side | String | 是 | 订单方向buy:买, sell:卖 |
| ordType | String | 是 | 订单类型 market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| sz | String | 是 | 委托数量 |
| px | String | 可选 | 委托价格,仅适用于limit、post_only、fok、ioc类型的订单 |
| tgtCcy | String | 否 | 市价单委托数量sz的单位,仅适用于币币市价订单base_ccy: 交易货币 ;quote_ccy:计价货币买单默认 quote_ccy, 卖单默认base_ccy |
| banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 |
| attachAlgoOrds | Array of object | 否 | 下单附带止盈止损信息 |
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给 algoClOrdId |
| > tpTriggerPx | String | 可选 | 止盈触发价 对于条件止盈单,如果填写此参数,必须填写 止盈委托价 |
| > tpOrdPx | String | 可选 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价 对于限价止盈单,需填写此参数,不需要填写止盈触发价 |
| > slTriggerPx | String | 可选 | 止损触发价,如果填写此参数,必须填写 止损委托价 |
| > slOrdPx | String | 可选 | 止损委托价,如果填写此参数,必须填写 止损触发价 |
| > tpTriggerPxType | String | 否 | 止盈触发价类型last:最新价格默认为 last |
| > slTriggerPxType | String | 否 | 止损触发价类型last:最新价格默认为 last |
| > sz | String | 可选 | 数量。仅适用于“多笔止盈”的止盈订单,且对于“多笔止盈”的止盈订单必填 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"tag":"",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 客户自定义订单ID |
| > tag | String | 订单标签 |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败或成功时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
POST / 批量下单
每次最多可以批量提交20个新订单。请求参数应该按数组格式传递,会依次委托订单。
限速:300个/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/batch-orders
请求示例
# 币币批量下单
POST /api/v5/trade/batch-orders
body
[
{
"instId":"BTC-JPY",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
},
{
"instId":"BTC-JPY",
"tdMode":"cash",
"clOrdId":"b16",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
}
]
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 批量下单
place_orders_without_clOrdId = [
{"instId": "BTC-JPY", "tdMode": "cash", "clOrdId": "b15", "side": "buy", "ordType": "limit", "px": "2.15", "sz": "2"},
{"instId": "BTC-JPY", "tdMode": "cash", "clOrdId": "b16", "side": "buy", "ordType": "limit", "px": "2.15", "sz": "2"}
]
result = tradeAPI.place_multiple_orders(place_orders_without_clOrdId)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| tdMode | String | 是 | 交易模式cash:非保证金 |
| clOrdId | String | 否 | 客户自定义订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 |
| side | String | 是 | 订单方向 buy:买, sell:卖 |
| ordType | String | 是 | 订单类型 market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| sz | String | 是 | 委托数量 |
| px | String | 可选 | 委托价格,仅适用于limit、post_only、fok、ioc类型的订单 |
| tgtCcy | String | 否 | 市价单委托数量sz的单位,仅适用于币币市价订单base_ccy: 交易货币 ;quote_ccy:计价货币买单默认 quote_ccy, 卖单默认base_ccy |
| banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 |
| attachAlgoOrds | Array of object | 否 | 下单附带止盈止损信息 |
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给 algoClOrdId |
| > tpTriggerPx | String | 可选 | 止盈触发价 对于条件止盈单,如果填写此参数,必须填写 止盈委托价 |
| > tpOrdPx | String | 可选 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价 对于限价止盈单,需填写此参数,不需要填写止盈触发价 |
| > slTriggerPx | String | 可选 | 止损触发价,如果填写此参数,必须填写 止损委托价 |
| > slOrdPx | String | 可选 | 止损委托价,如果填写此参数,必须填写 止损触发价 |
| > tpTriggerPxType | String | 否 | 止盈触发价类型last:最新价格默认为 last |
| > slTriggerPxType | String | 否 | 止损触发价类型last:最新价格默认为 last |
| > sz | String | 可选 | 数量。仅适用于“多笔止盈”的止盈订单,且对于“多笔止盈”的止盈订单必填 |
| > amendPxOnTriggerType | String | 否 | 是否启用开仓价止损,仅适用于分批止盈的止损订单,第一笔止盈触发时,止损触发价格是否移动到开仓均价止损0:不开启,默认值 1:开启,且止损触发价不能为空 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"tag":"",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"tag":"",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 客户自定义订单ID |
| > tag | String | 订单标签 |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败或成功时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
POST / 撤单
撤销之前下的未完成订单。
限速:60次/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/cancel-order
请求示例
POST /api/v5/trade/cancel-order
body
{
"ordId":"590908157585625111",
"instId":"BTC-JPY"
}
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 撤单
result = tradeAPI.cancel_order(instId="BTC-JPY", ordId = "590908157585625111")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 |
| clOrdId | String | 可选 | 用户自定义ID |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 客户自定义订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
POST / 批量撤单
撤销未完成的订单,每次最多可以撤销20个订单。请求参数应该按数组格式传递。
限速:300个/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/cancel-batch-orders
请求示例
POST /api/v5/trade/cancel-batch-orders
body
[
{
"instId":"BTC-JPY",
"ordId":"590908157585625111"
},
{
"instId":"BTC-JPY",
"ordId":"590908544950571222"
}
]
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 按ordId撤单
cancel_orders_with_orderId = [
{"instId": "BTC-JPY", "ordId": "590908157585625111"},
{"instId": "BTC-JPY", "ordId": "590908544950571222"}
]
result = tradeAPI.cancel_multiple_orders(cancel_orders_with_orderId)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 |
| clOrdId | String | 可选 | 用户自定义ID |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"ts":"1695190491421",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 客户自定义订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
POST / 修改订单
修改当前未成交的挂单
限速:60次/2s
跟单交易带单产品的限速:4个/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/amend-order
请求示例
POST /api/v5/trade/amend-order
body
{
"ordId":"590909145319051111",
"newSz":"2",
"instId":"BTC-JPY"
}
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 修改订单
result = tradeAPI.amend_order(
instId="BTC-JPY",
ordId="590909145319051111",
newSz="2"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID |
| cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为falsefalse:不自动撤单true:自动撤单 |
| ordId | String | 可选 | 订单IDordId和clOrdId必须传一个,若传两个,以ordId为主 |
| clOrdId | String | 可选 | 用户自定义订单ID |
| reqId | String | 否 | 用户自定义修改事件ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| newSz | String | 可选 | 修改的新数量,必须大于0,对于部分成交订单,该数量应包含已成交数量。 |
| newPx | String | 可选 | 修改后的新价格 |
| attachAlgoOrds | Array of object | 否 | 修改附带止盈止损信息 |
| > attachAlgoId | String | 可选 | 附带止盈止损的订单ID,由系统生成,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 可选 | 下单附带止盈止损时,客户自定义的策略订单ID |
| > newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈。 |
| > newTpOrdPx | String | 可选 | 止盈委托价 |
| > newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损。 |
| > newSlOrdPx | String | 可选 | 止损委托价 |
| > newTpTriggerPxType | String | 可选 | 止盈触发价类型last:最新价格 如果要新增止盈,该参数必填 |
| > newSlTriggerPxType | String | 可选 | 止损触发价类型last:最新价格 如果要新增止损,该参数必填 |
| > sz | String | 可选 | 新的张数。仅适用于“多笔止盈”的止盈订单且必填 |
| > amendPxOnTriggerType | String | 否 | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值1:开启 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"",
"ordId":"12344",
"ts":"1695190491421",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 用户自定义ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > reqId | String | 用户自定义修改事件ID |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
POST / 批量修改订单
修改未完成的订单,一次最多可批量修改20个订单。请求参数应该按数组格式传递。
限速:300个/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/amend-batch-orders
请求示例
POST /api/v5/trade/amend-batch-orders
body
[
{
"ordId":"590909308792049444",
"newSz":"2",
"instId":"BTC-JPY"
},
{
"ordId":"590909308792049555",
"newSz":"2",
"instId":"BTC-JPY"
}
]
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 按ordId修改未完成的订单
amend_orders_with_orderId = [
{"instId": "BTC-JPY", "ordId": "590909308792049444","newSz":"2"},
{"instId": "BTC-JPY", "ordId": "590909308792049555","newSz":"2"}
]
result = tradeAPI.amend_multiple_orders(amend_orders_with_orderId)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID |
| cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为falsefalse:不自动撤单true:自动撤单 |
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 |
| clOrdId | String | 可选 | 用户自定义order ID |
| reqId | String | 否 | 用户自定义修改事件ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| newSz | String | 可选 | 修改的新数量,必须大于0,对于部分成交订单,该数量应包含已成交数量。 |
| newPx | String | 可选 | 修改后的新价格 |
| attachAlgoOrds | Array of object | 否 | 下单附带止盈止损信息 |
| > attachAlgoId | String | 可选 | 附带止盈止损的订单ID,由系统生成,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 可选 | 下单附带止盈止损时,客户自定义的策略订单ID |
| > newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈。 |
| > newTpOrdPx | String | 可选 | 止盈委托价 |
| > newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损。 |
| > newSlOrdPx | String | 可选 | 止损委托价 |
| > newTpTriggerPxType | String | 可选 | 止盈触发价类型last:最新价格如果要新增止盈,该参数必填 |
| > newSlTriggerPxType | String | 可选 | 止损触发价类型last:最新价格如果要新增止损,该参数必填 |
| > sz | String | 可选 | 新的张数。仅适用于“多笔止盈”的止盈订单且必填 |
| > amendPxOnTriggerType | String | 否 | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"ts":"1695190491421",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"ts":"1695190491421",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
}
],
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 结果代码,0表示成功 |
| msg | String | 错误信息,代码为0时,该字段为空 |
| data | String | 包含结果的对象数组 |
| > ordId | String | 订单ID |
| > clOrdId | String | 用户自定义ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > reqId | String | 用户自定义修改事件ID |
| > sCode | String | 事件执行结果的code,0代表成功 |
| > sMsg | String | 事件执行失败时的msg |
| inTime | String | REST网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 返回的时间是请求验证后的时间。 |
| outTime | String | REST网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
GET / 获取订单信息
查订单信息
限速:60次/2s
限速规则:UserID + Instrument ID
HTTP请求
GET /api/v5/trade/order
请求示例
GET /api/v5/trade/order?ordId=1753197687182819328&instId=BTC-JPY
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 通过 ordId 查询订单
result = tradeAPI.get_order(
instId="BTC-JPY",
ordId="680800019749904384"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY只适用于交易中的产品 |
| ordId | String | 可选 | 订单ID,ordId和clOrdId必须传一个,若传两个,以ordId为主 |
| clOrdId | String | 可选 | 用户自定义ID 如果 clOrdId关联了多个订单,只会返回最近的那笔订单 |
返回结果
{
"code": "0",
"data": [
{
"accFillSz": "0.00192834",
"algoClOrdId": "",
"algoId": "",
"attachAlgoClOrdId": "",
"attachAlgoOrds": [],
"avgPx": "51858",
"cTime": "1708587373361",
"cancelSource": "",
"cancelSourceReason": "",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "-0.00000192834",
"feeCcy": "BTC",
"fillPx": "51858",
"fillSz": "0.00192834",
"fillTime": "1708587373361",
"instId": "BTC-JPY",
"instType": "SPOT",
"isTpLimit": "false",
"linkedAlgoOrd": {
"algoId": ""
},
"ordId": "680800019749904384",
"ordType": "market",
"pnl": "0",
"px": "",
"rebate": "0",
"rebateCcy": "JPY",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "filled",
"sz": "100",
"tag": "",
"tdMode": "cash",
"tgtCcy": "quote_ccy",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "744876980",
"uTime": "1708587373362"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型SPOT:币币 |
| instId | String | 产品ID |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| ordId | String | 订单ID |
| clOrdId | String | 客户自定义订单ID |
| tag | String | 订单标签 |
| px | String | 委托价格 |
| sz | String | 委托数量 |
| pnl | String | 收益,适用于有成交的平仓订单,其他情况均为0 |
| ordType | String | 订单类型 market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| accFillSz | String | 累计成交数量 对于 币币,单位为交易货币,如 BTC-JPY, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币; |
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" |
| tradeId | String | 最新成交ID |
| fillSz | String | 最新成交数量 对于 币币,单位为交易货币,如 BTC-JPY, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币; |
| fillTime | String | 最新成交时间 |
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" |
| state | String | 订单状态 canceled:撤单成功live:等待成交 partially_filled:部分成交filled:完全成交 |
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
| attachAlgoOrds | Array of object | 下单附带止盈止损信息 |
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| > tpOrdKind | String | 止盈订单类型condition: 条件单limit: 限价单 |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价 |
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 |
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 |
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 |
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 |
| > algoId | Object | 策略订单唯一标识 |
如果自成交保护不适用则返回"" |
||
| feeCcy | String | 交易手续费币种 |
| fee | String | 手续费与返佣 对于币币,为订单交易累计的手续费,平台向用户收取的交易手续费,为负数。如: -0.01 |
| rebateCcy | String | 返佣金币种 |
| source | String | 订单来源6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单 |
| rebate | String | 返佣金额,仅适用于币币,平台向达到指定lv交易等级的用户支付的挂单奖励(返佣),如果没有返佣金,该字段为””。手续费返佣为正数,如:0.01 |
| category | String | 订单种类normal:普通委托 |
true 或 false |
||
| cancelSource | String | 订单取消来源的原因枚举值代码 |
| cancelSourceReason | String | 订单取消来源的对应具体原因 |
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有algoClOrdId时有值,否则为"", |
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" |
| isTpLimit | String | 是否为限价止盈,true 或 false. |
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
GET / 获取未成交订单列表
获取当前账户下所有未成交订单信息
限速:60次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/orders-pending
请求示例
GET /api/v5/trade/orders-pending?ordType=post_only,fok,ioc&instType=SPOT
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 查询所有未成交订单
result = tradeAPI.get_order_list(
instType="SPOT",
ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 否 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
| ordType | String | 否 | 订单类型market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余 |
| state | String | 否 | 订单状态live:等待成交partially_filled:部分成交 |
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的ordId |
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的ordId |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"accFillSz": "0",
"algoClOrdId": "",
"algoId": "",
"attachAlgoClOrdId": "",
"attachAlgoOrds": [],
"avgPx": "",
"cTime": "1724733617998",
"cancelSource": "",
"cancelSourceReason": "",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "0",
"feeCcy": "BTC",
"fillPx": "",
"fillSz": "0",
"fillTime": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"isTpLimit": "false",
"linkedAlgoOrd": {
"algoId": ""
},
"ordId": "1752588852617379840",
"ordType": "post_only",
"pnl": "0",
"px": "13013.5",
"rebate": "0",
"rebateCcy": "JPY",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "live",
"sz": "0.001",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "",
"uTime": "1724733617998"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| ordId | String | 订单ID |
| clOrdId | String | 客户自定义订单ID |
| tag | String | 订单标签 |
| px | String | 委托价格 |
| sz | String | 委托数量 |
| pnl | String | 收益,适用于有成交的平仓订单,其他情况均为0 |
| ordType | String | 订单类型market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| accFillSz | String | 累计成交数量 |
| fillPx | String | 最新成交价格。如果还没成交,系统返回""。 |
| tradeId | String | 最新成交ID |
| fillSz | String | 最新成交数量 |
| fillTime | String | 最新成交时间 |
| avgPx | String | 成交均价。如果还没成交,系统返回0。 |
| state | String | 订单状态live:等待成交 partially_filled:部分成交 |
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
| tpOrdPx | String | 止盈委托价 |
| attachAlgoOrds | Array of object | 下单附带止盈止损信息 |
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| > tpOrdKind | String | 止盈订单类型condition: 条件单limit: 限价单 |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价 |
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 |
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 |
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 |
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 |
| > algoId | Object | 策略订单唯一标识 |
如果自成交保护不适用则返回"" |
||
| feeCcy | String | 交易手续费币种 |
| fee | String | 手续费与返佣 对于币币,为订单交易累计的手续费,平台向用户收取的交易手续费,为负数。如: -0.01 |
| rebateCcy | String | 返佣金币种 |
| source | String | 订单来源6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单 |
| rebate | String | 返佣金额,仅适用于币币和杠杆,平台向达到指定lv交易等级的用户支付的挂单奖励(返佣),如果没有返佣金,该字段为“”。手续费返佣为正数,如:0.01 |
| category | String | 订单种类 normal:普通委托 |
true 或 false |
||
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有algoClOrdId是有值,否则为"", |
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" |
| isTpLimit | String | 是否为限价止盈,true 或 false. |
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| cancelSource | String | 订单取消来源的原因枚举值代码 |
| cancelSourceReason | String | 订单取消来源的对应具体原因 |
GET / 获取历史订单记录(近七天)
获取最近7天挂单,且完成的订单数据,包括7天以前挂单,但近7天才成交的订单数据。按照订单创建时间倒序排序。
已经撤销的未成交单 只保留2小时
限速:40次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/orders-history
请求示例
GET /api/v5/trade/orders-history?ordType=post_only,fok,ioc&instType=SPOT
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 查询币币历史订单(7天内)
# 已经撤销的未成交单 只保留2小时
result = tradeAPI.get_orders_history(
instType="SPOT",
ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如BTC-JPY |
| ordType | String | 否 | 订单类型 market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| state | String | 否 | 订单状态canceled:撤单成功 filled:完全成交 |
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的ordId |
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的ordId |
| begin | String | 否 | 筛选的开始时间戳 cTime,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 cTime,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"accFillSz": "0.00192834",
"algoClOrdId": "",
"algoId": "",
"attachAlgoClOrdId": "",
"attachAlgoOrds": [],
"avgPx": "51858",
"cTime": "1708587373361",
"cancelSource": "",
"cancelSourceReason": "",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "-0.00000192834",
"feeCcy": "BTC",
"fillPx": "51858",
"fillSz": "0.00192834",
"fillTime": "1708587373361",
"instId": "BTC-JPY",
"instType": "SPOT",
"isTpLimit": "false",
"ordId": "680800019749904384",
"ordType": "market",
"pnl": "0",
"px": "",
"rebate": "0",
"rebateCcy": "JPY",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "filled",
"sz": "100",
"tag": "",
"tdMode": "cash",
"tgtCcy": "quote_ccy",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "744876980",
"uTime": "1708587373362",
"linkedAlgoOrd": {
"algoId": ""
}
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| ordId | String | 订单ID |
| clOrdId | String | 客户自定义订单ID |
| tag | String | 订单标签 |
| px | String | 委托价格 |
| sz | String | 委托数量 |
| ordType | String | 订单类型market:市价单limit:限价单 post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| accFillSz | String | 累计成交数量 |
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" |
| tradeId | String | 最新成交ID |
| fillSz | String | 最新成交数量 |
| fillTime | String | 最新成交时间 |
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" |
| state | String | 订单状态canceled:撤单成功 filled:完全成交 |
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
| attachAlgoOrds | Array of object | 下单附带止盈止损信息 |
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| > tpOrdKind | String | 止盈订单类型condition: 条件单limit: 限价单 |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价 |
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 |
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 |
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 |
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 |
| > algoId | Object | 策略订单唯一标识 |
如果自成交保护不适用则返回"" |
||
| feeCcy | String | 交易手续费币种 |
| fee | String | 手续费与返佣 对于币币,为订单交易累计的手续费,平台向用户收取的交易手续费,为负数。如: -0.01 |
| rebateCcy | String | 返佣金币种 |
| source | String | 订单来源6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单 |
| rebate | String | 返佣金额,仅适用于币币,平台向达到指定lv交易等级的用户支付的挂单奖励(返佣),如果没有返佣金,该字段为“”。手续费返佣为正数,如:0.01 |
| pnl | String | 收益,适用于有成交的平仓订单,其他情况均为0 |
| category | String | 订单种类 normal:普通委托 |
true 或 false |
||
| cancelSource | String | 订单取消来源的原因枚举值代码 |
| cancelSourceReason | String | 订单取消来源的对应具体原因 |
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有algoClOrdId时有值,否则为"", |
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" |
| isTpLimit | String | 是否为限价止盈,true 或 false. |
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
GET / 获取历史订单记录(近三个月)
获取最近3个月挂单,且完成的订单数据,包括3个月以前挂单,但近3个月才成交的订单数据。按照订单创建时间倒序排序。
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/orders-history-archive
请求示例
GET /api/v5/trade/orders-history-archive?ordType=post_only,fok,ioc&instType=SPOT
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 查询币币历史订单(3月内)
result = tradeAPI.get_orders_history_archive(
instType="SPOT",
ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
| ordType | String | 否 | 订单类型market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消ioc:立即成交并取消剩余) |
| state | String | 否 | 订单状态canceled:撤单成功 filled:完全成交 |
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的ordId |
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的ordId |
| begin | String | 否 | 筛选的开始时间戳 cTime,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 cTime,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"accFillSz": "0.00192834",
"algoClOrdId": "",
"algoId": "",
"attachAlgoClOrdId": "",
"attachAlgoOrds": [],
"avgPx": "51858",
"cTime": "1708587373361",
"cancelSource": "",
"cancelSourceReason": "",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "-0.00000192834",
"feeCcy": "BTC",
"fillPx": "51858",
"fillSz": "0.00192834",
"fillTime": "1708587373361",
"instId": "BTC-JPY",
"instType": "SPOT",
"isTpLimit": "false",
"ordId": "680800019749904384",
"ordType": "market",
"pnl": "0",
"px": "",
"rebate": "0",
"rebateCcy": "JPY",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "filled",
"sz": "100",
"tag": "",
"tdMode": "cash",
"tgtCcy": "quote_ccy",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "744876980",
"uTime": "1708587373362",
"linkedAlgoOrd": {
"algoId": ""
}
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| ordId | String | 订单ID |
| clOrdId | String | 客户自定义订单ID |
| tag | String | 订单标签 |
| px | String | 委托价格 |
| sz | String | 委托数量 |
| ordType | String | 订单类型market:市价单limit:限价单 post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| accFillSz | String | 累计成交数量 |
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" |
| tradeId | String | 最新成交ID |
| fillSz | String | 最新成交数量 |
| fillTime | String | 最新成交时间 |
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" |
| state | String | 订单状态canceled:撤单成功 filled:完全成交 |
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
如果自成交保护不适用则返回"" |
||
| attachAlgoOrds | Array of object | 下单附带止盈止损信息 |
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| > tpOrdKind | String | 止盈订单类型condition: 条件单limit: 限价单 |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价 |
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 |
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 |
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 |
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 |
| > algoId | Object | 策略订单唯一标识 |
| feeCcy | String | 交易手续费币种 |
| fee | String | 手续费与返佣 对于币币,为订单交易累计的手续费,平台向用户收取的交易手续费,为负数。如: -0.01 |
| rebateCcy | String | 返佣金币种 |
| rebate | String | 返佣金额,仅适用于币币,平台向达到指定lv交易等级的用户支付的挂单奖励(返佣),如果没有返佣金,该字段为“”。手续费返佣为正数,如:0.01 |
| pnl | String | 收益,适用于有成交的平仓订单,其他情况均为0 |
| source | String | 订单来源6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单 |
| category | String | 订单种类normal:普通委托 |
true 或 false |
||
| cancelSource | String | 订单取消来源的原因枚举值代码 |
| cancelSourceReason | String | 订单取消来源的对应具体原因 |
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有algoClOrdId是有值,否则为"", |
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" |
| isTpLimit | String | 是否为限价止盈,true 或 false. |
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
GET / 获取成交明细(近三天)
获取近3天的订单成交明细信息
限速:60次/2s
限速规则:UserID
HTTP 请求
GET /api/v5/trade/fills
请求示例
GET /api/v5/trade/fills
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 获取成交明细
result = tradeAPI.get_fills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 否 | 产品类型SPOT:币币< |
| instId | String | 否 | 产品 ID,如BTC-JPY |
| ordId | String | 否 | 订单 ID |
| subType | String | 否 | 成交类型 1:买入2:卖出 |
| after | String | 否 | 请求此 ID 之前(更旧的数据)的分页内容,传的值为对应接口的billId |
| before | String | 否 | 请求此 ID 之后(更新的数据)的分页内容,传的值为对应接口的billId |
| begin | String | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"side": "buy",
"fillSz": "0.00192834",
"fillPx": "51858",
"fee": "-0.00000192834",
"ordId": "680800019749904384",
"feeRate": "-0.001",
"instType": "SPOT",
"instId": "BTC-JPY",
"clOrdId": "",
"billId": "680800019754098688",
"subType": "1",
"tag": "",
"fillTime": "1708587373361",
"execType": "T",
"tradeId": "744876980",
"feeCcy": "BTC",
"ts": "1708587373362"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品 ID |
| tradeId | String | 最新成交 ID |
| ordId | String | 订单 ID |
| clOrdId | String | 用户自定义订单ID |
| billId | String | 账单 ID |
| subType | String | 成交类型 |
| tag | String | 订单标签 |
| fillPx | String | 最新成交价格,同"账单流水查询"的 px |
| fillSz | String | 最新成交数量 |
| side | String | 订单方向 buy:买 sell:卖 |
| execType | String | 流动性方向 T:taker M:maker |
| feeCcy | String | 交易手续费币种或者返佣金币种 |
| fee | String | 手续费金额或者返佣金额,手续费扣除为‘负数’,如-0.01;手续费返佣为‘正数’,如 0.01 |
| ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如1597026383085 |
| fillTime | String | 成交时间,与订单频道的fillTime相同 |
| feeRate | String | 手续费费率。 |
GET / 获取成交明细(近三个月)
获取近3个月订单成交明细信息
限速:10 次/2s
限速规则:UserID
HTTP 请求
GET /api/v5/trade/fills-history
请求示例
GET /api/v5/trade/fills-history?instType=SPOT
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 查询 币币 成交明细(3月内)
result = tradeAPI.get_fills_history(
instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品 ID,如BTC-JPY |
| ordId | String | 否 | 订单 ID |
| subType | String | 否 | 成交类型 1:买入2:卖出 |
| after | String | 否 | 请求此 ID 之前(更旧的数据)的分页内容,传的值为对应接口的 billId |
| before | String | 否 | 请求此 ID 之后(更新的数据)的分页内容,传的值为对应接口的 billId |
| begin | String | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 |
| end | String | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"side": "buy",
"fillSz": "0.00192834",
"fillPx": "51858",
"fee": "-0.00000192834",
"ordId": "680800019749904384",
"feeRate": "-0.001",
"instType": "SPOT",
"instId": "BTC-JPY",
"clOrdId": "",
"billId": "680800019754098688",
"subType": "1",
"tag": "",
"fillTime": "1708587373361",
"execType": "T",
"tradeId": "744876980",
"feeCcy": "BTC",
"ts": "1708587373362"
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品 ID |
| tradeId | String | 最新成交 ID |
| ordId | String | 订单 ID |
| clOrdId | String | 用户自定义订单ID |
| billId | String | 账单 ID |
| subType | String | 成交类型 |
| tag | String | 订单标签 |
| fillPx | String | 最新成交价格,同"账单流水查询"的 px |
| fillSz | String | 最新成交数量 |
| side | String | 订单方向buy:买sell:卖 |
| execType | String | 流动性方向T:takerM:maker |
| feeCcy | String | 交易手续费币种或者返佣金币种 |
| fee | String | 手续费金额或者返佣金额 手续费扣除为‘负数’,如 -0.01 手续费返佣为‘正数’,如 0.01 |
| ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| fillTime | String | 成交时间,与订单频道的fillTime相同 |
| feeRate | String | 手续费费率。 |
POST / 倒计时全部撤单
在倒计时结束后,取消所有挂单。适用于所有撮合交易产品(不包括价差交易)。
限速:1次/s
限速规则:UserID + tag
HTTP请求
POST /api/v5/trade/cancel-all-after
请求示例
POST /api/v5/trade/cancel-all-after
{
"timeOut":"60"
}
import okx.Trade as Trade
# API initialization
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 设置倒计时全部撤单
result = tradeAPI.cancel_all_after(
timeOut="10"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| timeOut | String | 是 | 取消挂单的倒计时,单位为秒 取值范围为 0, [10, 120] 0 代表不使用该功能 |
| tag | String | 否 | CAA订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"triggerTime":"1587971460",
"tag":"",
"ts":"1587971400"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| triggerTime | String | 触发撤单的时间 triggerTime=0 代表未使用该功能 |
| tag | String | CAA订单标签 |
| ts | String | 请求被接收到的时间 |
WS / 订单频道
获取订单信息,首次订阅不推送,只有当下单、撤单等事件触发时,推送数据
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
"op": "subscribe",
"args": [{
"channel": "orders",
"instType": "SPOT",
"instId": "BTC-JPY"
}]
}
请求示例
{
"op": "subscribe",
"args": [{
"channel": "orders",
"instType": "SPOT"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名orders |
| > instType | String | 是 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
成功返回示例:单个
{
"event": "subscribe",
"arg": {
"channel": "orders",
"instType": "SPOT",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "orders",
"instType": "SPOT"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders\", \"instType\" : \"SPOT\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instType | String | 是 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例:单个
{
"arg": {
"channel": "orders",
"instType": "SPOT",
"instId": "BTC-JPY",
"uid": "614488474791936"
},
"data": [
{
"accFillSz": "0.001",
"amendResult": "",
"avgPx": "31527.1",
"cTime": "1654084334977",
"category": "normal",
"ccy": "",
"clOrdId": "",
"code": "0",
"execType": "M",
"fee": "-0.02522168",
"feeCcy": "JPY",
"fillFee": "-0.02522168",
"fillFeeCcy": "JPY",
"fillNotionalJpy": "31.50818374",
"fillPx": "31527.1",
"fillSz": "0.001",
"fillTime": "1654084353263",
"instId": "BTC-JPY",
"instType": "SPOT",
"msg": "",
"ordId": "452197707845865472",
"ordType": "limit",
"px": "31527.1",
"rebate": "0",
"rebateCcy": "BTC",
"reqId": "",
"side": "sell",
"attachAlgoClOrdId": "",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "last",
"source": "",
"state": "filled",
"sz": "0.001",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "last",
"tradeId": "242589207",
"lastPx": "38892.2",
"algoClOrdId": "",
"attachAlgoOrds": [],
"algoId": "",
"amendSource": "",
"cancelSource": "",
"isTpLimit": "false",
"uTime": "1654084353264",
"linkedAlgoOrd": {
"algoId": ""
}
}
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > uid | String | 用户标识 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID来识别您的订单 |
| > tag | String | 订单标签 |
| > px | String | 委托价格 |
| > sz | String | 原始委托数量,币币,以币为单位; |
| > ordType | String | 订单类型 market:市价单 limit:限价单 post_only:只做maker单 fok:全部成交或立即取消单ioc:立即成交并取消剩余单 |
| > side | String | 订单方向,buy sell |
| > tdMode | String | 交易模式 非保证金模式 cash:现金 |
| > tgtCcy | String | 市价单委托数量sz的单位base_ccy: 交易货币 quote_ccy:计价货币 |
| > fillPx | String | 最新成交价格 |
| > tradeId | String | 最新成交ID |
| > fillSz | String | 最新成交数量 对于 币币,单位为交易货币,如 BTC-JPY, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币; |
| > fillTime | String | 最新成交时间 |
| > fillFee | String | 最新一笔成交的手续费金额或者返佣金额: 手续费扣除 为 ‘负数’,如 -0.01 ; 手续费返佣 为 ‘正数’,如 0.01 |
| > fillFeeCcy | String | 最新一笔成交的手续费币种或者返佣币种。 如果fillFee小于0,为手续费币种;如果fillFee大于等于0,为返佣币种 |
| > execType | String | 最新一笔成交的流动性方向 T:taker M:maker |
| > accFillSz | String | 累计成交数量 对于 币币,单位为交易货币,如 BTC-JPY, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币; |
| > fillNotionalJpy | String | 委托单已成交的日元价值 |
| > avgPx | String | 成交均价,如果成交数量为0,该字段也为0 |
| > state | String | 订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交 filled:完全成交 |
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价,止盈委托价格为-1时,执行市价止盈 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价,止损委托价格为-1时,执行市价止损 |
| > attachAlgoOrds | Array of object | 下单附带止盈止损信息 |
| >> attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId |
| >> attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID |
| >> tpOrdKind | String | 止盈订单类型condition: 条件单limit: 限价单 |
| >> tpTriggerPx | String | 止盈触发价 |
| >> tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| >> tpOrdPx | String | 止盈委托价 |
| >> slTriggerPx | String | 止损触发价 |
| >> slTriggerPxType | String | 止损触发价类型last:最新价格 |
| >> slOrdPx | String | 止损委托价 |
| >> sz | String | 张数。仅适用于“多笔止盈”的止盈订单 |
| >> amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| > linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 |
| >> algoId | Object | 策略订单唯一标识 |
| > feeCcy | String | 交易手续费币种 币币:如果是买的话,收取的就是交易币;如果是卖的话,收取的就是计价币。 |
| > fee | String | 订单交易累计的手续费与返佣 平台向用户收取的交易手续费,为负数。如: -0.01 |
| > rebateCcy | String | 返佣金币种 ,如果没有返佣金,该字段为“” |
| > rebate | String | 返佣累计金额,仅适用于币币,平台向达到指定lv交易等级的用户支付的挂单奖励(返佣),如果没有返佣金,该字段为“” |
| > source | String | 订单来源7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单 |
| > cancelSource | String | 订单取消的来源 有效值及对应的含义是: 0: 已撤单:系统撤单1: 用户主动撤单2: 已撤单:预减仓撤单,用户保证金不足导致挂单被撤回 13: 已撤单:FOK 委托订单未完全成交,导致挂单被完全撤回14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单 31: 当前只挂单订单 (Post only) 将会吃掉挂单深度 32: 自成交保护 33: 当前 taker 订单匹配的订单数量超过最大限制 |
| > amendSource | String | 订单修改的来源1: 用户主动改单,改单成功2: 用户主动改单,并且当前这笔订单被只减仓修改,改单成功3: 用户主动下单,并且当前这笔订单被只减仓修改,改单成功4: 用户当前已存在的挂单(非当前操作的订单),被只减仓修改,改单成功 |
| > category | String | 订单种类分类normal:普通委托订单种类 |
| > isTpLimit | String | 是否为限价止盈,true 或 false. |
| > uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > reqId | String | 修改订单时使用的request ID,如果没有修改,该字段为"" |
| > amendResult | String | 修改订单的结果-1:失败0:成功1:自动撤单(修改请求返回成功但最终改单失败导致自动撤销)通过API修改订单时,如果 cxlOnFail设置为true且修改返回结果为失败时,则返回 ""通过API修改订单时,如果修改返回结果为成功但修改最终失败后,当 cxlOnFail设置为false时返回 -1;当cxlOnFail设置为true时则返回1通过Web/APP修改订单时,如果修改失败后,则返回 -1 |
| > algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有algoClOrdId时有值,否则为"", |
| > algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" |
| > lastPx | String | 最新成交价 |
| > code | String | 错误码,默认为0 |
| > msg | String | 错误消息,默认为"" |
WS / 下单
只有当您的账户有足够的资金才能下单。一旦下单,您的账户资金将在订单生命周期内被冻结。被冻结的资金以及数量取决于订单指定的类型和参数
服务地址
/ws/v5/private (需要登录)
限速:60次/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1512",
"op": "order",
"args": [{
"side": "buy",
"instId": "BTC-JPY",
"tdMode": "cash",
"ordType": "market",
"sz": "100"
}]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 order |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID,如 BTC-JPY |
| > tdMode | String | 是 | 交易模式 非保证金模式 cash:现金 |
| > clOrdId | String | 否 | 由用户设置的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| > tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 |
| > side | String | 是 | 订单方向,buy sell |
| > ordType | String | 是 | 订单类型 market:市价单limit:限价单 post_only:只做maker单 fok:全部成交或立即取消 ioc:立即成交并取消剩余 |
| > sz | String | 是 | 委托数量 |
| > px | String | 可选 | 委托价格,仅适用于limit、post_only、fok、ioc类型的订单 |
| > tgtCcy | String | 否 | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| > banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 |
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
成功返回示例
{
"id": "1512",
"op": "order",
"data": [{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"ts":"1695190491421",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
失败返回示例
{
"id": "1512",
"op": "order",
"data": [{
"clOrdId": "",
"ordId": "",
"tag": "",
"ts":"1695190491421",
"sCode": "5XXXX",
"sMsg": "not exist"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误返回示例
{
"id": "1512",
"op": "order",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID |
| > tag | String | 订单标签 |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 订单状态消息 |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
WS / 批量下单
批量进行下单操作,每次可批量交易不同类型的产品,最多可下单20个
服务地址
/ws/v5/private (需要登录)
限速:300个/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1513",
"op": "batch-orders",
"args": [{
"side": "buy",
"instId": "BTC-JPY",
"tdMode": "cash",
"ordType": "market",
"sz": "100"
}, {
"side": "buy",
"instId": "ETH-JPY",
"tdMode": "cash",
"ordType": "market",
"sz": "1"
}]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 batch-orders |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID,如 BTC-JPY |
| > tdMode | String | 否 | 交易模式非保证金模式 cash:现金 |
| > clOrdId | String | 否 | 用户提供的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| > tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 |
| > side | String | 是 | 订单方向, buy sell |
| > ordType | String | 是 | 订单类型 market:市价单 limit:限价单post_only:只做maker单 fok:全部成交或立即取消单 ioc:立即成交并取消剩余单 |
| > sz | String | 是 | 委托数量 |
| > px | String | 可选 | 委托价格,仅适用于limit、post_only、fok、ioc类型的订单 |
| > tgtCcy | String | 否 | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| > banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 |
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
全部成功返回示例
{
"id": "1513",
"op": "batch-orders",
"data": [{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"ts":"1695190491421",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "",
"ordId": "12344",
"tag": "",
"ts":"1695190491421",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
部分成功返回示例
{
"id": "1513",
"op": "batch-orders",
"data": [{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"ts":"1695190491421",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "",
"ordId": "",
"tag": "",
"ts":"1695190491421",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
}],
"code": "2",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
全部失败返回示例
{
"id": "1513",
"op": "batch-orders",
"data": [{
"clOrdId": "oktswap6",
"ordId": "",
"tag": "",
"ts":"1695190491421",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
}, {
"clOrdId": "oktswap7",
"ordId": "",
"tag": "",
"ts":"1695190491421",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误返回示例
{
"id": "1513",
"op": "batch-orders",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID |
| > tag | String | 订单标签 |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 事件执行失败或成功时的msg |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
WS / 撤单
撤销当前未完成订单
服务地址
/ws/v5/private (需要登录)
限速:60次/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1514",
"op": "cancel-order",
"args": [{
"instId": "BTC-JPY",
"ordId": "2510789768709120"
}]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 cancel-order |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID |
| > ordId | String | 可选 | 订单ID ordId和clOrdId必须传一个,若传两个,以 ordId 为主 |
| > clOrdId | String | 可选 | 用户提供的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度要在1-32位之间。 |
成功返回示例
{
"id": "1514",
"op": "cancel-order",
"data": [{
"clOrdId": "",
"ordId": "2510789768709120",
"ts": "1695190491421",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
失败返回示例
{
"id": "1514",
"op": "cancel-order",
"data": [{
"clOrdId": "",
"ordId": "2510789768709120",
"ts": "1695190491421",
"sCode": "5XXXX",
"sMsg": "Order not exist"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误返回示例
{
"id": "1514",
"op": "cancel-order",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 订单状态消息 |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
WS / 批量撤单
批量进行撤单操作,每次可批量撤销不同类型的产品,最多撤销20个
服务地址
/ws/v5/private (需要登录)
限速:300个/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1515",
"op": "batch-cancel-orders",
"args": [{
"instId": "BTC-JPY",
"ordId": "2517748157541376"
}, {
"instId": "LTC-JPY",
"ordId": "2517748155771904"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 batch-cancel-orders |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID |
| > ordId | String | 可选 | 订单ID ordId和clOrdId必须传一个,若传两个,以ordId 为主 |
| > clOrdId | String | 可选 | 用户提供的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度要在1-32位之间。 |
全部成功返回示例
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"ts": "1695190491421",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"ts": "1695190491421",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
部分成功的返回示例
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"ts": "1695190491421",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"ts": "1695190491421",
"sCode": "5XXXX",
"sMsg": "order not exist"
}],
"code": "2",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
全部失败的返回示例
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"ts": "1695190491421",
"sCode": "5XXXX",
"sMsg": "order not exist"
}, {
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"ts": "1695190491421",
"sCode": "5XXXX",
"sMsg": "order not exist"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误示例
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 订单状态消息 |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
WS / 改单
修改当前未成交的订单
服务地址
/ws/v5/private (需要登录)
限速:60次/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1512",
"op": "amend-order",
"args": [{
"instId": "BTC-JPY",
"ordId": "2510789768709120",
"newSz": "2"
}]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 amend-order |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID |
| > cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为falsefalse:不自动撤单true:自动撤单 |
| > ordId | String | 可选 | 订单ID ordId和clOrdId必须传一个,若传两个,以 ordId 为主 |
| > clOrdId | String | 可选 | 用户提供的订单ID |
| > reqId | String | 否 | 用户提供的reqId 如果提供,那在返回参数中返回reqId,方便找到相应的修改请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| > newSz | String | 可选 | 请求修改的新数量,必须大于0。newSz和newPx不可同时为空。对于部分成交订单,该数量应包含已成交数量。 |
| > newPx | String | 可选 | 修改后的新价格 |
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
成功返回示例
{
"id": "1512",
"op": "amend-order",
"data": [{
"clOrdId": "",
"ordId": "2510789768709120",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
失败返回示例
{
"id": "1512",
"op": "amend-order",
"data": [{
"clOrdId": "",
"ordId": "2510789768709120",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误返回示例
{
"id": "1512",
"op": "amend-order",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 用户提供的订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > reqId | String | 用户提供的reqId 如果用户在请求中提供reqId,则返回相应reqId |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 订单状态消息 |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
WS / 批量改单
批量进行改单操作,每次可批量修改不同类型的产品,最多改20个
服务地址
/ws/v5/private (需要登录)
限速:300个/2s
限速规则:UserID + Instrument ID
请求示例
{
"id": "1513",
"op": "batch-amend-orders",
"args": [{
"instId": "BTC-JPY",
"ordId": "12345689",
"newSz": "2"
}, {
"instId": "BTC-JPY",
"ordId": "12344",
"newSz": "2"
}]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 |
| op | String | 是 | 支持的业务操作,如 batch-amend-orders |
| args | Array | 是 | 请求参数 |
| > instId | String | 是 | 产品ID |
| > cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为falsefalse:不自动撤单true:自动撤单 |
| > ordId | String | 可选 | 订单ID ordId 和 clOrdId 必须传一个,若传两个,以order id 为主 |
| > clOrdId | String | 可选 | 用户提供的订单ID |
| > reqId | String | 否 | 用户提供的请求ID 如果提供,那在返回参数中返回reqId,方便找到相应的修改请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
| > newSz | String | 可选 | 修改后的新数量,必须大于0。newSz和newPx不可同时为空。对于部分成交订单,该数量应包含已成交数量。 |
| > newPx | String | 可选 | 修改后的新价格 |
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 |
全部成功返回示例
{
"id": "1513",
"op": "batch-amend-orders",
"data": [{
"clOrdId": "oktswap6",
"ordId": "12345689",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "oktswap7",
"ordId": "12344",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}],
"code": "0",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
全部失败返回示例
{
"id": "1513",
"op": "batch-amend-orders",
"data": [{
"clOrdId": "",
"ordId": "12345689",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}, {
"clOrdId": "oktswap7",
"ordId": "",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}],
"code": "1",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
部分成功返回示例
{
"id": "1513",
"op": "batch-amend-orders",
"data": [{
"clOrdId": "",
"ordId": "12345689",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}, {
"clOrdId": "oktswap7",
"ordId": "",
"ts": "1695190491421",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}],
"code": "2",
"msg": "",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
格式错误返回示例
{
"id": "1513",
"op": "batch-amend-orders",
"data": [],
"code": "60013",
"msg": "Invalid args",
"inTime": "1695190491421339",
"outTime": "1695190491423240"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | String | 消息的唯一标识 |
| op | String | 业务操作 |
| code | String | 代码 |
| msg | String | 消息 |
| data | Array | 请求成功后返回的数据 |
| > ordId | String | 订单ID |
| > clOrdId | String | 由用户设置的订单ID |
| > ts | String | 系统完成订单请求处理的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > reqId | String | 用户提供的请求ID 如果用户在请求中提供reqId,则返回相应reqId |
| > sCode | String | 订单状态码,0 代表成功 |
| > sMsg | String | 订单状态消息 |
| inTime | String | WebSocket 网关接收请求时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
| outTime | String | WebSocket 网关发送响应时的时间戳,Unix时间戳的微秒数格式,如 1597026383085123 |
策略交易
POST / 策略委托下单
提供单向止盈止损委托、双向止盈止损委托
限速:20次/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/order-algo
请求示例
# 止盈止损策略下单
POST /api/v5/trade/order-algo
body
{
"instId":"BTC-JPY",
"tdMode":"cash",
"side":"buy",
"ordType":"conditional",
"sz":"2",
"tpTriggerPx":"15",
"tpOrdPx":"18"
}
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 单向止盈止损
result = tradeAPI.place_algo_order(
instId="BTC-JPY",
tdMode="cash",
side="buy",
ordType="conditional",
sz="2",
tpTriggerPx="15",
tpOrdPx="18"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| tdMode | String | 是 | 交易模式 非保证金模式 cash:非保证金 |
| side | String | 是 | 订单方向buy:买sell:卖 |
| ordType | String | 是 | 订单类型conditional:单向止盈止损oco:双向止盈止损 |
| sz | String | 可选 | 委托数量 |
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间 |
| tgtCcy | String | 否 | 委托数量的类型base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币单向止盈止损市价买单默认买为 计价货币,卖为交易货币 |
| algoClOrdId | String | 否 | 客户自定义策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
止盈止损
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| tpTriggerPx | String | 否 | 止盈触发价,如果填写此参数,必须填写止盈委托价 |
| tpTriggerPxType | String | 否 | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 否 | 止盈委托价,如果填写此参数,必须填写止盈触发价 |
| slTriggerPx | String | 否 | 止损触发价,如果填写此参数,必须填写止损委托价 |
| slTriggerPxType | String | 否 | 止损触发价类型last:最新价格 |
| slOrdPx | String | 否 | 止损委托价,如果填写此参数,必须填写止损触发价 |
POST / 撤销策略委托订单
撤销策略委托订单,每次最多可以撤销20个策略委托单
限速:20次/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/cancel-algos
请求示例
POST /api/v5/trade/cancel-algos
body
[
{
"algoId":"590919993110396111",
"instId":"BTC-JPY"
},
{
"algoId":"590920138287841222",
"instId":"BTC-JPY"
}
]
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 支持止盈止损类型的策略撤单
algo_orders = [
{"instId": "BTC-JPY", "algoId": "590919993110396111"},
{"instId": "BTC-JPY", "algoId": "590920138287841222"}
]
result = tradeAPI.cancel_algo_order(algo_orders)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| algoId | String | 是 | 策略委托单ID |
| instId | String | 是 | 产品ID 如 BTC-JPY |
返回结果
{
"code": "0",
"data": [
{
"algoClOrdId": "",
"algoId": "1836489397437468672",
"clOrdId": "",
"sCode": "0",
"sMsg": "",
"tag": ""
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| algoId | String | 策略委托单ID |
| sCode | String | 事件执行结果的code,0代表成功 |
| sMsg | String | 事件执行失败时的msg |
POST / 修改策略委托订单
修改策略委托订单
限速:20次/2s
限速规则:UserID + Instrument ID
HTTP请求
POST /api/v5/trade/amend-algos
请求示例
POST /api/v5/trade/amend-algos
body
{
"algoId":"2510789768709120",
"newSz":"2",
"instId":"BTC-JPY"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID |
| algoId | String | 可选 | 策略委托单IDalgoId和algoClOrdId必须传一个,若传两个,以algoId为主 |
| algoClOrdId | String | 可选 | 客户自定义策略订单IDalgoId和algoClOrdId必须传一个,若传两个,以algoId为主 |
| cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为falsefalse:不自动撤单true:自动撤单 |
| reqId | String | 否 | 用户自定义修改事件ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 |
| newSz | String | 可选 | 修改的新数量,必须大于0。 |
止盈止损
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈 |
| newTpOrdPx | String | 可选 | 止盈委托价 |
| newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损 |
| newSlOrdPx | String | 可选 | 止损委托价 |
| newTpTriggerPxType | String | 可选 | 止盈触发价类型last:最新价格 |
| newSlTriggerPxType | String | 可选 | 止损触发价类型last:最新价格 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"algoClOrdId":"algo_01",
"algoId":"2510789768709120",
"reqId":"po103ux",
"sCode":"0",
"sMsg":""
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| algoId | String | 订单ID |
| algoClOrdId | String | 客户自定义策略订单ID |
| reqId | String | 用户自定义修改事件ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 |
| sCode | String | 事件执行结果的code,0代表成功 |
| sMsg | String | 事件执行失败时的msg |
GET / 获取策略委托单信息
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/order-algo
请求示例
GET /api/v5/trade/order-algo?algoId=1753184812254216192
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| algoId | String | 可选 | 策略委托单IDalgoId和algoClOrdId必须传一个,若传两个,以algoId为主 |
| algoClOrdId | String | 可选 | 客户自定义策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
返回结果
{
"code": "0",
"data": [
{
"activePx": "",
"actualPx": "",
"actualSide": "",
"actualSz": "",
"algoClOrdId": "",
"algoId": "681187161907138560",
"amendPxOnTriggerType": "",
"attachAlgoOrds": [],
"cTime": "1708679675244",
"uTime": "1708679675245",
"callbackRatio": "0.05",
"callbackSpread": "",
"ccy": "",
"clOrdId": "",
"closeFraction": "",
"failCode": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"last": "50962.7",
"linkedOrd": {
"ordId": ""
},
"moveTriggerPx": "53423.160",
"ordId": "",
"ordIdList": [],
"ordPx": "",
"ordType": "move_order_stop",
"pxLimit": "",
"pxSpread": "",
"pxVar": "",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"state": "live",
"sz": "10",
"szLimit": "",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"timeInterval": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"triggerPx": "",
"triggerPxType": "",
"triggerTime": ""
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| algoId | String | 策略委托单ID |
| clOrdId | String | 客户自定义订单ID |
| sz | String | 委托数量 |
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% |
| ordType | String | 订单类型 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币
仅适用于币币市价订单
默认买单为quote_ccy,卖单为base_ccy |
| state | String | 订单状态live:待生效pause:暂停生效 partially_effective:部分生效effective:已生效canceled:已撤销 order_failed:委托失败 partially_failed:部分委托失败 |
|lever |String |杠杆倍数,0.01到125之间的数值 |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
|triggerPx |String |计划委托触发价格 |
|triggerPxType |String |计划委托触发价格类型last:最新价格index:指数价格mark:标记价格 |
|ordPx |String | 计划委托单的委托价格 |
| actualSz | String | 实际委托量 |
| actualPx | String | 实际委托价 |
| actualSide | String | 实际触发方向tp:止盈sl:止损
仅适用于单向止盈止损委托和双向止盈止损委托 |
| triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| pxVar | String | 价格比例 |
| pxSpread | String | 价距
|
| szLimit | String | 单笔数量
|
| pxLimit | String | 挂单限制价
|
| tag | String | 订单标签 |
| timeInterval | String | 下单间隔 |
| callbackRatio | String | 回调幅度的比例
|
| callbackSpread | String | 回调幅度的价距
|
| activePx | String | 移动止盈止损激活价格
|
| moveTriggerPx | String | 移动止盈止损触发价格
|
| reduceOnly | String | 是否只减仓true或false |
| quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式manual:手动,auto_borrow:自动借币,auto_repay:自动还币 |
| last | String | 下单时的最新成交价 |
| failCode | String | 代表策略触发失败的原因,已撤销和已生效时为"",委托失败时有值,如 51008;
仅适用于单向止盈止损委托、双向止盈止损委托、移动止盈止损委托、计划委托。 |
| algoClOrdId | String | 客户自定义策略订单ID |
| amendPxOnTriggerType | String | 是否启用开仓价止损
仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| attachAlgoOrds | Array of object | 附带止盈止损信息 |
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 |
| > ordId | String | 订单 ID |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| isTradeBorrowMode | String | 是否自动借币
true:自动借币
false:不自动借币
|
GET / 获取未完成策略委托单列表
获取当前账户下未触发的策略委托单列表
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/orders-algo-pending
请求示例
GET /api/v5/trade/orders-algo-pending?ordType=conditional
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False)
# 查询所有未触发的单向止盈止损策略订单
result = tradeAPI.order_algos_list(
ordType="conditional"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| algoId | String | 否 | 策略委托单ID |
| instType | String | 否 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,如 BTC-JPY |
| ordType | String | 是 | 订单类型conditional:单向止盈止损oco:双向止盈止损支持 conditional 和 oco 同时查询,半角逗号分隔,对于其他类型,一次请求仅支持查询一个 |
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的algoId |
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的algoId |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
| algoClOrdId | String | 否 | 客户自定义策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 |
返回结果
{
"code": "0",
"data": [
{
"activePx": "",
"actualPx": "",
"actualSide": "buy",
"actualSz": "0",
"algoClOrdId": "",
"algoId": "681096944655273984",
"amendPxOnTriggerType": "",
"attachAlgoOrds": [],
"cTime": "1708658165774",
"uTime": "1708679675245",
"callbackRatio": "",
"callbackSpread": "",
"ccy": "",
"clOrdId": "",
"closeFraction": "",
"failCode": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"last": "51014.6",
"moveTriggerPx": "",
"ordId": "",
"ordIdList": [],
"ordPx": "-1",
"ordType": "trigger",
"pxLimit": "",
"pxSpread": "",
"pxVar": "",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"state": "live",
"sz": "10",
"szLimit": "",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"timeInterval": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"triggerPx": "100",
"triggerPxType": "last",
"triggerTime": "0",
"linkedOrd":{
"ordId":"98192973880283"
}
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| algoId | String | 策略委托单ID |
| clOrdId | String | 客户自定义订单ID |
| sz | String | 委托数量 |
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% |
| ordType | String | 订单类型 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy:交易货币quote_ccy:计价货币
仅适用于币币市价订单
默认买单为quote_ccy,卖单为base_ccy |
| state | String | 订单状态live:待生效pause:暂停生效 |
|lever |String |杠杆倍数,0.01到125之间的数值 |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
|triggerPx |String |计划委托触发价格 |
| triggerPxType | String |计划委托触发价类型last:最新价格 |
| ordPx | String | 计划委托单的委托价格 |
| actualSz | String | 实际委托量 |
| actualPx | String | 实际委托价 |
| actualSide | String | 实际触发方向tp:止盈sl:止损
仅适用于单向止盈止损委托和双向止盈止损委托 |
| triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| pxVar | String | 价格比例 |
| pxSpread | String | 价距 |
| szLimit | String | 单笔数量 |
| tag | String | 订单标签 |
| pxLimit | String | 挂单限制价 |
| timeInterval | String | 下单间隔 |
| callbackRatio | String | 回调幅度的比例 |
| callbackSpread | String | 回调幅度的价距 |
| activePx | String | 移动止盈止损激活价格 |
| moveTriggerPx | String | 移动止盈止损触发价格 |
| reduceOnly | String | 是否只减仓 |
| quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式 |
| last | String | 下单时的最新成交价 |
| failCode | String | 代表策略触发失败的原因,委托失败时有值,如 51008,对于该接口一直为""。 |
| algoClOrdId | String | 客户自定义策略订单ID |
| amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值1:开启 |
| attachAlgoOrds | Array of object | 附带止盈止损信息 |
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 |
| > ordId | String | 订单 ID |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| isTradeBorrowMode | String | 是否自动借币
true:自动借币
false:不自动借币 |
GET / 获取历史策略委托单列表
获取最近3个月当前账户下所有策略委托单列表
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/trade/orders-algo-history
请求示例
GET /api/v5/trade/orders-algo-history?ordType=conditional&state=effective
import okx.Trade as Trade
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1" # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询 单向止盈止损 历史订单
result = tradeAPI.order_algos_history(
state="effective",
ordType="conditional"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| ordType | String | 是 | 订单类型conditional:单向止盈止损oco:双向止盈止损支持 conditional 和 oco 同时查询,半角逗号分隔,对于其他类型,一次请求仅支持查询一个 |
| state | String | 可选 | 订单状态effective:已生效canceled:已经撤销order_failed:委托失败state和algoId必填且只能填其一 |
| algoId | String | 可选 | 策略委托单ID |
| instType | String | 否 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID,BTC-JPY |
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的algoId |
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的algoId |
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 |
返回结果
{
"code": "0",
"data": [
{
"activePx": "",
"actualPx": "",
"actualSide": "buy",
"actualSz": "0",
"algoClOrdId": "",
"algoId": "681096944655273984",
"amendPxOnTriggerType": "",
"attachAlgoOrds": [],
"cTime": "1708658165774",
"uTime": "1708679675245",
"callbackRatio": "",
"callbackSpread": "",
"ccy": "",
"clOrdId": "",
"closeFraction": "",
"failCode": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"last": "51014.6",
"moveTriggerPx": "",
"ordId": "",
"ordIdList": [],
"ordPx": "-1",
"ordType": "oco",
"pxLimit": "",
"pxSpread": "",
"pxVar": "",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"state": "canceled",
"sz": "10",
"szLimit": "",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"timeInterval": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"triggerPx": "100",
"triggerPxType": "last",
"triggerTime": "",
"linkedOrd":{
"ordId":"98192973880283"
}
}
],
"msg": ""
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| algoId | String | 策略委托单ID |
| clOrdId | String | 客户自定义订单ID |
| sz | String | 委托数量 |
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% |
| ordType | String | 订单类型 |
| side | String | 订单方向 |
| tdMode | String | 交易模式 |
| tgtCcy | String | 币币市价单委托数量sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币
仅适用于币币市价订单
默认买单为quote_ccy,卖单为base_ccy |
| state | String | 订单状态effective:已生效canceled:已撤销 order_failed:委托失败 partially_failed:部分委托失败 |
| lever | String | 杠杆倍数,0.01到125之间的数值 |
| tpTriggerPx | String | 止盈触发价 |
| tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| tpOrdPx | String | 止盈委托价 |
| slTriggerPx | String | 止损触发价 |
| slTriggerPxType | String | 止损触发价类型last:最新价格 |
| slOrdPx | String | 止损委托价 |
| triggerPx | String | 计划委托触发价格 |
| triggerPxType | String | 计划委托委托价格类型last:最新价格index:指数价格mark:标记价格 |
| ordPx | String | 计划委托委托价格 |
| actualSz | String | 实际委托量 |
| actualPx | String | 实际委托价 |
| actualSide | String | 实际触发方向tp:止盈sl:止损
仅适用于单向止盈止损委托和双向止盈止损委托 |
| triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| pxVar | String | 价格比例 |
| pxSpread | String | 价距 |
| szLimit | String | 单笔数量 |
| pxLimit | String | 挂单限制价 |
| tag | String | 订单标签 |
| timeInterval | String | 下单间隔 |
| callbackRatio | String | 回调幅度的比例 |
| callbackSpread | String | 回调幅度的价距 |
| activePx | String | 移动止盈止损激活价格 |
| moveTriggerPx | String | 移动止盈止损触发价格 |
| reduceOnly | String | 是否只减仓true或false |
| quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式 |
| last | String | 下单时的最新成交价 |
| failCode | String | 代表策略触发失败的原因,已撤销和已生效时为"",委托失败时有值,如 51008;
仅适用于单向止盈止损委托、双向止盈止损委托、移动止盈止损委托、计划委托。 |
| algoClOrdId | String | 客户自定义策略订单ID |
| amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| attachAlgoOrds | Array of object | 附带止盈止损信息 |
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 |
| > ordId | String | 订单 ID |
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| isTradeBorrowMode | String | 是否自动借币
true:自动借币
false:不自动借币 |
WS / 策略委托订单频道
获取策略委托订单,首次订阅不推送,只有当下单、撤单等事件触发时,推送数据
服务地址
/ws/v5/business (需要登录)
请求示例:单个
{
"op": "subscribe",
"args": [{
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-JPY"
}]
}
请求示例
{
"op": "subscribe",
"args": [{
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名orders-algo |
| > instType | String | 是 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
成功返回示例:单个
{
"event": "subscribe",
"arg": {
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders-algo\", \"instType\" : \"FUTURES\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instType | String | 是 | 产品类型SPOT:币币ANY:全部 |
| > instId | String | 否 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例:单个
{
"arg": {
"channel": "orders-algo",
"uid": "77982378738415879",
"instType": "SPOT",
"instId": "BTC-JPY"
},
"data": [{
"actualPx": "0",
"actualSide": "",
"actualSz": "0",
"algoClOrdId": "",
"algoId": "581878926302093312",
"attachAlgoOrds": [],
"amendResult": "",
"cTime": "1685002746818",
"uTime": "1708679675245",
"clOrdId": "",
"failCode": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"last": "26174.8",
"notionalJPY": "11.0",
"ordId": "",
"ordIdList": [],
"ordType": "conditional",
"reqId": "",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"state": "live",
"sz": "11",
"tag": "",
"tdMode": "cash",
"tgtCcy": "quote_ccy",
"tpOrdPx": "-1",
"tpTriggerPx": "1",
"tpTriggerPxType": "last",
"triggerTime": "",
"amendPxOnTriggerType": "0",
"linkedOrd":{
"ordId":"98192973880283"
}
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > uid | String | 用户标识 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID |
| > ordId | String | 最新一笔订单ID,与策略委托订单关联的订单ID,即将废弃。 |
| > ordIdList | Array | 订单ID列表,当止盈止损存在市价拆单时,会有多个。 |
| > algoId | String | 策略委托单ID |
| > clOrdId | String | 客户自定义订单ID |
| > sz | String | 委托数量,币币 以币为单位; |
| > ordType | String | 订单类型conditional:单向止盈止损 oco:双向止盈止损 |
| > side | String | 订单方向,buy sell |
| > tdMode | String | 交易模式 非保证金模式 cash:现金 |
| > tgtCcy | String | 币币市价单委托数量sz的单位base_ccy:交易货币quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy |
| > state | String | 订单状态 live:待生效effective:已生效canceled:已撤销order_failed:委托失败partially_failed:部分委托失败partially_effective: 部分生效 |
| > tpTriggerPx | String | 止盈触发价 |
| > tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| > tpOrdPx | String | 止盈委托价,委托价格为-1时,执行市价止盈 |
| > slTriggerPx | String | 止损触发价 |
| > slTriggerPxType | String | 止损触发价类型last:最新价格 |
| > slOrdPx | String | 止损委托价委托价格为-1时,执行市价止损 |
| > last | String | 下单时的最新成交价 |
| > actualSz | String | 实际委托量 |
| > actualPx | String | 实际委价 |
| > tag | String | 订单标签 |
| > notionalJPY | String | 委托单预估日元价值 |
| > actualSide | String | 实际触发方向sl:止损tp:止盈仅适用于 单向止盈止损委托和双向止盈止损委托 |
| > triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > failCode | String | 代表策略触发失败的原因,已撤销和已生效时为"",委托失败时有值,如 51008; |
| > algoClOrdId | String | 客户自定义策略订单ID |
| > reqId | String | 修改订单时使用的request ID,如果没有修改,该字段为"" |
| > amendResult | String | 修改订单的结果-1:失败0:成功 |
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单0:不开启,默认值 1:开启 |
| > attachAlgoOrds | Array of object | 附带止盈止损信息 适用于 现货 |
| >> attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 |
| >> tpTriggerPx | String | 止盈触发价,如果填写此参数,必须填写止盈委托价 |
| >> tpTriggerPxType | String | 止盈触发价类型last:最新价格 |
| >> tpOrdPx | String | 止盈委托价,如果填写此参数,必须填写止盈触发价委托价格为 -1时,执行市价止盈 |
| >> slTriggerPx | String | 止损触发价,如果填写此参数,必须填写止损委托价 |
| >> slTriggerPxType | String | 止损触发价类型last:最新价格 |
| >> slOrdPx | String | 止损委托价,如果填写此参数,必须填写止损触发价委托价格为 -1时,执行市价止损 |
| > linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 |
| >> ordId | String | 订单 ID |
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 |
行情数据
行情数据功能模块下的API接口不需要身份验证。
GET / 获取所有产品行情信息
获取产品行情信息
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/tickers
请求示例
GET /api/v5/market/tickers?instType=SPOT
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取所有产品行情信息
result = marketDataAPI.get_tickers(
instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"instType":"SPOT",
"instId":"PEPE-JPY",
"last":"0.003",
"lastSz":"0",
"askPx":"",
"askSz":"0",
"bidPx":"0.003",
"bidSz":"70998",
"open24h":"0.003",
"high24h":"0.003",
"low24h":"0.003",
"volCcy24h":"0",
"vol24h":"0",
"ts":"1747102886012",
"sodUtc0":"0.003"
},
{
"instType":"SPOT",
"instId":"XRP-JPY",
"last":"481",
"lastSz":"1",
"askPx":"",
"askSz":"0",
"bidPx":"481",
"bidSz":"2",
"open24h":"481",
"high24h":"481",
"low24h":"481",
"volCcy24h":"0",
"vol24h":"0",
"ts":"1747102920011",
"sodUtc0":"481",
"sodUtc8":"481"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| last | String | 最新成交价 |
| lastSz | String | 最新成交的数量,0 代表没有成交量 |
| askPx | String | 卖一价 |
| askSz | String | 卖一价的挂单数数量 |
| bidPx | String | 买一价 |
| bidSz | String | 买一价的挂单数量 |
| open24h | String | 24小时开盘价 |
| high24h | String | 24小时最高价 |
| low24h | String | 24小时最低价 |
| volCcy24h | String | 24小时成交量,以币为单位。如果是 币币,数值为计价货币的数量。 |
| vol24h | String | 24小时成交量,以张为单位。如果是 币币,数值为交易货币的数量。 |
| sodUtc0 | String | UTC 0 时开盘价 |
| sodUtc8 | String | UTC+8 时开盘价 |
| ts | String | ticker数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
GET / 获取单个产品行情信息
获取产品行情信息
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/ticker
请求示例
GET /api/v5/market/ticker?instId=BTC-JPY
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取单个产品行情信息
result = marketDataAPI.get_ticker(
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"instType":"SPOT",
"instId":"BTC-JPY",
"last":"480",
"lastSz":"0.01",
"askPx":"",
"askSz":"0",
"bidPx":"480",
"bidSz":"773.9599",
"open24h":"480",
"high24h":"480",
"low24h":"480",
"volCcy24h":"0",
"vol24h":"0",
"ts":"1747112880014",
"sodUtc0":"480",
"sodUtc8":"480"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品ID |
| last | String | 最新成交价 |
| lastSz | String | 最新成交的数量,0 代表没有成交量 |
| askPx | String | 卖一价 |
| askSz | String | 卖一价对应的数量 |
| bidPx | String | 买一价 |
| bidSz | String | 买一价对应的数量 |
| open24h | String | 24小时开盘价 |
| high24h | String | 24小时最高价 |
| low24h | String | 24小时最低价 |
| volCcy24h | String | 24小时成交量,以币为单位如果是 币币,数值为计价货币的数量。 |
| vol24h | String | 24小时成交量,以张为单位如果是 币币,数值为交易货币的数量。 |
| sodUtc0 | String | UTC+0 时开盘价 |
| sodUtc8 | String | UTC+8 时开盘价 |
| ts | String | ticker数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
GET / 获取产品深度
获取产品深度列表
限速:40次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/books
请求示例
GET /api/v5/market/books?instId=BTC-JPY
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取产品深度
result = marketDataAPI.get_orderbook(
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| sz | String | 否 | 深度档位数量,最大值可传400,即买卖深度共800条 不填写此参数,默认返回 1档深度数据 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"asks": [
[
"41006.8",
"0.60038921",
"0",
"1"
]
],
"bids": [
[
"41006.3",
"0.30178218",
"0",
"2"
]
],
"ts": "1629966436396"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| asks | Array |
卖方深度 |
| bids | Array |
买方深度 |
| ts | String | 深度产生的时间 |
GET / 获取产品完整深度
获取产品深度列表。数据每秒更新一次。
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/books-full
请求示例
GET /api/v5/market/books-full?instId=BTC-JPY&sz=20
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| sz | String | 否 | 深度档位数量,最大值可传5000,即买卖深度共10000条 不填写此参数,默认返回 1档深度数据 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"asks": [
[
"41006.8",
"0.60038921",
"1"
]
],
"bids": [
[
"41006.3",
"0.30178218",
"2"
]
],
"ts": "1629966436396"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| asks | Array |
卖方深度 |
| bids | Array |
买方深度 |
| ts | String | 深度产生的时间 |
GET / 获取交易产品K线数据
获取K线数据。K线数据按请求的粒度分组返回,K线数据每个粒度最多可获取最近1,440条。
限速:40次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/candles
请求示例
GET /api/v5/market/candles?instId=BTC-JPY
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取交易产品K线数据
result = marketDataAPI.get_candlesticks(
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| bar | String | 否 | 时间粒度,默认值1m如 [1m/3m/5m/15m/30m/1H/2H/4H] 日本时间开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC时间开盘价k线:[/6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc] |
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的ts |
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的ts, 单独使用时,会返回最新的数据。 |
| limit | String | 否 | 分页返回的结果集数量,最大为300,不填默认返回100条 |
返回结果
{
"code":"0",
"msg":"",
"data":[
[
"1597026383085",
"3.721",
"3.743",
"3.677",
"3.708",
"8422410",
"22698348.04828491",
"12698348.04828491",
"0"
],
[
"1597026383085",
"3.731",
"3.799",
"3.494",
"3.72",
"24912403",
"67632347.24399722",
"37632347.24399722",
"1"
]
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| o | String | 开盘价格 |
| h | String | 最高价格 |
| l | String | 最低价格 |
| c | String | 收盘价格 |
| vol | String | 交易量,以张为单位如果是 币币,数值为交易货币的数量。 |
| volCcy | String | 交易量,以币为单位如果是 币币,数值为计价货币的数量。 |
| volCcyQuote | String | 交易量,以计价货币为单位 如 BTC-JPY,单位是JPY。 |
| confirm | String | K线状态0:K线未完结1:K线已完结 |
GET / 获取交易产品历史K线数据
获取最近几年的历史k线数据(1s k线支持查询最近3个月的数据)
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/history-candles
请求示例
GET /api/v5/market/history-candles?instId=BTC-JPY
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取交易产品历史K线数据
result = marketDataAPI.get_history_candlesticks(
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的ts |
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的ts, 单独使用时,会返回最新的数据。 |
| bar | String | 否 | 时间粒度,默认值1m如 [1s/1m/3m/5m/15m/30m/1H/2H/4H] 日本时间开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC时间开盘价k线:[6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc] |
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 |
返回结果
{
"code":"0",
"msg":"",
"data":[
[
"1597026383085",
"3.721",
"3.743",
"3.677",
"3.708",
"8422410",
"22698348.04828491",
"12698348.04828491",
"1"
],
[
"1597026383085",
"3.731",
"3.799",
"3.494",
"3.72",
"24912403",
"67632347.24399722",
"37632347.24399722",
"1"
]
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| o | String | 开盘价格 |
| h | String | 最高价格 |
| l | String | 最低价格 |
| c | String | 收盘价格 |
| vol | String | 交易量,以张为单位如果是 币币,数值为交易货币的数量。 |
| volCcy | String | 交易量,以币为单位如果是 币币,数值为计价货币的数量。 |
| volCcyQuote | String | 交易量,以计价货币为单位 如 BTC-JPY,单位是JPY |
| confirm | String | K线状态0:K线未完结1:K线已完结 |
GET / 获取交易产品公共成交数据
查询市场上的成交信息数据
限速:100次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/trades
请求示例
GET /api/v5/market/trades?instId=BTC-JPY
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取交易产品公共成交数据
result = marketDataAPI.get_trades(
instId="BTC-JPY"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
| limit | String | 否 | 分页返回的结果集数量,最大为500,不填默认返回100条 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"instId": "BTC-JPY",
"side": "sell",
"sz": "0.00001",
"px": "29963.2",
"tradeId": "242720720",
"ts": "1654161646974"
},
{
"instId": "BTC-JPY",
"side": "sell",
"sz": "0.00001",
"px": "29964.1",
"tradeId": "242720719",
"ts": "1654161641568"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instId | String | 产品ID |
| tradeId | String | 成交ID |
| px | String | 成交价格 |
| sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 |
| side | String | 成交方向buy:买sell:卖 |
| ts | String | 成交时间,Unix时间戳的毫秒数格式, 如1597026383085 |
GET / 获取平台24小时总成交量
24小时成交量滚动计算
限速:2次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/platform-24-volume
请求示例
GET /api/v5/market/platform-24-volume
import okx.MarketData as MarketData
marketDataAPI = MarketData.MarketAPI()
# 获取平台24小时总成交量
result = marketDataAPI.get_volume()
print(result)
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"volJpy": "34462818865189",
"ts": "1657856040389"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| volJpy | String | 订单簿交易近24小时总成交量,以日元为单位 |
| ts | String | 接口返回数据时间 |
GET / 集合竞价信息
获取集合竞价相关信息
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/call-auction-details
请求示例
GET /api/v5/market/call-auction-details?instId=BTC-JPY
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-JPY |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"instId": "BTC-JPY",
"unmatchedSz": "9988764",
"eqPx": "0.6",
"matchedSz": "44978",
"state": "continuous_trading",
"auctionEndTime": "1726542000000",
"ts": "1726542000007"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instId | String | 产品ID |
| eqPx | String | 均衡价格 |
| matchedSz | String | 买卖双边的匹配数量,单位为交易货币 |
| unmatchedSz | String | 未匹配数量 |
| auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| state | String | 交易状态call_auction:集合竞价continuous_trading:连续交易 |
| ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
WS / 行情频道
获取产品的最新成交价、买一价、卖一价和24小时交易量等信息。
最快100ms推送一次,没有触发事件时不推送,触发推送的事件有:成交、买一卖一发生变动。
URL Path
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名tickers |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"tickers\", \"instId\" : \"LTC-JPY-200327\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "tickers",
"instId": "BTC-JPY"
},
"data": [{
"instType": "SPOT",
"instId": "BTC-JPY",
"last": "9999.99",
"lastSz": "0.1",
"askPx": "9999.99",
"askSz": "11",
"bidPx": "8888.88",
"bidSz": "5",
"open24h": "9000",
"high24h": "10000",
"low24h": "8888.88",
"volCcy24h": "2222",
"vol24h": "2222",
"sodUtc0": "2222",
"sodUtc8": "2222",
"ts": "1597026383085"
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID |
| > last | String | 最新成交价 |
| > lastSz | String | 最新成交的数量,0 代表没有成交量 |
| > askPx | String | 卖一价 |
| > askSz | String | 卖一价对应的量 |
| > bidPx | String | 买一价 |
| > bidSz | String | 买一价对应的数量 |
| > open24h | String | 24小时开盘价 |
| > high24h | String | 24小时最高价 |
| > low24h | String | 24小时最低价 |
| > volCcy24h | String | 24小时成交量,以计价货币为单位 |
| > vol24h | String | 24小时成交量,以交易货币为单位 |
| > sodUtc0 | String | UTC+0 时开盘价 |
| > sodUtc8 | String | UTC+8 时开盘价 |
| > ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
WS / K线频道
获取K线数据,推送频率最快是间隔1秒推送一次数据。
URL Path
/ws/v5/business
请求示例
{
"op": "subscribe",
"args": [{
"channel": "candle1D",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名candle3Mcandle1Mcandle1Wcandle1Dcandle2Dcandle3Dcandle5Dcandle12Hcandle6Hcandle4Hcandle2Hcandle1Hcandle30mcandle15mcandle5mcandle3mcandle1mcandle1scandle3Mutccandle1Mutccandle1Wutccandle1Dutccandle2Dutccandle3Dutccandle5Dutccandle12Hutccandle6Hutc |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "candle1D",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"candle1D\", \"instId\" : \"BTC-USD-191227\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "candle1D",
"instId": "BTC-JPY"
},
"data": [
[
"1629993600000",
"42500",
"48199.9",
"41006.1",
"41006.1",
"3587.41204591",
"166741046.22583129",
"166741046.22583129",
"0"
]
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > o | String | 开盘价格 |
| > h | String | 最高价格 |
| > l | String | 最低价格 |
| > c | String | 收盘价格 |
| > vol | String | 交易量,以交易货币为单位 |
| > volCcy | String | 交易量,以计价货币为单位 |
| > volCcyQuote | String | 交易量,以计价货币为单位 如 BTC-JPY单位均是JPY。 |
| > confirm | String | K线状态0:K线未完结1:K线已完结 |
WS / 交易频道
获取最近的成交数据,有成交数据就推送,每次推送可能聚合多条成交数据。
根据每个taker订单的不同成交价格推送消息,并使用count字段表示聚合的订单匹配数量。
URL Path
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [{
"channel": "trades",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名trades |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "trades",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"trades\", \"instId\" : \"BTC-JPY\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "trades",
"instId": "BTC-JPY"
},
"data": [
{
"instId": "BTC-JPY",
"tradeId": "130639474",
"px": "42219.9",
"sz": "0.12060306",
"side": "buy",
"ts": "1630048897897",
"count": "3"
}
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instId | String | 产品ID,如 BTC-JPY |
| > tradeId | String | 聚合的多笔交易中最新一笔交易的成交ID |
| > px | String | 成交价格 |
| > sz | String | 成交数量 |
| > side | String | 成交方向buysell |
| > ts | String | 成交时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > count | String | 聚合的订单匹配数量 |
WS / 全部交易频道
获取最近的成交数据,有成交数据就推送,每次推送仅包含一条成交数据。
URL Path
/ws/v5/business
请求示例
{
"op": "subscribe",
"args": [{
"channel": "trades-all",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名trades-all |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "trades-all",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"trades-all\", \"instId\" : \"BTC-JPY\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "trades-all",
"instId": "BTC-JPY"
},
"data": [
{
"instId": "BTC-JPY",
"tradeId": "130639474",
"px": "42219.9",
"sz": "0.12060306",
"side": "buy",
"ts": "1630048897897"
}
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instId | String | 产品ID,如 BTC-JPY |
| > tradeId | String | 成交ID |
| > px | String | 成交价格 |
| > sz | String | 成交数量 |
| > side | String | 成交方向buysell |
| > ts | String | 成交时间,Unix时间戳的毫秒数格式,如 1597026383085 |
WS / 深度频道
获取深度数据,books是400档频道,books5是5档频道, bbo-tbt是先1档后实时推送的频道,books-l2-tbt是先400档后实时推送的频道,books50-l2-tbt是先50档后实时推的频道;
books首次推400档快照数据,以后增量推送,每100毫秒推送一次变化的数据books5首次推5档快照数据,以后定量推送,每100毫秒当5档快照数据有变化推送一次5档数据bbo-tbt首次推1档快照数据,以后定量推送,每10毫秒当1档快照数据有变化推送一次1档数据books-l2-tbt首次推400档快照数据,以后增量推送,每10毫秒推送一次变化的数据books50-l2-tbt首次推50档快照数据,以后增量推送,每10毫秒推送一次变化的数据- 单个连接、交易产品维度,深度频道的推送顺序固定为:bbo-tbt -> books-l2-tbt -> books50-l2-tbt -> books -> books5。
- 在相同连接下,用户将无法为相同交易产品同时订阅
books-l2-tbt以及books50-l2-tbt/books频道- 更多细节,请参阅更新日志 2024-07-17
身份认证参考登录功能
服务地址
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [{
"channel": "books",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名booksbooks5bbo-tbtbooks-l2-tbtbooks50-l2-tbt |
| > instId | String | 是 | 产品ID |
返回示例
{
"event": "subscribe",
"arg": {
"channel": "books",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"books\", \"instId\" : \"BTC-JPY\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| msg | String | 否 | 错误消息 |
| code | String | 否 | 错误码 |
| connId | String | 是 | WebSocket连接ID |
推送示例 :全量
{
"arg": {
"channel": "books",
"instId": "BTC-JPY"
},
"action": "snapshot",
"data": [{
"asks": [
["8476.98", "415", "0", "13"],
["8477", "7", "0", "2"],
["8477.34", "85", "0", "1"],
["8477.56", "1", "0", "1"],
["8505.84", "8", "0", "1"],
["8506.37", "85", "0", "1"],
["8506.49", "2", "0", "1"],
["8506.96", "100", "0", "2"]
],
"bids": [
["8476.97", "256", "0", "12"],
["8475.55", "101", "0", "1"],
["8475.54", "100", "0", "1"],
["8475.3", "1", "0", "1"],
["8447.32", "6", "0", "1"],
["8447.02", "246", "0", "1"],
["8446.83", "24", "0", "1"],
["8446", "95", "0", "3"]
],
"ts": "1597026383085",
"checksum": -855196043,
"prevSeqId": -1,
"seqId": 123456
}]
}
推送示例:增量
{
"arg": {
"channel": "books",
"instId": "BTC-JPY"
},
"action": "update",
"data": [{
"asks": [
["8476.98", "415", "0", "13"],
["8477", "7", "0", "2"],
["8477.34", "85", "0", "1"],
["8477.56", "1", "0", "1"],
["8505.84", "8", "0", "1"],
["8506.37", "85", "0", "1"],
["8506.49", "2", "0", "1"],
["8506.96", "100", "0", "2"]
],
"bids": [
["8476.97", "256", "0", "12"],
["8475.55", "101", "0", "1"],
["8475.54", "100", "0", "1"],
["8475.3", "1", "0", "1"],
["8447.32", "6", "0", "1"],
["8447.02", "246", "0", "1"],
["8446.83", "24", "0", "1"],
["8446", "95", "0", "3"]
],
"ts": "1597026383085",
"checksum": -855196043,
"prevSeqId": 123456,
"seqId": 123457
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| action | String | 推送数据动作,增量推送数据还是全量推送数据snapshot:全量 update:增量 |
| data | Array | 订阅的数据 |
| > asks | Array | 卖方深度 |
| > bids | Array | 买方深度 |
| > ts | String | 数据更新时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
| > checksum | Integer | 检验和 (下方注解) |
| > prevSeqId | Integer | 上一个推送的序列号。仅适用 books,books-l2-tbt,books50-l2-tbt |
| > seqId | Integer | 推送的序列号 (下方注解) |
序列号
seqId是交易所行情的一个序号。如果用户通过多个websocket连接同一频道,收到的序列号会是相同的。每个instId对应一套。用户可以使用在增量推送频道的prevSeqId和seqId来构建消息序列。这将允许用户检测数据包丢失和消息的排序。正常场景下seqId的值大于prevSeqId。新消息中的prevSeqId与上一条消息的seqId匹配。最小序列号值为0,除了快照消息的prevSeqId为-1。
异常情况:
1. 如果一段时间内没有深度更新,OKJ将发一条消息'asks': [], 'bids': []以通知用户连接是正常的。推送的seqId跟上一条信息的一样,prevSeqId等于seqId。
2. 序列号可能由于维护而重置,在这种情况下,用户将收到一条seqId小于prevSeqId的增量消息。随后的消息将遵循常规的排序规则。
示例
- 快照推送:
prevSeqId = -1,seqId = 10 - 增量推送1(正常更新):
prevSeqId = 10,seqId = 15 - 增量推送2(无更新):
prevSeqId = 15,seqId = 15 - 增量推送3(序列重置):
prevSeqId = 15,seqId = 3 - 增量推送4(正常更新):
prevSeqId = 3,seqId = 5
Checksum机制
此机制可以帮助用户校验深度数据的准确性。
深度合并
用户订阅增量推送(如:books400档)深度频道成功后,首先获取初始全量深度数据,当获取到增量推送数据后,更新本地全量深度数据。
- 如果有相同价格,则比较数量;数量为0删除此深度,数量有变化则替换此数据。
- 如果没有相同价格,则按照价格优劣排序(bid为价格降序,ask为价格升序),将深度信息插入到全量数据中
计算校验和
先用深度合并后前25档bids和asks组成一个字符串(其中ask和bid中的价格和数量以冒号连接),再计算其crc32值(32位有符号整型)。
计算校验和
1.bid和ask超过25档
合并后全量深度数据(在此仅展示2档数据,实际应截取25档数据):
{
"bids": [
["3366.1", "7", "0", "3"],
["3366", "6", "3", "4"]
],
"asks": [
["3366.8", "9", "10", "3"],
["3368", "8", "3", "4"]
]
}
校验字符串:
"3366.1:7:3366.8:9:3366:6:3368:8"
2.bid或ask不足25档
合并后全量深度数据:
{
"bids": [
["3366.1", "7", "0", "3"]
],
"asks": [
["3366.8", "9", "10", "3"],
["3368", "8", "3", "4"],
["3372", "8", "3", "4"]
]
}
校验字符串:
"3366.1:7:3366.8:9:3368:8:3372:8"
- 当bid和ask深度数据超过25档时,截取各自25档数据,要校验的字符串按照bid、ask深度数据交替方式连接。
如:bid[价格:数量]:ask[价格:数量]:bid[价格:数量]:ask[价格:数量]... - bid或ask深度数据不足25档时,直接忽略缺失的深度。
如:bid[价格:数量]:ask[价格:数量]:asks[价格:数量]:asks[价格:数量]...
bbo-tbt 频道推送示例
{
"arg": {
"channel": "bbo-tbt",
"instId": "BCH-JPY"
},
"data": [
{
"asks": [
[
"111.06","55154","0","2"
]
],
"bids": [
[
"111.05","57745","0","2"
]
],
"ts": "1670324386802",
"seqId": 363996337
}
]
}
books5 频道推送示例
{
"arg": {
"channel": "books5",
"instId": "BCH-JPY"
},
"data": [
{
"asks": [
["111.06","55154","0","2"],
["111.07","53276","0","2"],
["111.08","72435","0","2"],
["111.09","70312","0","2"],
["111.1","67272","0","2"]],
"bids": [
["111.05","57745","0","2"],
["111.04","57109","0","2"],
["111.03","69563","0","2"],
["111.02","71248","0","2"],
["111.01","65090","0","2"]],
"instId": "BCH-JPY",
"ts": "1670324386802",
"seqId": 363996337
}
]
}
WS / 集合竞价信息频道
获取集合竞价相关信息
URL Path
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [{
"channel": "call-auction-details",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作,subscribe unsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名call-auction-details |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "call-auction-details",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"call-auction-details\", \"instId\" : \"BTC-JPY\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件,subscribe unsubscribe error |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "call-auction-details",
"instId": "BTC-JPY"
},
"data": [
{
"instId": "BTC-JPY",
"unmatchedSz": "9988764",
"eqPx": "0.6",
"matchedSz": "44978",
"state": "continuous_trading",
"auctionEndTime": "1726542000000",
"ts": "1726542000007"
}
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instId | String | 产品ID |
| > eqPx | String | 均衡价格 |
| > matchedSz | String | 买卖双边的匹配数量,单位为交易货币 |
| > unmatchedSz | String | 未匹配数量 |
| > auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085 |
| > state | String | 交易状态call_auction:集合竞价continuous_trading:连续交易 |
| > ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 |
资金账户
资金功能模块下的API接口需要身份验证。
REST API
资金账户信息
获取资金账户所有资产列表,查询各币种的余额、冻结和可用等信息。
限速:6次/s
限速规则:UserID
HTTP请求
GET /api/v5/asset/wallet
请求示例
GET /api/v5/asset/wallet
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取资金账户余额
result = fundingAPI.get_balance()
print(result)
返回结果
[
{
"available":"37.11827078",
"balance":"37.11827078",
"currency":"ETH",
"hold":"0"
},
{
"available":"0",
"balance":"0",
"currency":"BTC",
"hold":"0"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 币种,如 BTC |
| balance | String | 余额 |
| hold | String | 冻结(不可用) |
| available | String | 可用余额 |
单一币种账户信息
获取资金账户单个币种的余额、冻结和可用等信息。
限速:6次/s
限速规则:UserID
HTTP请求
GET /api/v5/asset/wallet/<currency>
请求示例
GET /api/v5/asset/wallet/XMR
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取资金账户余额
result = fundingAPI.get_balance_by_currency(
currency="XMR"
)
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 是 | 币种 |
返回结果
[{
"balance":"300.00000000",
"available":"300.00000000",
"hold":"0.00000000"
}]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| balance | String | 余额 |
| hold | String | 冻结(不可用) |
| available | String | 可用余额 |
获取币种列表
获取平台所有币种列表。并非所有币种都可被用于交易。在ISO 4217标准中未被定义的币种代码可能使用的是自定义代码。
限速:6次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/currencies
请求示例
GET /api/v5/asset/currencies
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取币种列表
result = fundingAPI.get_currencies()
print(result)
返回结果
[
{
"can_deposit":"1",
"can_withdraw":"1",
"currency":"PLT",
"chain":"Palette(pPLT)",
"min_withdrawal":"0.1",
"name":""
},
{
"can_deposit":"1",
"can_withdraw":"1",
"currency":"PLT",
"chain":"Ethereum(ePLT)",
"min_withdrawal":"0.1",
"name":""
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 币种名称,如 BTC |
| chain | String | 提币币种链信息 |
| name | String | 币种中文名称,不显示则无对应名称 |
| can_deposit | String | 是否可充值,0表示不可充值,1表示可以充值 |
| can_withdraw | Boolean | 是否可提币,0表示不可提币,1表示可以提币 |
| min_withdrawal | Boolean | 币种最小提币量 |
获取账户资产估值
按照btc或法币计价单位,获取账户总资产的估值。
限速:1次/30s
限速规则:UserID
HTTP请求
GET /api/v5/asset/asset-valuation
请求示例
GET /api/v5/asset/asset-valuation
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取账户资产估值
result = fundingAPI.get_asset_valuation()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| account_type | String | 否 | 获取某一个业务线资产估值,默认为0,查询总资产。 0.预估总资产 18.交易账户 6.资金账户 |
返回结果
{
"account_type": "0",
"balance": 0.00878181,
"valuation_currency": "JPY",
"timestamp": "2019-12-09T10:28:23.002Z"
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| valuation_currency | String | 按照JPY为单位的估值 |
| balance | String | 预估资产 |
| timestamp | String | 数据返回时间 |
| account_type | String | 账户类型 |
资金划转
OKCoinJapan站内在资金账户、交易账户之间进行资金划转。
限速:1次/2s
限速规则:UserID + Currency
HTTP 请求
POST /api/v5/asset/transfer
请求示例
# 从资金账户划转1.5btc到交易账户
POST /api/v5/asset/transfer
body
{
"currency":"btc",
"amt":"1.5",
"from":"6",
"to":"18"
}
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 资金划转
result = fundingAPI.transfer(
currency="BTC",
amount="1.5",
from_="6",
to="18"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 否 | 币种,如jpy |
| amount | String | 是 | 划转数量 |
| from | String | 是 | 转出账户6:资金账户18:交易账户 |
| to | String | 是 | 转入账户6:资金账户18:交易账户 |
返回结果
{
"transfer_id": "754147",
"currency": "LTC",
"from": "6",
"amount": "0.1",
"to": "1",
"result": true
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| transfer_id | String | 划转ID |
| currency | String | 划转币种 |
| from | String | 转出账户 |
| amount | String | 划转量 |
| to | String | 转入账户 |
| result | String | 划转结果。若是划转失败,将给出错误码提示 |
账单流水查询
查询资金账户账单流水,可查询最近一个月的数据
限速:20次/2s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/ledger
请求示例
GET /api/v5/asset/ledger?type=2¤cy=btc&after=9260348&limit=10
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取资金流水
result = fundingAPI.get_ledger_record()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 否 | 币种,如BTC ,不填时返回所有的账单流水 |
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的ledger_id等 |
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的ledger_id等 |
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 |
| type | String | 否 | 1: 充值 2: 提现 13: 撤销提现 130: 转入资金 131: 资金账户转出 |
返回结果
[
{
"amount":"-0.00100941",
"balance":"0",
"currency":"BTC",
"fee":"0",
"ledger_id":"9260348",
"timestamp":"2018-10-19T01:12:21.000Z",
"type":"To trading account"
},
{
"amount":"0.00051843",
"balance":"0.00100941",
"currency":"BTC",
"fee":"0",
"ledger_id":"8987285",
"timestamp":"2018-10-12T11:01:14.000Z",
"type":"Get from activity"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ledger_id | String | 账单ID |
| currency | String | 币种 |
| balance | String | 余额 |
| amount | String | 变动数量 |
| type | String | 账单类型 |
| fee | String | 手续费 |
| timestamp | String | 账单创建时间 |
获取用户银行卡列表
获取用户绑定的所有银行卡列表
限速:6次/s
限速规则:UserID
HTTP请求
GET /api/v5/asset/bank-card-list
请求示例
GET /api/v5/asset/bank-card-list
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取用户银行卡列表
result = fundingAPI.get_bank_card()
print(result)
返回结果
[
{
"bank_card_id": "1",
"card_number": "123456",
"bank_name": "PayPay銀行",
"branch_name": "はやぶさ支店",
"available": true
},
{
"bank_card_id": "2",
"card_number": "123457",
"bank_name": "PayPay銀行",
"branch_name": "はやぶさ支店",
"available": true
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| bank_card_id | String | 银行卡id |
| card_number | String | 银行卡号 |
| bank_name | String | 银行名称 |
| branch_name | String | 支店名称 |
| available | Boolean | 是否可用,false不可用,true可用 |
提现
日元提现API接口,默认将资金提现至最近一笔提现订单的银行卡,若此卡不可用,则提现到最新添加或修改的银行卡。
限速:1次/120s
限速规则:UserID
HTTP请求
POST /api/v5/asset/jpywithdrawal
请求示例
POST /api/v5/asset/jpywithdrawal
body
{
"amount":"10000",
"trade_pwd":"123456",
"bank_card_id":"1"
}
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 提现
result = fundingAPI.fiat_withdraw(
amount="10000",
trade_pwd="123456",
bank_card_id="1"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| amount | String | 是 | 提现金额 |
| trade_pwd | String | 是 | 交易密码 |
| bank_card_id | String | 否 | 提现银行卡id |
返回结果
{
"amount":"10000",
"withdraw_id":2412031209191611,
"result":true
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| amount | String | 提现金额 |
| withdraw_id | String | 提现申请ID |
| result | String | 提现申请结果。若是提现申请失败,将给出错误码提示 |
查询提现记录
查询日元的提现记录。
限速:6次/1s
限速规则:UserID
HTTP请求
GET /api/v5/asset/jpyWithdrawal/history
请求示例
GET /api/v5/asset/jpyWithdrawal/history
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 提现记录查询
result = fundingAPI.fiat_withdraw_history()
print(result)
返回结果
[
{
"amount":"10000",
"withdraw_id":2412031209191611,
"fee":"400",
"status":"1",
"timestamp":"2018-09-30T02:49:29.001Z"
},
{
"amount":"19800",
"withdraw_id":2412031158328186,
"fee":"400",
"status":"4",
"timestamp":"2018-09-28T01:09:19.022Z"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| amount | String | 提现金额 |
| withdraw_id | String | 提现申请ID |
| fee | String | 提现手续费 |
| status | String | 提现状态1:待处理2:提现中4:提现成功5:撤销中6:已撤销7:不可提现8:已返还9:提现失败 |
| timestamp | String | 时间戳 |
解释说明
最多返回最近100条记录。
查询充值记录
查询日元的充值记录。
限速:6次/s
限速规则:UserID
HTTP请求
GET /api/v5/asset/jpyDeposit/history
请求示例
GET /api/v5/asset/jpyDeposit/history
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 查询日元的充值记录
result = fundingAPI.fiat_deposit_history()
print(result)
返回结果
[
{
"amount":"10000",
"status":"1",
"timestamp":"2019-11-30T02:39:29.012Z"
},
{
"amount":"7800",
"status":"4",
"timestamp":"2019-10-21T02:04:49.122Z"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| amount | String | 充值金额 |
| status | String | 充值状态 1:受理中 2:确认中 4:充值成功 8:已实施退款处理 |
| timestamp | String | 时间戳 |
解释说明
最多返回最近100条记录。
提币
支持资金账户资产提币。普通子账户不支持提币。
限速:1次/10s
限速规则:UserID
HTTP请求
POST /api/v5/asset/withdrawal
请求示例
POST /api/v5/asset/withdrawal
body
{
"amount":"1",
"fee":"0.0005",
"trade_pwd":"123456",
"currency":"BTC",
"to_address":"17DKe3kkkkiiiiTvAKKi2vMPbm1Bz3CMKw",
"usage_agreement":"1",
"reason":"2"
}
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 提币
result = fundingAPI.coin_withdraw(
currency="PEPE",
amount="100",
destination="-1",
to_address="0x730dfca513a58be208fbe27c2dc00fa423626ebf",
trade_pwd="123456",
fee="0.5",
reason="1",
usage_agreement="1"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 是 | 币种 |
| amount | String | 是 | 数量 |
| destination | String | 是 | 提币到: 5:OKCoinJapan -1:数字货币地址 |
| to_address | String | 是 | 已经在地址簿中的通过认证的数字货币地址或邮箱。某些数字货币地址格式为: '地址:标签',例:'ARDOR-7JF3-8F2E-QUWZ-CAN7F:123456' |
| trade_pwd | String | 是 | 交易密码 |
| fee | String | 可选 | 网络手续费≥0。提币到数字货币地址所需网络手续费可通过提币手续费接口查询。最小设定单位0.0001。使用内部转账时,请设定0。 |
| chain | String | 可选 | 币种链信息。有的币种下有多个链,必须要做区分,如PLT有Palette(pPLT)和Ethereum(ePLT)。如果一个币存在多链,则此参数必须设定。 |
| usage_agreement | String | 可选 | 指定1表示您已确认该提币地址不是来自交易禁止对象国,并且不受国家重要人物或其亲属(PEPs)管辖。 关于交易禁止对象国 关于外国人PEPs |
| reason | String | 是 | 目的/理由 1: 发送到本人的外部钱包 2: 投资・资产运用 3: 生活费 4: 学费 5: 旅费 6: 工资 7: 业务委托费 8: 慰问金・礼金・礼品 9: 捐款 10: 服务手续费 11: (国内)商品购入 12: 进口付款和中介贸易付款的结算 99: 其它 |
Notes
当目的/理由选择 【进口付款和中介贸易付款的结算】或【其他】时,由于需要确认更多详细的细节,可能需要更长的时间来完成提币。
返回结果
{
"amount":"0.1",
"withdraw_id":67485,
"currency":"BTC",
"chain":"BTC",
"result":true
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 提币币种 |
| chain | String | 提币币种链信息 |
| amount | String | 提币数量 |
| withdraw_id | String | 提币申请ID |
| result | String | 提币申请结果。若是提币申请失败,将给出错误码提示 |
查询所有币种的提币记录
查询最近所有币种的提币记录,为最近100条记录。
限速:6 次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/withdrawal/history
请求示例
GET /api/v5/asset/withdrawal/history
import okx.Funding as Funding
# API Initialization
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # Live trading: 0, Demo trading: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取提币记录
result = fundingAPI.get_coins_withdraw_record()
print(result)
请求参数
返回结果
[
{
"withdraw_id":"1",
"amount":"0.094",
"fee":"0.01000000eth",
"txid":"0x62477bac6509a04512819bb1455e923a60dea5966c7caeaa0b24eb8fb0432b85",
"currency":"ETH",
"chain":"ETH",
"from":"13426335357",
"to":"0xA41446125D0B5b6785f6898c9D67874D763A1519",
"timestamp":"2018-04-22T23:09:45.000Z",
"status":"2"
},
{
"withdraw_id":"2",
"amount":"0.01",
"fee":"0.00000000btc",
"txid":"",
"currency":"BTC",
"chain":"BTC",
"from":"13426335357",
"to":"13426335357",
"timestamp":"2018-05-17T02:43:08.000Z",
"status":"4"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| withdraw_id | String | 提币申请ID |
| currency | String | 币种 |
| amount | String | 数量 |
| timestamp | String | 提币申请时间 |
| status | String | 1:等待提币2:提币中3:审核中4:提币成功5:撤销中6:已撤销7:提币失败8:已退款 |
| from | String | 提币地址(如果提币地址是OKCoinJapan平台地址,则此处将显示用户电话号码或邮箱地址) |
| to | String | 收币地址 |
| tag | String | 部分币种提币需要标签,若不需要则不返回此字段 |
| txId | String | 提币哈希记录(内部转账将不返回此字段) |
| fee | String | 提币手续费 |
| chain | String | 提币币种链信息 |
查询单个币种的提币记录
查询单个币种提币记录
限速:6 次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/withdrawal/history/<currency>
请求示例
GET /api/v5/asset/withdrawal/history/btc
import okx.Funding as Funding
# API Initialization
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # Live trading: 0, Demo trading: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取单个币种提币记录
result = fundingAPI.get_coin_withdraw_record(
currency="BTC"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 是 | 币种 |
返回结果
[
{
"withdraw_id":"1",
"amount":"0.01105486",
"fee":"0.00000000btc",
"currency":"BTC",
"chain":"BTC",
"txid": "66602e279569ba319a929f5bda731d228962bc67cd89dfa0d432d82722681d66",
"from":"13426335357",
"to":"13426335357",
"timestamp":"2018-09-30T02:49:29.000Z",
"status": "2"
},
{
"withdraw_id":"2",
"amount":"0.01144408",
"fee":"0.00000000btc",
"currency":"BTC",
"chain":"BTC",
"txid": "66602e279569ba319a929f5bda731d228962456475467d89dfa0d432d82722681d66",
"from":"13426335357",
"to":"13426335357",
"timestamp":"2018-09-18T00:44:56.000Z",
"status": "2"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| withdraw_id | String | 提币申请ID |
| currency | String | 币种 |
| amount | String | 数量 |
| timestamp | String | 提币申请时间 |
| status | String | 1:等待提币2:提币中3:审核中4:提币成功5:撤销中6:已撤销7:提币失败8:已退款 |
| from | String | 提币地址(如果提币地址是OKCoinJapan平台地址,则此处将显示用户电话号码或邮箱地址) |
| to | String | 收币地址 |
| tag | String | 部分币种提币需要标签,若不需要则不返回此字段 |
| txId | String | 提币哈希记录(内部转账将不返回此字段) |
| fee | String | 提币手续费和对应币种,如0.00000009btc |
| chain | String | 提币币种链信息 |
获取充值地址信息
获取各个币种的充值地址,包括曾使用过的老地址。
限速:20次/2s
限速规则:UserID
HTTP请求
GET /api/v5/asset/deposit/address
请求示例
GET /api/v5/asset/deposit/address?currency=BTC
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取充值地址信息
result = fundingAPI.get_deposit_address(
currency="BTC"
)
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 是 | 币种,如BTC |
返回结果
[
{
"address": "2Mti44L7thuxyzYiGzZyCcm9R7d7jgGwzZK",
"chain": "BTC",
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| address | String | 充值地址 |
| tag | String | 部分币种充值需要标签,若不需要则不返回此字段 |
| chain | String | 币种链信息 |
解释说明
某些币充值到账,需要同时填写OKCoinJapan返回的充值地址和一个tag/payment_id/memo。如果未遵守正确的充值步骤,币会丢失!
获取所有币种充值记录
获取所有币种的充值记录,最多返回最近100条记录。
限速:6次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/deposit/history
请求示例
GET /api/v5/asset/deposit/history
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取充值记录
result = fundingAPI.get_deposit_history()
print(result)
返回结果
[
{
"amount":"0.01044408",
"txid":"1915737_3_0_0_WALLET",
"currency":"BTC",
"chain":"BTC",
"deposit_id":"1",
"to":"",
"timestamp":"2018-09-30T02:45:50.000Z",
"status":"1"
},
{
"amount":"491.6784211",
"txid":"1744594_3_184_0_WALLET",
"currency":"BTC",
"chain":"BTC",
"deposit_id":"2",
"to":"",
"timestamp":"2018-08-21T08:03:10.000Z",
"status":"2"
},
{
"amount":"223.18782496",
"txid":"6d892c669225b1092c780bf0da0c6f912fc7dc8f6b8cc53b003288624c",
"currency":"ETH",
"chain":"ETH",
"deposit_id":"3",
"to":"39kK4XvgEuM7rX9frgyHoZkWqx4iKu1spD",
"timestamp":"2018-08-17T09:18:40.000Z",
"status":"4"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 币种名称,如 BTC |
| amount | String | 充值数量 |
| deposit_id | String | 充值 ID |
| to | String | 到账地址 |
| tag | String | 部分币种充值需要标签,若不需要则不返回此字段 |
| txid | String | 区块转账哈希记录 |
| timestamp | String | 充值到账时间 |
| status | String | 充值状态1:等待确认2:充值中3:审核中4:充值成功7:充值失败 |
| chain | String | 充值币种链信息 |
获取单个币种充值记录
获取单个币种的充值记录,最多返回最近100条记录。
限速:6次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/deposit/history/<currency>
请求示例
GET /api/v5/asset/deposit/history/btc
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取充值记录
result = fundingAPI.get_deposit_history_by_currency(
currency="BTC"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 否 | 币种 |
返回结果
[
{
"amount":"0.0835",
"currency":"BTC",
"chain":"BTC",
"deposit_id":"1",
"txid":"6d892c669225b1092c780bf0da0c6f912fc3e8f997dc8f6b8cc53b003288624c",
"to":"39kK4XvgEuM7rX9frgyHoZkWqx4iKu1spD",
"timestamp":"2018-06-09T07:57:09.000Z",
"status":"2"
},
{
"amount":"0.01",
"currency":"BTC",
"chain":"BTC",
"deposit_id":"2",
"txid":"590426_1_0_WALLET",
"to":"",
"timestamp":"2018-05-30T01:33:40.000Z",
"status":"2"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 币种名称,如 BTC |
| amount | String | 充值数量 |
| deposit_id | String | 充值 ID |
| to | String | 到账地址 |
| tag | String | 部分币种充值需要标签,若不需要则不返回此字段 |
| txid | String | 区块转账哈希记录 |
| timestamp | String | 充值到账时间 |
| status | String | 充值状态1:等待确认2:充值中3:审核中4:充值成功7:充值失败 |
| chain | String | 充值币种链信息 |
提币手续费
查询提现到数字货币地址时,建议网络手续费信息。手续费越高,网络确认越快。
限速:6次/s
限速规则:UserID
HTTP 请求
GET /api/v5/asset/withdrawal/fee
请求示例
GET /api/v5/asset/withdrawal/fee?currency=btc
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取提币手续费
result = fundingAPI.get_coin_fee()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| currency | String | 否 | 币种,不填则返回所有 |
返回结果
[
{
"currency":"BTC",
"chain":"BTC",
"max_fee":"0.02",
"min_fee":"0.0005"
},
{
"currency":"LTC",
"chain":"LTC",
"max_fee":"0.2",
"min_fee":"0.001"
},
{
"currency":"ETH",
"chain":"ETH",
"max_fee":"0.2",
"min_fee":"0.01"
}
]
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| currency | String | 币种 |
| chain | String | 币种链信息 |
| min_fee | String | 最小提币手续费数量 |
| max_fee | String | 最大提币手续费数量 |
公共数据
公共数据功能模块下的API接口不需要身份验证。
REST API
获取交易产品基础信息
获取所有可交易产品的信息列表。
限速:20次/2s
限速规则:IP +instType
HTTP请求
GET /api/v5/public/instruments
请求示例
GET /api/v5/public/instruments?instType=SPOT
import okx.PublicData as PublicData
flag = "0" # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取交易产品基础信息
result = publicDataAPI.get_instruments(
instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| instType | String | 是 | 产品类型SPOT:币币 |
| instId | String | 否 | 产品ID |
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"alias": "",
"auctionEndTime": "",
"baseCcy": "BTC",
"category": "1",
"expTime": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"listTime": "1606468572000",
"lotSz": "0.00000001",
"maxIcebergSz": "9999999999.0000000000000000",
"maxLmtAmt": "1000000",
"maxLmtSz": "9999999999",
"maxMktAmt": "1000000",
"maxMktSz": "",
"maxStopSz": "",
"maxTriggerSz": "9999999999.0000000000000000",
"maxTwapSz": "9999999999.0000000000000000",
"minSz": "0.00001",
"quoteCcy": "JPY",
"state": "live",
"ruleType": "normal",
"tickSz": "0.1"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| instType | String | 产品类型 |
| instId | String | 产品id,如 BTC-JPY |
| category | String | |
| baseCcy | String | 交易货币币种,如 BTC-JPY 中的 BTC |
| quoteCcy | String | 计价货币币种,如 BTC-JPY 中的 JPY |
| listTime | String | 上线时间 Unix时间戳的毫秒数格式,如 1597026383085 |
| auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085仅适用于通过集合竞价方式上线的 币币,其余情况返回"" |
| expTime | String | 产品下线时间,亦可以为产品下线时间,有变动就会推送。 |
| tickSz | String | 下单价格精度,如 0.0001 |
| lotSz | String | 下单数量精度,现货的数量单位是交易货币 |
| minSz | String | 最小下单数量,现货的数量单位是交易货币 |
| state | String | 产品状态live:交易中suspend:暂停中preopen:预上线,部分交易产品上线前test:测试中(测试产品,不可交易) |
| ruleType | String | 交易规则类型normal:普通交易pre_market:盘前交易 |
| maxLmtSz | String | 限价单的单笔最大委托数量,现货的数量单位是交易货币 |
| maxMktSz | String | 市价单的单笔最大委托数量 |
| maxLmtAmt | String | 限价单的单笔最大价值 |
| maxMktAmt | String | 市价单的单笔最大价值 |
| maxTwapSz | String | 时间加权单的单笔最大委托数量,现货的数量单位是交易货币。单笔最小委托数量为 minSz*2 |
| maxIcebergSz | String | 冰山委托的单笔最大委托数量,现货的数量单位是交易货币 |
| maxTriggerSz | String | 计划委托委托的单笔最大委托数量,现货的数量单位是交易货币 |
| maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 |
获取系统时间
获取系统时间
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/time
请求示例
GET /api/v5/public/time
import okx.PublicData as PublicData
flag = "0" # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取系统时间
result = publicDataAPI.get_system_time()
print(result)
返回结果
{
"code":"0",
"msg":"",
"data":[
{
"ts":"1597026383085"
}
]
}
返回参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ts | String | 系统时间,Unix时间戳的毫秒数格式,如 1597026383085 |
WebSocket
产品频道
当有产品状态变化时(如新合约/币对上线、人工暂停/恢复交易等),推送产品的增量数据。
URL Path
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [
{
"channel": "instruments",
"instType": "SPOT"
}
]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名instruments |
| > instType | String | 是 | 产品类型SPOT:币币 |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "instruments",
"instType": "SPOT"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"instruments\", \"instType\" : \"FUTURES\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instType | String | 是 | 产品类型SPOT:币币 |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "instruments",
"instType": "SPOT"
},
"data": [
{
"auctionEndTime": "",
"baseCcy": "BTC",
"expTime": "",
"instId": "BTC-JPY",
"instType": "SPOT",
"listTime": "1606468572000",
"lotSz": "0.00000001",
"maxLmtSz": "9999999999",
"maxMktSz": "",
"maxStopSz": "",
"minSz": "0.00001",
"quoteCcy": "JPY",
"state": "live",
"ruleType": "normal",
"tickSz": "0.1"
}
]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅的频道 |
| > channel | String | 频道名 |
| > instType | String | 产品类型 |
| data | Array | 订阅的数据 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID,如 BTC-JPY |
| > baseCcy | String | 交易货币币种,如 BTC-JPY中BTC,仅适用于币币 |
| > quoteCcy | String | 计价货币币种,如 BTC-JPY中JPY,仅适用于币币 |
| > listTime | String | 上线时间 |
| > auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085 仅适用于通过集合竞价方式上线的 币币,其余情况返回"" |
| > expTime | String | 产品下线时间 适用于 币币;如果币币产品人工下线,为产品下线时间,有变动就会推送。 |
| > tickSz | String | 下单价格精度,如 0.0001 |
| > lotSz | String | 下单数量精度 现货的数量单位是 交易货币 |
| > minSz | String | 最小下单数 现货的数量单位是 交易货币 |
| > state | String | 产品状态live:交易中 suspend:暂停中expired:已过期preopen:预上线,部分交易产品上线前test:测试中(测试产品,不可交易) |
| > ruleType | String | 交易规则类型normal:普通交易pre_market:盘前交易 |
| > maxLmtSz | String | 限价单的单笔最大委托数量 现货的数量单位是 交易货币 |
| > maxMktSz | String | 市价单的单笔最大委托数量 现货的数量单位是 JPY |
| > maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 现货的数量单位是 JPY |
限价频道
获取交易产品的最高买价和最低卖价。限价有变化时,每秒推送一次数据,限价没变化时,不推送数据
URL Path
/ws/v5/public
请求示例
{
"op": "subscribe",
"args": [{
"channel": "price-limit",
"instId": "BTC-JPY"
}]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribeunsubscribe |
| args | Array | 是 | 请求订阅的频道列表 |
| > channel | String | 是 | 频道名price-limit |
| > instId | String | 是 | 产品ID |
成功返回示例
{
"event": "subscribe",
"arg": {
"channel": "price-limit",
"instId": "BTC-JPY"
},
"connId": "a4d3ae55"
}
失败返回示例
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"price-limit\", \"instId\" : \"BTC-JPY\"}]}",
"connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| event | String | 是 | 事件subscribeunsubscribeerror |
| arg | Object | 否 | 订阅的频道 |
| > channel | String | 是 | 频道名 |
| > instId | String | 是 | 产品ID |
| code | String | 否 | 错误码 |
| msg | String | 否 | 错误消息 |
| connId | String | 是 | WebSocket连接ID |
推送示例
{
"arg": {
"channel": "price-limit",
"instId": "BTC-JPY"
},
"data": [{
"instId": "BTC-JPY",
"buyLmt": "200",
"sellLmt": "300",
"ts": "1597026383085",
"enabled": true
}]
}
推送数据参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > channel | String | 频道名 |
| > instId | String | 产品ID |
| data | Array | 订阅的数据 |
| > instType | String | 产品类型 |
| > instId | String | 产品ID,如 BTC-JPY |
| > buyLmt | String | 最高买价 当enabled为false时,返回"" |
| > sellLmt | String | 最低卖价 当enabled为false时,返回"" |
| > ts | String | 限价数据更新时间 ,Unix时间戳的毫秒数格式,如 1597026383085 |
| > enabled | Boolean | 限价是否生效 true:限价生效 false:限价不生效 |
错误码
REST API
REST API 错误码从 50000 到 59999
公共
错误码从 50000 到 53999
通用类
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 0 | 200 | |
| 1 | 200 | 操作全部失败 |
| 2 | 200 | 批量操作部分成功 |
| 50000 | 400 | POST请求的body不能为空 |
| 50001 | 503 | 服务暂时不可用,请稍后重试 |
| 50002 | 400 | JSON 语法错误 |
| 50004 | 400 | 接口请求超时(不代表请求成功或者失败,请检查请求结果) |
| 50005 | 410 | 接口已下线或无法使用 |
| 50006 | 400 | 无效的 Content-Type,请使用“application/JSON”格式 |
| 50007 | 200 | 用户被冻结 |
| 50008 | 200 | 用户不存在 |
| 50009 | 200 | 用户处于爆仓冻结 |
| 50010 | 200 | 用户ID为空 |
| 50011 | 200 | 用户请求频率过快,超过该接口允许的限额。请参考 API 文档并限制请求 |
| 50011 | 429 | 请求频率太高 |
| 50012 | 200 | 账户状态无效,请检查帐户的状态 |
| 50013 | 429 | 当前系统繁忙,请稍后重试 |
| 50014 | 400 | 必填参数{param0}不能为空 |
| 50015 | 400 | 参数{param0}和{param1}不能同时为空 |
| 50016 | 400 | 参数{param0}和{param1}不匹配 |
| 50017 | 200 | 当前仓位处于自动减仓 (ADL) 冻结中,无法进行相关操作,请稍后重试 |
| 50018 | 200 | {param0} 处于自动减仓 (ADL) 冻结中,无法进行相关操作,请稍后重试 |
| 50019 | 200 | 当前账户处于自动减仓 (ADL) 冻结中,无法进行相关操作,请稍后重试 |
| 50020 | 200 | 当前仓位处于强平冻结中,无法进行相关操作,请稍后重试 |
| 50021 | 200 | {param0} 处于强平冻结中,无法进行相关操作,请稍后重试 |
| 50022 | 200 | 当前账户处于强平冻结中,无法进行相关操作,请稍后重试 |
| 50023 | 200 | 资金费冻结,无法进行相关操作,请稍后重试 |
| 50024 | 200 | 参数{param0}和{param1}不能同时存在 |
| 50025 | 200 | 参数{param0}传值个数超过最大限制{param1} |
| 50026 | 500 | 系统错误,请稍后重试 |
| 50027 | 200 | 当前账户已被限制交易,请联系客服处理 |
| 50028 | 200 | 账户异常无法下单 |
| 50029 | 200 | 你的账户已经触发风控体系,禁止交易该标的,请检查您在欧易注册的电子邮件以便我们的客服联系 |
| 50030 | 200 | 您没有使用此 API 接口的权限 |
| 50032 | 200 | 您的账户已设置禁止该币种交易,请确认后重试 |
| 50033 | 200 | 您的账户已设置禁止该业务线交易,请确认后重试 |
| 50035 | 403 | 该接口要求APIKey必须绑定IP |
| 50036 | 200 | expTime 不能早于当前系统时间,请调整 expTime 后重试 |
| 50037 | 200 | 订单已过期 |
| 50038 | 200 | 模拟交易不支持该功能 |
| 50039 | 200 | 时间戳分页时,不支持使用before参数 |
| 50040 | 200 | 操作频繁,请稍后重试 |
| 50041 | 200 | 用户 ID 未被列入白名单列表,请联系客服 |
| 50044 | 200 | 必须指定一种broker类型 |
| 50047 | 200 | {param0} 已经交割,对应的K线请使用{param1}查询 |
| 50048 | 200 | 切换对冲单元可能导致仓位风险水平升高,引起强制平仓。请调整仓位,使保证金处于安全状态。 |
| 50049 | 200 | 无仓位档位信息,该币种不支持杠杆交易 |
| 50050 | 200 | 您已开通期权交易服务,请勿重复开通 |
| 50051 | 200 | 由于您所在国家或地区的合规限制,您无法使用该功能 |
| 50052 | 200 | 根据当地的法律法规,您无法交易您选择的币种 |
| 50053 | 200 | 该功能只支持模拟盘 |
| 50055 | 200 | 资产重置失败,超过每日设置5次资产上限 |
| 50056 | 200 | 当前账户有交易挂单或持仓,请完成全部撤单/平仓后进行重置 |
| 50057 | 200 | 资产重置失败,请稍后重试 |
| 50058 | 200 | 该币种不支持资产重置 |
| 50059 | 200 | 继续下一步之前,请按照当地监管机构的要求完成额外步骤。您可以前往欧易网页端或 App 端了解详情。 |
| 50060 | 200 | 根据当地法律法规,您需要完成身份认证方可继续使用我们的服务。 |
| 50061 | 200 | 订单请求频率过快,超过账户允许的最高限额 |
| 50062 | 200 | 该功能暂不可用 |
| 50063 | 200 | 激活失败,您的体验金可能已过期或已激活 |
| 50064 | 200 | 借币系统暂不可用,请稍后再试 |
API 类
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 50100 | 400 | Api 已被冻结,请联系客服处理 |
| 50101 | 401 | APIKey 与当前环境不匹配 |
| 50102 | 401 | 请求时间戳过期 |
| 50103 | 401 | 请求头"OK-ACCESS-KEY"不能为空 |
| 50104 | 401 | 请求头"OK-ACCESS-PASSPHRASE"不能为空 |
| 50105 | 401 | 请求头"OK-ACCESS-PASSPHRASE"错误 |
| 50106 | 401 | 请求头"OK-ACCESS-SIGN"不能为空 |
| 50107 | 401 | 请求头"OK-ACCESS-TIMESTAMP"不能为空 |
| 50108 | 401 | 券商ID不存在 |
| 50109 | 401 | 券商域名不存在 |
| 50110 | 401 | 您的IP{param0}不在APIKey绑定IP名单中 (您可以将您的IP加入到APIKey绑定白名单中) |
| 50111 | 401 | 无效的OK-ACCESS-KEY |
| 50112 | 401 | 无效的OK-ACCESS-TIMESTAMP |
| 50113 | 401 | 无效的签名 |
| 50114 | 401 | 无效的授权 |
| 50115 | 405 | 无效的请求类型 |
| 50116 | 200 | Fast API 只能创建一个 API key |
| 50118 | 200 | 如需将 API key 绑定 App,经纪商需要提供 IP 才能加入白名单 |
| 50119 | 200 | API key 不存在 |
| 50120 | 200 | API key 权限不足 |
| 50121 | 200 | 您无权通过该 IP 地址 ({param0}) 访问 |
| 50122 | 200 | 下单金额必须超过最低金额限制 |
交易类
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 51000 | 400 | {param0}参数错误 |
| 51001 | 200 | 交易产品ID不存在 |
| 51002 | 200 | 交易产品ID不匹配指数 |
| 51003 | 200 | ordId或clOrdId至少填一个 |
| 51004 | 200 | 下单失败,您在{instId} 逐仓的开平仓模式下,当前下单张数、同方向持有仓位以及同方向挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前下单张数:{size}张,同方向持有仓位:{posNumber}张,同方向挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 下单失败,您在{instId}全仓的开平仓模式下,当前下单张数、多空持有仓位以及多空挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前下单张数:{size}张,多空持有仓位{posLongShortNumber}张,多空挂单张数:{pendingLongShortNumber}张)。 |
| 51004 | 200 | 下单失败,您在{businessType}和交易品种{instFamily}的全仓开平仓模式下,当前下单张数、当前合约多空持有仓位、当前合约多空挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前下单张数:{size}张,当前合约多空持有仓位:{posLongShortNumber}张,当前合约多空挂单张数:{pendingLongShortNumber}张,其他合约占用额度:{otherQuote}张)。 |
| 51004 | 200 | 下单失败,您在{instId}的买卖模式下,当前买入张数、持有仓位、以及买入挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前买入张数:{size}张,持有仓位:{posNumber}张,买入挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 下单失败,您在{instId}的买卖模式下,当前卖出张数、持有仓位以及卖出挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前卖出张数:{size}张,持有仓位:{posNumber}张,卖出挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 下单失败,您在{businessType}和交易品种{instFamily}的全仓买卖模式下,当前买入张数、当前合约持有仓位、当前合约买入挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前买入张数:{size}张,当前合约持有仓位:{posNumber}张,当前合约买入挂单张数:{pendingNumber}张,其他合约占用额度:{otherQuota}张)。 |
| 51004 | 200 | 下单失败,您在{businessType}和交易品种{instFamily}的全仓买卖模式下,当前卖出张数、当前合约持有仓位、当前合约卖出挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前卖出张数:{size}张,当前合约持有仓位:{posNumber}张,当前合约卖出挂单张数:{pendingNumber}张,其他合约占用额度:{otherQuota}张)。 |
| 51004 | 200 | 修改订单失败,您在{instId} 逐仓的开平仓模式下,当前改单新增张数、同方向持有仓位以及同方向挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前改单新增张数:{size}张,同方向持有仓位:{posNumber}张,同方向挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 修改订单失败,您在{instId}全仓的开平仓模式下,当前改单新增张数、多空持有仓位以及多空挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前改单新增张数:{size}张,多空持有仓位{posLongShortNumber}张,多空挂单张数:{pendingLongShortNumber}张)。 |
| 51004 | 200 | 修改订单失败,您在{businessType}和交易品种{instFamily}的全仓开平仓模式下,当前改单新增张数、当前合约多空持有仓位、当前合约多空挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,当前改单新增张数:{size}张,当前合约多空持有仓位:{posLongShortNumber}张,当前合约多空挂单张数:{pendingLongShortNumber}张,其他合约占用额度:{otherQuote}张)。 |
| 51004 | 200 | 修改订单失败,您在{instId}的买卖模式下,修改当前买单新增张数、持有仓位、以及买入挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,修改当前买单新增张数:{size}张,持有仓位:{posNumber}张,买入挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 修改订单失败,您在{instId}的买卖模式下,修改当前卖单新增张数、持有仓位以及卖出挂单张数之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,修改当前卖单新增张数:{size}张,持有仓位:{posNumber}张,卖出挂单张数:{pendingNumber}张)。 |
| 51004 | 200 | 修改订单失败,您在{businessType}和交易品种{instFamily}的全仓买卖模式下,修改当前买单新增张数、当前合约持有仓位、当前合约买入挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,修改当前买单新增张数:{size}张,当前合约持有仓位:{posNumber}张,当前合约买入挂单张数:{pendingNumber}张,其他合约占用额度:{otherQuota}张)。 |
| 51004 | 200 | 修改订单失败,您在{businessType}和交易品种{instFamily}的全仓买卖模式下,修改当前卖单新增张数、当前合约持有仓位、当前合约卖出挂单张数以及其他合约占用额度之和,不能超过当前杠杆倍数允许的持仓上限{tierLimitQuantity}(张),请调低杠杆或者使用新的子账户重新下单(当前杠杆:{leverage}×,修改当前卖单新增张数:{size}张,当前合约持有仓位:{posNumber}张,当前合约卖出挂单张数:{pendingNumber}张,其他合约占用额度:{otherQuota}张)。 |
| 51005 | 200 | 委托数量大于单笔上限 |
| 51006 | 200 | 委托价格不在限价范围内(最高买入价:{param0},最低卖出价:{param1}) |
| 51007 | 200 | 委托失败,委托数量不可小于 1 张 |
| 51008 | 200 | 委托失败,账户 {param0} 可用余额不足 |
| 51008 | 200 | 委托失败,账户 {param0} 可用保证金不足 |
| 51008 | 200 | 委托失败,账户 {param0} 可用余额不足,且未开启自动借币 |
| 51008 | 200 | 委托失败,账户 {param0} 可用保证金不足,且未开启自动借币(PM模式也可以尝试IOC订单降低风险) |
| 51008 | 200 | 委托失败,因为 {param0} 剩余的档位限额不足,导致可借不足(限价挂单以及当前下单需借:{param1}, 剩余额度{param2},限额 {param3},已用额度{param4}) |
| 51008 | 200 | 委托失败,因为 {param0} 剩余的限额(母账户限额+当前账户锁定的尊享借币额度)不足,导致可借不足(限价挂单以及当前下单需借 {param1},剩余额度 {param2},限额 {param3},已用额度 {param4}) |
| 51008 | 200 | 委托失败,因为 {param0} 剩余的币对限额不足,导致可借不足 |
| 51008 | 200 | 委托失败,因为 {param0} 剩余的借贷池限额不足,导致可借不足 |
| 51008 | 200 | 委托失败,账户资产不足,美金层面有效保证金小于 IMR(PM模式也可以尝试IOC订单降低风险) |
| 51008 | 200 | 委托失败,delta 校验未通过,因为若成功下单,adjEq 的变化值将小于 IMR 的变化值。建议增加 adjEq 或减少 IMR 占用(PM模式也可以尝试IOC订单降低风险) |
| 51009 | 200 | 下单功能被冻结,请联系客服进行处理 |
| 51010 | 200 | 当前账户模式不支持此操作 |
| 51011 | 200 | ordId重复 |
| 51012 | 200 | 币种不存在 |
| 51014 | 200 | 指数不存在 |
| 51015 | 200 | instId和instType不匹配 |
| 51016 | 200 | clOrdId重复 |
| 51017 | 200 | 杠杆委托交易借币超出限额 |
| 51018 | 200 | 期权交易账户不能有净开空持仓 |
| 51019 | 200 | 期权全仓不能有净开多持仓 |
| 51020 | 200 | 委托数量必须超过单笔下限 |
| 51021 | 200 | 币对或合约待上线 |
| 51022 | 200 | 合约暂停中 |
| 51023 | 200 | 仓位不存在 |
| 51024 | 200 | 交易账户冻结 |
| 51024 | 200 | 根据服务条款,我们很遗憾地通知您,我们无法为您提供服务。如果您有任何问题,请联系我们的客服。 |
| 51024 | 200 | 根据您的要求,该账号已被冻结,如有问题请及时联系客服处理。 |
| 51024 | 200 | 您的账户近期做了相关安全设置变更,为保证您的资金安全,暂无法进行此操作,如有问题请您及时联系客服处理。 |
| 51024 | 200 | 您的账户已完成全部资产支取,为保证您的信息安全,该账户已永久冻结,若有问题,请您及时联系客服处理。 |
| 51024 | 200 | 您的认证信息疑似存在安全风险,为保证您的资金安全,暂无法进行此操作,请您及时联系客服处理。 |
| 51024 | 200 | 您的认证信息不符合年龄规定,为保证您的资金安全,暂无法进行此操作,请您及时联系客服处理。 |
| 51024 | 200 | 根据合规要求,您的认证国家或地区已禁止交易,您可以平掉所有仓位。如有问题请及时联系客服处理。 |
| 51024 | 200 | 您的认证信息疑似存在多次认证,为保证您的资金安全,暂无法进行此操作,请您及时联系客服处理。 |
| 51024 | 200 | 您的账户已被司法冻结,暂无法进行此操作,如有问题请您及时联系客服处理。 |
| 51024 | 200 | 无法进行此操作。请首先解决您现有的 C2C申诉。 |
| 51024 | 200 | 您的账户疑似存在合规风险,为保证您的资金安全,暂无法进行此操作,请您及时联系客服处理。 |
| 51024 | 200 | 根据您的交易需求,暂无法进行此操作,如有问题请及时联系客服处理。 |
| 51024 | 200 | 由于您的账户触发平台风控,暂无法进行此操作,有疑问请您联系客服。 |
| 51024 | 200 | 此账户暂无法使用,有任何疑问您可以联系客服。 |
| 51024 | 200 | 此账户提币功能暂无法使用,有任何疑问您可以联系客服。 |
| 51024 | 200 | 此账户资金账户划转功能暂无法使用,有任何疑问您可以联系客服。 |
| 51024 | 200 | 因您进行法币交易时违反了《平台法币交易规则》,故不再为您提供法币交易功能的相关服务,您账户的充币提币以及其他交易功能不受影响。 |
| 51024 | 200 | 请注意查收邮件内容,回复认证团队发送邮件,有任何问题,请联系认证团队。 |
| 51024 | 200 | 根据您的要求,该账号已被关闭,如有问题请及时联系客服处理。 |
| 51024 | 200 | 您的账户疑似存在安全风险,为保证您的资金安全,暂无法进行此操作,请您及时联系客服处理。 |
| 51024 | 200 | 您的账户疑似存在安全风险,暂无法兑换,请您及时联系客服处理 |
| 51024 | 200 | 您的账号已冻结,部分功能将被禁用,如您希望解除账号限制,请前往帮助中心联系平台客服。 |
| 51024 | 200 | 根据合规要求,您的认证国家或地区已禁止交易,您可以撤销已有的订单。如有问题请及时联系客服处理。 |
| 51024 | 200 | 您的认证国家为交易禁止国,根据合规要求,暂无法进行此操作,如有问题请您及时联系客服处理。 |
| 51024 | 200 | 根据当地法律法规,您所在的国家或地区无法使用该产品。如果您的常居住地不是本国家或地区,并持有有效身份证件,您可继续使用欧易的交易所产品。 |
| 51024 | 200 | 请注意您在建立托管交易子账户后的前30分钟内可能无法划转或进行交易,请耐心等待并稍后再试。 |
| 51024 | 200 | 此功能暂不可用,完成高级身份认证后即可正常使用 |
| 51024 | 200 | 由于您未能及时更新认证信息,您账户的充币与交易功能已受限。请尽快更新认证,以解除账户限制。 |
| 51024 | 200 | 超出限制的子账户不能开仓,只能减仓或平仓,请尝试使用其他账户进行交易。 |
| 51025 | 200 | 委托笔数超限 |
| 51026 | 200 | 交易产品类型不匹配指数(instType和uly不匹配) |
| 51027 | 200 | 合约已到期 |
| 51028 | 200 | 合约交割中 |
| 51029 | 200 | 合约结算中 |
| 51030 | 200 | 资金费结算中 |
| 51031 | 200 | 委托价格不在平仓限价范围内 |
| 51032 | 200 | 市价全平中 |
| 51033 | 200 | 币对单笔交易已达限额 |
| 51034 | 200 | 成交速率超出您所设置的上限,请将做市商保护状态重置为 inactive 以继续交易。 |
| 51035 | 200 | 用户没有做市订单的下单权限 |
| 51036 | 200 | 仅 PM 账户的期权业务线支持 MMP 类型订单 |
| 51411 | 200 | 用户没有执行mass cancel的权限 |
| 51042 | 200 | PM 账户模式下,期权仅支持持仓模式为全仓的 MMP 类型订单 |
| 51043 | 200 | 该逐仓仓位不存在 |
| 59509 | 200 | 用户没有重置做市商保护状态的权限 |
| 51037 | 200 | 当前账户风险状态,仅支持降低账户风险方向的IOC订单 |
| 51038 | 200 | 当前风险模块下已经存在降低账户风险方向的IOC类型订单 |
| 51039 | 200 | PM账户下交割和永续的全仓不能调整杠杆倍数 |
| 51040 | 200 | 期权逐仓的买方不能调整保证金 |
| 51041 | 200 | PM账户仅支持买卖模式 |
| 51044 | 200 | 当前订单类型{param0}, {param1}不支持设置止盈和止损 |
| 51046 | 200 | 止盈触发价格应该大于委托价格 |
| 51047 | 200 | 止损触发价格应该小于委托价格 |
| 51048 | 200 | 止盈触发价格应该小于委托价格 |
| 51049 | 200 | 止损触发价格应该大于委托价格 |
| 51050 | 200 | 止盈触发价格应该大于卖一价 |
| 51051 | 200 | 止损触发价格应该小于卖一价 |
| 51052 | 200 | 止盈触发价格应该小于买一价 |
| 51053 | 200 | 止损触发价格应该大于买一价 |
| 51054 | 500 | 请求超时,请稍候重试 |
| 51055 | 200 | 组合保证金模式暂不支持合约网格 |
| 51056 | 200 | 当前策略不支持该操作 |
| 51057 | 200 | 当前账户模式暂不支持此交易策略,请前往“交易设置 > 账户模式”进行切换 |
| 51058 | 200 | 该策略无仓位 |
| 51059 | 200 | 策略当前状态不支持此操作 |
| 51065 | 200 | algoClOrdId 重复 |
| 51068 | 200 | {param0} 已经在 algoClOrdId 和 attachAlgoClOrdId 中存在。 |
| 51069 | 200 | 不存在该{param0}相关的期权合约 |
| 51070 | 200 | 您当前尚未达到升级至该账户模式的要求,请先在官方网站或APP完成账户模式的升级。 |
| 51071 | 200 | 当前维护的标签维度倒计时全部撤单达到数量上限 |
| 51072 | 200 | 您当前身份为现货带单员,设置的带单币对买入时,tdMode 需要使用 spot_isolated |
| 51073 | 200 | 您当前身份为现货带单员,卖出带单资产需要使用'/copytrading/close-subposition'接口 |
| 51074 | 200 | 仅现货带单员设置的带单币对支持使用 tdMode:spot_isolated |
| 51076 | 200 | 分批止盈的每笔止盈止损订单仅支持单向止盈止损,slTriggerPx&slOrdPx 与 tpTriggerPx&tpOrdPx 只能填写一组 |
| 51077 | 200 | 币币/杠杆不支持开启'开仓价止损' |
| 51078 | 200 | 您当前身份为带单交易员,不支持分批止盈 |
| 51079 | 200 | 同一笔订单上附带分批止盈的止盈委托单不能超过 {param0} 笔 |
| 51080 | 200 | 同一笔订单上附带分批止盈的止盈触发价类型 (tpTriggerPxType) 必须保持一致 |
| 51081 | 200 | 同一笔订单上附带分批止盈的止盈触发价 (tpTriggerPx) 不能相等 |
| 51082 | 200 | 同一笔订单上附带分批止盈,其中触发止盈的止盈委托价 (tpOrdPx) 只能是市价 |
| 51083 | 200 | 同一笔订单上附带分批止盈的止盈数量之和需要等于订单的委托数量 |
| 51084 | 200 | 同一笔订单上附带分批止盈的止损委托单不能超过 {param0} 笔 |
| 51085 | 200 | 附带止盈止损开启'开仓价止损'时 (amendPxOnTriggerType 设置为 1),该笔订单上的止盈委托单必须大于等于 2 笔 |
| 51086 | 200 | 同一笔订单上附带止盈止损委托单不能超过 {param0} 笔 |
| 51538 | 200 | 若下单时使用了 attachAlgoOrds 参数,也需要使用 attachAlgoOrds 参数改单;若下单时没有使用 attachAlgoOrds 参数,则不支持使用 attachAlgoOrds 参数改单。 |
| 51539 | 200 | 修改同一笔订单上分批止盈中的止盈止损订单时,attachAlgoId 或者 attachAlgoClOrdId 的值不能重复 |
| 51527 | 200 | 改单失败,其中至少有一个附带的止盈止损订单不存在 |
| 51087 | 200 | 该币种取消上线,当前不支持交易 |
| 51088 | 200 | 对于同一个仓位,仅支持一笔全部平仓的止盈止损挂单 |
| 51089 | 200 | 在附带分批止盈时,止盈订单的数量不能为空 |
| 51090 | 200 | 对于绑定了限价止盈的止损订单,不允许修改其委托数量 |
| 51091 | 200 | 同一笔订单上附带分批止盈的止盈类型必须保持一致 |
| 51092 | 200 | 同一笔订单上附带分批止盈的止盈委托价不能相等 |
| 51093 | 200 | 同一笔订单上附带分批止盈,其中限价止盈的止盈委托价 (tpOrdPx) 不能为 –1 (市价) |
| 51094 | 200 | 币币、杠杆和期权交易不支持限价止盈 |
| 51095 | 200 | 该接口下限价止盈订单时,也需要同时下一笔止损订单 |
| 51096 | 200 | 限价止盈时 cxlOnClosePos 需要为 true |
| 51098 | 200 | 对于绑定了限价止盈的止损订单,不能添加新的止盈 |
| 51099 | 200 | 您当前身份为带单交易员,不支持下单限价止盈 |
| 51178 | 200 | 使用 attachAlgoClOrdId 时,tpTriggerPx&tpOrdPx 或者 slTriggerPx&slOrdPx 不能为空。 |
| 51100 | 200 | 下单失败,只减仓订单不能附带止盈止损。 |
| 51101 | 200 | 操作失败,单笔委托数量不能大于{maxSzPerOrder}(张)。 |
| 51102 | 200 | 操作失败,当前合约的累计挂单数量不能大于{maxNumberPerInstrument}(单)。 |
| 51103 | 200 | 操作失败,{businessType}的当前交易品种下,所有合约累计挂单数量不能大于{maxNumberPerInstFamily}(单)。 |
| 51104 | 200 | 操作失败,{businessType}的当前交易品种下,所有合约累计挂单张数不能大于{maxSzPerInstFamily} (张)。 |
| 51105 | 200 | 操作失败,当前合约的持仓张数和同方向挂单张数之和不能大于{maxPositionSzPerInstrument}(张)。 |
| 51106 | 200 | 操作失败,{businessType}的当前交易品种下,所有合约累计持仓张数和同方向挂单张数之和不能大于{maxPostionSzPerInstFamily51106}(张)。 |
| 51107 | 200 | 操作失败,{businessType}的当前交易品种下,所有合约累计持仓张数和双向挂单张数之和不能大于{maxPostionSzPerInstFamily51107}(张)。 |
| 51108 | 200 | 持仓量超过市价全平最大限制 |
| 51109 | 200 | 订单深度中无买一卖一价 |
| 51110 | 200 | 集合竞价开始后方可下限价单 |
| 51111 | 200 | 批量下单时,超过最大单数{param0} |
| 51112 | 200 | 平仓张数大于该仓位的可平张数 |
| 51113 | 429 | 市价全平操作过于频繁 |
| 51116 | 200 | 委托价格或触发价格超过{param0} |
| 51117 | 200 | 平仓单挂单单数超过限制 |
| 51120 | 200 | 下单数量不足{param0}张 |
| 51121 | 200 | 下单张数应为一手张数的倍数 |
| 51122 | 200 | 委托价格小于最小值{param0} |
| 51124 | 200 | 价格发现期间您只可下限价单 |
| 51125 | 200 | 当前杠杆存在非只减仓挂单,请撤销所有非只减仓挂单后进行只减仓挂单 |
| 51126 | 200 | 当前杠杆存在只减仓挂单,请撤销所有只减仓挂单后进行非只减仓挂单 |
| 51127 | 200 | 仓位可用余额为0 |
| 51128 | 200 | 跨币种账户无法进行全仓杠杆交易 |
| 51129 | 200 | 持仓及买入订单价值已达到持仓限额,不允许继续买入 |
| 51130 | 200 | 逐仓杠杆保证金币种错误 |
| 51131 | 200 | 仓位可用余额不足 |
| 51132 | 200 | 仓位正资产小于最小交易单位 |
| 51133 | 200 | 跨币种全仓币币不支持只减仓功能 |
| 51134 | 200 | 平仓失败,您当前没有杠杆仓位,请关闭只减仓后继续 |
| 51135 | 200 | 您的平仓价格已触发限价,最高买入价格为{param0} |
| 51136 | 200 | 您的平仓价格已触发限价,最低卖出价格为{param0} |
| 51137 | 200 | 买单最高价为 {param0},请调低价格 |
| 51138 | 200 | 卖单最低价为 {param0},请调高价格 |
| 51139 | 200 | 现货模式下币币不支持只减仓功能 |
| 51142 | 200 | 盘口无有效报价,用JPY模式下单无法成交,请尝试切换到币种模式 |
| 51143 | 200 | 兑换数量不足 |
| 51147 | 200 | 交易期权需要在交易账户资产总价值大于2万美元的前提下,开通期权交易服务 |
| 51148 | 200 | 下单失败,当前订单若下单成功会造成只减仓订单反向开仓,请撤销或修改原有挂单再进行下单 |
| 51149 | 500 | 下单超时,请稍候重试 |
| 51150 | 200 | 交易数量或价格的精度超过限制 |
| 51152 | 200 | 一键借币模式下,不支持自动借币与自动还币和手动类型混合下单。 |
| 51155 | 200 | 由于您所在国家或地区的合规限制,您无法交易此币对或合约 |
| 51169 | 200 | 下单失败,当前合约无持仓,请先取消只减仓设置,再尝试下单 |
| 51170 | 200 | 下单失败,只减仓下单方向不能与持仓方向相同 |
| 51171 | 200 | 改单失败,当前订单若改单成功会造成只减仓订单反向开仓,请撤销或修改原有挂单再进行改单 |
| 51174 | 200 | 操作失败,当前 {param0} 的累计挂单数量已达上限 {param1} (单) |
| 51175 | 200 | 参数 {param0}、{param1} 和 {param2} 不能同时为空 |
| 51176 | 200 | 参数 {param0}、{param1} 和 {param2} 只能填写一个 |
| 51177 | 200 | 当前期权订单的价格类型为{param0},不支持修改{param1} |
| 51179 | 200 | 现货模式下,不支持使用{param0}进行期权下单。 |
| 51180 | 200 | {param0}的范围应为({param1}, {param2}) |
| 51181 | 200 | 使用{param0}下单,ordType 只能为限价单 (limit) |
| 51182 | 200 | 当前账户期权价格类型 pxUsd 和 pxVol 的挂单数量之和,不能超过 {param0} 个 |
| 51185 | 200 | 单笔订单价值不能超过 {maxOrderValue} USD |
| 51186 | 200 | 下单失败。在当前保证金模式下,您针对 {param0} 的杠杠倍数设置为 {param1}x,大于平台允许的最大杠杠倍数 {param2}x,请调低杠杆。 |
| 51187 | 200 | 下单失败,您在 {param0} {param1} 和当前保证金模式下,当前下单张数、持仓及挂单张数之和 {param2},已超过平台上限 {param3} 张,请修改当前订单数量,或撤单、平仓。 |
| 51201 | 200 | 市价委托单笔价值不能超过 1,000,000 JPY |
| 51202 | 200 | 市价单下单数量超出最大值 |
| 51203 | 200 | 普通委托数量超出最大限制{param0} |
| 51204 | 200 | 限价委托单价格不能为空 |
| 51205 | 200 | 不支持只减仓操作 |
| 51206 | 200 | 请先撤销当前下单产品{param0}的只减仓挂单,避免反向开仓 |
| 51220 | 200 | 分润策略仅支持策略停止时卖币或停止时全部平仓 |
| 51221 | 200 | 请输入 0-30% 范围内的指定分润比例 |
| 51222 | 200 | 该策略不支持分润 |
| 51223 | 200 | 当前状态您不可以进行分润带单 |
| 51224 | 200 | 该币对不支持分润 |
| 51225 | 200 | 分润跟单策略不支持手动立即触发策略 |
| 51226 | 200 | 分润跟单策略不支持修改策略参数 |
| 51250 | 200 | 策略委托价格不在正确范围内 |
| 51251 | 200 | 创建冰山委托时,策略委托类型错误 |
| 51252 | 200 | 策略委托数量不在正确范围内 |
| 51253 | 200 | 冰山委托单笔均值超限 |
| 51254 | 200 | 冰山委托单笔均值错误 |
| 51255 | 200 | 冰山委托单笔委托超限 |
| 51256 | 200 | 冰山委托深度错误 |
| 51257 | 200 | 跟踪委托回调服务错误,回调幅度限制为{min}<x<={max}% |
| 51258 | 200 | 跟踪委托失败,卖单激活价格需大于最新成交价格 |
| 51259 | 200 | 跟踪委托失败,买单激活价格需小于最新成交价格 |
| 51260 | 200 | 每个用户最多可同时持有{param0}笔未成交的跟踪委托 |
| 51261 | 200 | 每个用户最多可同时持有{param0}笔未成交的止盈止损 |
| 51262 | 200 | 每个用户最多可同时持有{param0}笔未成交的冰山委托 |
| 51263 | 200 | 每个用户最多可同时持有{param0}笔未成交的时间加权单 |
| 51264 | 200 | 时间加权单笔均值超限 |
| 51265 | 200 | 时间加权单笔上限错误 |
| 51267 | 200 | 时间加权扫单比例出错 |
| 51268 | 200 | 时间加权扫单范围出错 |
| 51269 | 200 | 时间加权委托间隔错误,应为{min}<=x<={max} |
| 51270 | 200 | 时间加权委托深度限制为 0<x<=1% |
| 51271 | 200 | 时间加权委托失败,扫单比例应该为 0<x<=100% |
| 51272 | 200 | 时间加权委托失败,扫单范围应该为 0<x<=1% |
| 51273 | 200 | 时间加权委托总量应为大于 0 |
| 51274 | 200 | 时间加权委托总数量需大于单笔上限 |
| 51275 | 200 | 止盈止损市价单笔委托数量不能超过最大限制 |
| 51276 | 200 | 止盈止损市价单不能指定价格 |
| 51277 | 200 | 止盈触发价格不能大于最新成交价 |
| 51278 | 200 | 止损触发价格不能小于最新成交价 |
| 51279 | 200 | 止盈触发价格不能小于最新成交价 |
| 51280 | 200 | 止损触发价格不能大于最新成交价 |
| 51281 | 200 | 计划委托不支持使用tgtCcy参数 |
| 51282 | 200 | 吃单价优于盘口的比例范围 |
| 51283 | 200 | 时间间隔的范围{param0}s~{param1}s |
| 51284 | 200 | 单笔数量的范围{param0}~{param1} |
| 51285 | 200 | 委托总量的范围{param0}~{param1} |
| 51286 | 200 | 下单金额需大于等于{param0} |
| 51287 | 200 | 当前策略不支持此交易品种 |
| 51288 | 200 | 策略正在停止中,请勿重复点击 |
| 51289 | 200 | 策略配置不存在,请稍后再试 |
| 51290 | 200 | 策略引擎正在升级,请稍后重试 |
| 51291 | 200 | 策略不存在或已停止 |
| 51292 | 200 | 策略类型不存在 |
| 51293 | 200 | 策略不存在 |
| 51294 | 200 | 该策略暂不能创建,请稍后再试 |
| 51295 | 200 | PM账户不支持ordType为{param0}的策略委托单 |
| 51298 | 200 | 交割、永续合约的买卖模式下,不支持计划委托 |
| 51299 | 200 | 策略委托失败,用户最多可持有{param0}笔该类型委托 |
| 51300 | 200 | 止盈触发价格不能大于标记价格 |
| 51302 | 200 | 止损触发价格不能小于标记价格 |
| 51303 | 200 | 止盈触发价格不能小于标记价格 |
| 51304 | 200 | 止损触发价格不能大于标记价格 |
| 51305 | 200 | 止盈触发价格不能大于指数价格 |
| 51306 | 200 | 止损触发价格不能小于指数价格 |
| 51307 | 200 | 止盈触发价格不能小于指数价格 |
| 51308 | 200 | 止损触发价格不能大于指数价格 |
| 51309 | 200 | 集合竞价期间不能创建策略 |
| 51310 | 200 | 逐仓自主划转保证金模式不支持ordType为iceberg、twap的策略委托单 |
| 51311 | 200 | 移动止盈止损委托失败,回调幅度限制为{min}<x<={max} |
| 51312 | 200 | 移动止盈止损委托失败,委托数量范围{min}<x<={max} |
| 51313 | 200 | 逐仓自主划转模式不支持策略部分 |
| 51317 | 200 | 币币杠杆不支持计划委托 |
| 51327 | 200 | closeFraction 仅适用于交割合约和永续合约 |
| 51328 | 200 | closeFraction 仅适用于只减仓订单 |
| 51329 | 200 | closeFraction 仅适用于买卖模式 |
| 51330 | 200 | closeFraction 仅适用于止盈止损市价订单 |
| 51331 | 200 | closeFraction仅限于平仓单 |
| 51332 | 200 | 组合保证金模式不支持closeFraction |
| 51333 | 200 | 开平模式下的平仓单或买卖模式下的只减仓单无法附带止盈止损 |
| 51340 | 200 | 投入保证金需大于{0}{1} |
| 51341 | 200 | 当前策略状态下暂不支持平仓 |
| 51342 | 200 | 已有平仓单,请稍后重试 |
| 51343 | 200 | 止盈价格需小于区间最低价格 |
| 51344 | 200 | 止损价格需大于区间最高价格 |
| 51345 | 200 | 策略类型不是网格策略 |
| 51346 | 200 | 最高价格不能低于最低价格 |
| 51347 | 200 | 暂无可提取利润 |
| 51348 | 200 | 止损价格需小于区间最低价格 |
| 51349 | 200 | 止盈价格需大于区间最高价格 |
| 51350 | 200 | 暂无可推荐参数 |
| 51351 | 200 | 单格收益必须大于0 |
| 51352 | 200 | 币对数量范围{pairNum1} - {pairNum2} |
| 51353 | 200 | 存在重复币对{existingPair} |
| 51354 | 200 | 币对比例总和需等于100% |
| 51355 | 200 | 定投日期范围{date1} - {date2} |
| 51356 | 200 | 定投时间范围{0}~{1} |
| 51357 | 200 | 时区范围 {timezone1} - {timezone2} |
| 51358 | 200 | 每个币种的投入金额需大于{amount} |
| 51359 | 200 | 暂不支持定投该币种{0} |
| 51370 | 200 | 杠杆倍数范围{0}~{1} |
| 51380 | 200 | 市场行情不符合策略配置 |
| 51381 | 200 | 单网格利润率不在区间内 |
| 51382 | 200 | 策略不支持停止信号触发 |
| 51383 | 200 | 最小价格必须小于最新成交价 |
| 51384 | 200 | 信号触发价格必须大于最小价格 |
| 51385 | 200 | 止盈价必须大于最小价格 |
| 51386 | 200 | 最小价格必须大于1/2最新成交价 |
| 51387 | 200 | 止损价格应小于无限网格的区间最低价 |
| 51388 | 200 | 策略已在运行中 |
| 51389 | 200 | 触发价格需小于{0} |
| 51390 | 200 | 触发价格需小于止盈价格 |
| 51391 | 200 | 触发价格需大于止损价格 |
| 51392 | 200 | 止盈价格需大于触发价格 |
| 51393 | 200 | 止损价格需小于触发价格 |
| 51394 | 200 | 触发价格需大于止盈价格 |
| 51395 | 200 | 触发价格需小于止损价格 |
| 51396 | 200 | 止盈价格需小于触发价格 |
| 51397 | 200 | 止损价格需大于触发价格 |
| 51398 | 200 | 当前行情满足停止条件,无法创建策略 |
| 51399 | 200 | 当前杠杆下最大可投入金额为 {amountLimit} {quoteCurrency},请减少投入金额后再试。 |
| 51400 | 200 | 由于订单已完成、已撤销或不存在,撤单失败 |
| 51400 | 200 | 撤单失败,订单不存在(仅适用于价差速递) |
| 51401 | 200 | 撤单失败,订单已撤销(仅适用于价差速递) |
| 51402 | 200 | 撤单失败,订单已完成(仅适用于价差速递) |
| 51403 | 200 | 撤单失败,该委托类型无法进行撤单操作 |
| 51404 | 200 | 价格发现第二阶段您不可撤单 |
| 51405 | 200 | 撤单失败,您当前没有未成交的订单 |
| 51406 | 400 | 撤单数量超过最大允许单数{param0} |
| 51407 | 200 | ordIds 和 clOrdIds 不能同时为空 |
| 51408 | 200 | 币对 id 或币对名称与订单信息不匹配 |
| 51409 | 200 | 币对 id 或币对名称不能同时为空 |
| 51410 | 200 | 撤单失败,订单已处于撤销中 |
| 51411 | 200 | 用户没有执行mass cancel的权限 |
| 51412 | 200 | 撤单超时,请稍后重试 |
| 51416 | 200 | 委托已触发,暂不支持撤单 |
| 51413 | 200 | 撤单失败,接口不支持该委托类型的撤单 |
| 51415 | 200 | 下单失败,现货交易仅支持设置最新价为触发价格,请更改触发价格并重试 |
| 51500 | 200 | 价格、数量、止盈/止损不能同时为空 |
| 51501 | 400 | 修改订单超过最大允许单数{param0} |
| 51502 | 200 | 修改订单失败,账户 {param0} 可用余额不足 |
| 51502 | 200 | 修改订单失败,账户 {param0} 可用保证金不足 |
| 51502 | 200 | 修改订单失败,账户 {param0} 可用余额不足,且未开启自动借币 |
| 51502 | 200 | 修改订单失败,账户 {param0} 可用保证金不足,且未开启自动借币(PM模式也可以尝试IOC订单降低风险) |
| 51502 | 200 | 修改订单失败,因为 {param0} 剩余的档位限额不足,导致可借不足(限价挂单以及当前下单需借:{param1}, 剩余额度{param2},限额 {param3},已用额度{param4}。 |
| 51502 | 200 | 修改订单失败,因为 {param0} 剩余的档位限额不足,导致可借不足(限价挂单以及当前下单需借:{param1}, 剩余额度{param2},限额 {param3},已用额度{param4}。 |
| 51502 | 200 | 修改订单失败,因为 {param0} 剩余的限额(主账户限额+当前账户锁定的尊享借币额度)不足,导致可借不足(限价挂单以及当前下单需借 {param1},剩余额度 {param2},限额 {param3},已用额度 {param4}。 |
| 51502 | 200 | 修改订单失败,因为 {param0} 剩余的币对限额不足,导致可借不足 |
| 51502 | 200 | 修改订单失败,因为 {param0} 剩余的借贷池限额不足,导致可借不足 |
| 51502 | 200 | 修改订单失败,账户资产不足,美元层面有效保证金小于 IMR(PM模式也可以尝试IOC订单降低风险) |
| 51502 | 200 | 修改订单失败,delta 校验未通过,因为若成功下单,adjEq 的变化值将小于 IMR 的变化值。建议增加 adjEq 或减少 IMR 占用(PM模式也可以尝试IOC订单降低风险) |
| 51503 | 200 | 由于订单已完成、已撤销或不存在,改单失败 |
| 51503 | 200 | 由于订单不存在,改单失败(仅适用于价差速递) |
| 51505 | 200 | {instId} 不处于集合竞价阶段 |
| 51506 | 200 | 订单类型不支持改单 |
| 51508 | 200 | 集合竞价第一阶段和第二阶段不允许改单 |
| 51509 | 200 | 修改订单失败,订单已撤销(仅适用于价差速递) |
| 51510 | 200 | 修改订单失败,订单已完成(仅适用于价差速递) |
| 51511 | 200 | 操作失败,订单价格不满足Post Only条件 |
| 51512 | 200 | 批量修改订单失败。同一批量改单请求中不允许包含相同订单。 |
| 51513 | 200 | 对于正在处理的同一订单,改单请求次数不得超过3次 |
| 51514 | 200 | 修改订单失败,价格长度不能超过 32 个字符 |
| 51523 | 200 | 不允许在全部仓位止盈止损单上修改订单委托价格,请修改触发价格 |
| 51524 | 200 | 不允许在全部仓位止盈止损单上修改委托数量,请修改触发价格 |
| 51525 | 200 | 一键借币止盈止损单不支持修改 |
| 51526 | 200 | 改单失败,止盈止损单不支持增加或删除止盈/止损 |
| 51527 | 200 | 改单失败,止盈止损订单不存在 |
| 51528 | 200 | 止盈止损不支持修改触发类型 |
| 51529 | 200 | 改单失败,只有交割、永续合约单可以修改止盈止损 |
| 51530 | 200 | 改单失败,只减仓订单不能附带止盈止损 |
| 51531 | 200 | 改单失败,止盈止损单修改必须保留一个方向 |
| 51536 | 200 | 期权的 pxVol 或者 pxUsd 订单不支持修改订单数量 |
| 51537 | 200 | 非期权产品不支持使用 pxUsd 或者 pxVol |
| 51600 | 200 | 查询订单的状态不存在 |
| 51601 | 200 | 订单状态和订单id不能同时存在 |
| 51602 | 200 | 订单状态或订单id必须存在一个 |
| 51603 | 200 | 查询订单不存在 |
| 51604 | 200 | 若想获取文件链接,请先申请下载文件 |
| 51605 | 200 | 只允许下载过去两年内的历史成交明细文件 |
| 51606 | 200 | 无法下载当前季度的历史成交明细 |
| 51607 | 200 | 您已申请下载文件,当前状态为进行中 |
| 51608 | 200 | 当前季度无历史成交明细 |
| 51610 | 200 | 只允许下载 2021 年第一季度以来的历史账单流水 |
| 51611 | 200 | 无法下载当前季度的账单流水 |
| 51620 | 200 | 您不是节点用户,没有相关权限 |
| 51621 | 200 | 该用户不是您的直客 |
| 51156 | 200 | 您当前身份为带单交易员。在开平仓模式下,对于带单合约标的不支持使用该接口平仓 |
| 51159 | 200 | 您当前身份为带单交易员,在买卖模式下,如需使用该接口下单,委托的方向必须与现有持仓和挂单保持一致 |
| 51162 | 200 | 您当前有 {instrument} 挂单,请撤单后重试 |
| 51163 | 200 | 您当前有 {instrument} 持仓,请平仓后重试 |
| 51165 | 200 | {instrument}只减仓订单数量已达上限 {upLimit},请撤销部分订单后重新下单。 |
| 51166 | 200 | 当前产品不支持带单 |
| 51167 | 200 | 下单失败,因为您存在大宗交易的委托订单,请撤销后重新下单 |
| 51168 | 200 | 下单失败,因为您存在只减仓类型的委托订单,请撤销后重新下单 |
| 51320 | 200 | 币种占比范围 {PercentNum1}%-{PercentNum2}% |
| 51321 | 200 | 您正在带单。暂不支持使用套利、冰山或时间加权 (TWAP) 策略带单 |
| 51322 | 200 | 您当前身份为带单交易员。您的带单合约持仓已经市价全平,系统已撤销止盈止损委托并进行平仓 |
| 51323 | 200 | 您当前身份为带单交易员。您的带单合约仓位已设置止盈止损,请先撤销原有止盈止损订单 |
| 51324 | 200 | 您当前身份为带单交易员,并持有 {instrument} 仓位。平仓委托张数需要与可平张数一致 |
| 51325 | 200 | 您当前身份为带单交易员。下止盈止损单时,请选择市价作为委托价格 |
| 51326 | 200 | 您当前身份为带单交易员,下止盈止损单时,委托价格类型必须为市价 |
| 51326 | 200 | 您当前身份为带单交易员,下止盈止损单时,委托价格类型必须为市价 |
| 54000 | 200 | 暂不支持币币杠杆业务 |
| 54001 | 200 | 只有跨币种全仓账户才能设置自动借币 |
| 54004 | 200 | 下单或改单失败,因为批量订单中的一个订单失败了 |
| 54005 | 200 | 盘前交割合约请使用逐仓进行交易 |
| 54006 | 200 | 盘前交易合约用户持仓上限为{posLimit}张 |
| 54007 | 200 | 不支持该产品 {instId} |
| 54008 | 200 | 该操作被“撤销 MMP 订单”接口限制。请通过该接口解除限制。 |
| 54009 | 200 | {param0}的范围应为 [{param1},{param2}] |
| 54011 | 200 | 盘前交易合约交割前 1 小时内仅允许减少仓位数量,请修改或撤销订单 |
数据类
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 52000 | 200 | 没有最新行情信息 |
账户类
错误码从 59000 到 59999
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 59000 | 200 | 设置失败,请在设置前关闭任何挂单或持仓 |
| 59001 | 200 | 当前存在借币,暂不可切换 |
| 59002 | 200 | 子账户设置失败,请在设置前关闭任何子账户挂单、持仓或策略 |
| 59004 | 200 | 只支持同一业务线下交易产品ID |
| 59005 | 200 | 逐仓自主划转保证金模式,初次划入仓位的资产价值需大于 10,000 JPY |
| 59006 | 200 | 此功能即将下线,无法切换到此模式 |
| 59101 | 200 | 杠杆倍数无法修改,请撤销所有逐仓挂单后进行杠杆倍数修改 |
| 59102 | 200 | 杠杆倍数超过最大杠杆倍数,请降低杠杆倍数 |
| 59103 | 200 | 杠杆倍数过低,账户中没有足够的可用保证金可以追加,请提高杠杆倍数 |
| 59104 | 200 | 杠杆倍数过高,借币仓位已超过该杠杆倍数的最大仓位,请降低杠杆倍数 |
| 59105 | 400 | 杠杆倍数设置不能小于{0},请提高杠杆倍数 |
| 59106 | 200 | 您下单后仓位总张数所处档位的最高可用杠杆为{0},请重新调整 |
| 59107 | 200 | 杠杆倍数无法修改,请撤销所有全仓挂单后修改杠杆倍数 |
| 59108 | 200 | 杠杆倍数过低,账户中保证金不足,请提高杠杆倍数 |
| 59109 | 200 | 调整后,账户权益小于所需保证金,请重新调整杠杆倍数 |
| 59110 | 200 | 该{0}对应的产品业务线不支持使用tgtCcy参数 |
| 59111 | 200 | PM账户下衍生品全仓不支持杠杆查询 |
| 59112 | 200 | 当前存在逐仓/全仓挂单,请撤销所有逐仓挂单后进行杠杆倍数修改 |
| 59113 | 200 | 根据当地法律法规,您所在的地区无法使用保证金交易相关服务,如果您不是该地区居民,请进行KYC2身份认证 |
| 59114 | 200 | 根据当地法律法规,您所在的地区无法使用保证金交易相关服务 |
| 59125 | 200 | {0} 不支持当前操作 |
| 59200 | 200 | 账户余额不足 |
| 59201 | 200 | 账户余额是负数 |
| 59202 | 200 | PM 账户下衍生品全仓不支持最大可开仓数量的查询 |
| 59300 | 200 | 追加保证金失败,指定仓位不存在 |
| 59301 | 200 | 调整保证金超过当前最大可调整数量 |
| 59302 | 200 | 当前仓位存在平仓挂单,请撤销平仓挂单后进行保证金修改 |
| 59303 | 200 | 可用保证金不足,请尝试增加保证金或减少借币数量 |
| 59304 | 200 | 借币币种权益不足,请至少留有一天的利息 |
| 59305 | 200 | 您当前没有进行尊享借币,无法设置尊享借币优先 |
| 59306 | 200 | 借币数量超过总额度,不可继续借币 |
| 59307 | 200 | 当前用户不满足尊享借币条件 |
| 59308 | 200 | 市场化借币额度不足,VIP还币失败 |
| 59309 | 200 | 还币数量超出已借数量,还币失败 |
| 59310 | 200 | 当前账户不支持尊享借币 |
| 59311 | 200 | 存在尊享借币,无法设置 |
| 59312 | 200 | {币种}不支持尊享借币 |
| 59313 | 200 | 无法还币。在一键借币模式下,您目前没有 ${ccy} 借币(币对:${ccyPair}) |
| 59314 | 200 | 当前用户该订单不是借币中,不允许还币 |
| 59315 | 200 | VIP借币功能正在升级中,稍等10分钟之后再次操作 |
| 59316 | 200 | 当前用户该币种存在借币申请中的订单,不允许借币 |
| 59317 | 200 | 您当前币种 VIP 借币中的订单数量不能大于{maxNumber}(单) |
| 59319 | 200 | 由于您的资金已被占用,您暂时无法偿还借贷,请解除占用状态再进行还币 |
| 59320 | 200 | 超出借贷限额 |
| 59321 | 200 | 您所在的地区不支持借币 |
| 59322 | 200 | 此订单无法执行当前操作 |
| 59323 | 200 | 借贷金额小于最低限额 |
| 59324 | 200 | 没有可用的借贷订单 |
| 59325 | 200 | 借币订单仅支持全部还币 |
| 59326 | 200 | 出借数量应在 {minLend} ~ {lendQuota} 范围内 |
| 59327 | 200 | 由于您续借的金额不足以偿还您当前的借贷,您无法自动续借,请手动还款以避免高额逾期利息 |
| 59328 | 200 | 出借年化应在 {minRate} ~ {maxRate} 范围内 |
| 59329 | 200 | 无法降低负债。当前订单可直接还币 |
| 51152 | 200 | 一键借币模式下,不支持自动借币与自动还币和手动类型混合下单。 |
| 59401 | 200 | 持仓价值达到持仓限制 |
| 59402 | 200 | 查询条件中的instId的交易产品当前不是可交易状态,请填写单个instid逐个查询状态详情 |
| 59410 | 200 | 只有当借币交易启用且该币种支持借币交易时,您才可以进行借币 |
| 59411 | 200 | 无法手动借币,账户可用保证金不足 |
| 59412 | 200 | 无法手动借币,您输入的数量已超过借币限额 |
| 59413 | 200 | 该币种没有负债,无需还币 |
| 59414 | 200 | 无法手动借币,您输入的数量应大于或等于最小借币数量 {param0} |
| 59500 | 200 | 仅主账户有操作权限 |
| 59501 | 200 | 每个账户最多可创建 50 个 API key |
| 59502 | 200 | 此备注名已存在。 请输入唯一的 API key 备注名称 |
| 59503 | 200 | 每个 API key 最多可以绑定 20 个 IP 地址 |
| 59504 | 200 | 子账户不支持提币功能,请在主账户中进行提币 |
| 59505 | 200 | passphrase 格式不正确,支持6-32位字母和数字组合 (区分大小写,不支持空格符号) |
| 59506 | 200 | API key 不存在 |
| 59507 | 200 | 转出账户和转入账户必须是同一个母账户下的2个不同的子账户 |
| 59508 | 200 | {0}该子账户被冻结 |
| 59509 | 200 | 用户没有重置做市商保护状态的权限 |
| 59510 | 200 | 子账户不存在 |
| 59512 | 200 | 不支持为独立经纪商子账号设置主动转出权限,所有独立经纪商子账户默认有主动转出权限 |
| 59601 | 200 | 子账户名称已存在 |
| 59603 | 200 | 创建的子账户数量已达到上限 |
| 59604 | 200 | 仅母账APIkey有操作此接口的权限 |
| 59606 | 200 | 删除失败,请将子账户中的余额划转到母账户 |
| 59608 | 200 | 仅Broker账户有操作此接口的权限 |
| 59609 | 200 | 经纪商已经存在 |
| 59610 | 200 | 经纪商不存在 |
| 59611 | 200 | 经纪商状态是未审核 |
| 59612 | 200 | 时间参数格式转换失败 |
| 59613 | 200 | 当前未与子账户建立托管关系 |
| 59614 | 200 | 托管子账户不支持此操作 |
| 59615 | 200 | 起始日期和结束日期的时间间隔不能超过180天。 |
| 59616 | 200 | 起始日期不能大于结束日期 |
| 59617 | 200 | 子账户创建成功,账户等级设置失败 |
| 59618 | 200 | 创建子账户失败 |
| 59619 | 200 | 该接口不支持独立经纪商子账户,请使用为独立经纪商提供的专有接口。 |
| 59622 | 200 | 您正在创建独立经纪商 2 级子账号。该 1 级子账号不存在或有误,请先创建 1 级子账号或使用正确的 1 级子账号。 |
| 59623 | 200 | 独立经纪商 1 级子账号下存在 2 级子账号,请删除 2 级子账号后重试。 |
| 59648 | 200 | 调整后实际现货对冲占用数量不足,有潜在爆仓风险,请调整现货对冲占用数量 |
| 59649 | 200 | 关闭现货对冲占用模式可能会增加强制平仓的风险。请调整仓位,使保证金率处于安全状态。 |
| 59650 | 200 | 切换对冲单位可能会增加强制平仓的风险。请调整仓位,使保证金率处于安全状态。 |
| 59651 | 200 | 未开启现货对冲占用,无法设置现货对冲数量 |
| 59652 | 200 | 不支持为非杠杆币种设置现货对冲占用数量 |
策略交易
错误码从 55100 到 55999
| 错误码 | HTTP 状态码 | 错误提示 |
|---|---|---|
| 55100 | 200 | 止盈百分比应在 {parameter1} ~ {parameter2} 的范围内 |
| 55101 | 200 | 止损百分比应在 {parameter1} ~ {parameter2} 的范围内 |
| 55102 | 200 | 止盈百分比需大于当前策略收益率 |
| 55103 | 200 | 止损百分比需小于当前策略收益率 |
| 55104 | 200 | 仅合约网格支持按收益率百分比止盈止损 |
| 55105 | 200 | 当前状态不支持加仓操作 |
| 55106 | 200 | 加仓金额应在 {parameter1} ~ {parameter2} 的范围内 |
| 55111 | 200 | 此信号名称正在使用中,请尝试新名称 |
| 55112 | 200 | 此信号不存在 |
| 55113 | 200 | 创建信号策略的杠杆倍数大于交易产品列的最大杠杆倍数 |
| 55116 | 200 | 每个交易对只能进行一笔追逐限价委托 |
WebSocket
WebSocket 错误消息均为英文,中文错误消息仅供参考
公共
错误码从 60000 到 64002
通用类
| 错误码 | 错误消息 |
|---|---|
| 60004 | 无效的 timestamp |
| 60005 | 无效的 apiKey |
| 60006 | 请求时间戳过期 |
| 60007 | 无效的签名 |
| 60008 | 当前服务不支持订阅{0}频道,请检查WebSocket地址 |
| 60009 | 登录失败 |
| 60011 | 用户需要登录 |
| 60012 | 不合法的请求 |
| 60013 | 无效的参数 args |
| 60014 | 用户请求频率过快,超过该接口允许的限额 |
| 60018 | 错误的 URL 或者 {0} 不存在,请参考 API 文档使用正确的 URL,频道和参数 |
| 60019 | 无效的op{0} |
| 60020 | 超出最大允许订阅的APIKey数量{0} |
| 60021 | 该功能不支持多账户登录使用 |
| 60022 | 批量登录部分成功 |
| 60023 | 批量登录请求过于频繁 |
| 60024 | passphrase不正确 |
| 60025 | 超出最大允许订阅的token数量{0} |
| 60026 | 不支持APIKey和token同时登录 |
| 60027 | 参数{0}不可为空 |
| 60028 | 当前服务不支持此功能,请检查WebSocket地址 |
| 60029 | 该频道仅支持手续费等级为 VIP5 及以上的用户订阅使用 |
| 60030 | books50-l2-tbt 深度频道仅支持手续费等级为 VIP4 及以上的用户订阅使用 |
| 60031 | WebSocket地址不支持多账户和重复登录 |
| 60032 | API key 不存在 |
| 63999 | 由于内部错误,登录失败,请稍后重试。 |
| 64000 | 订阅参数 uly 已失效,请您尽快将 uly 替换为 instFamily,更多详情可参考: https://www.okj.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. |
| 64001 | 该频道到已经迁移到了 '/business' URL,请使用新的 URL。更多详情可参考:https://www.okj.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. |
| 64002 | "/business" URL 不支持该频道. 请使用"/private" URL(对于私有频道), 或者"/public" URL(对于公有频道),更多详情可参考:https://www.okj.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. |
| 64003 | 用户交易费等级不支持访问该频道 |
关闭帧
| 状态码 | 文案 |
|---|---|
| 1009 | 用户订阅请求过大 |
| 4001 | 登录失败 |
| 4002 | 参数不合法 |
| 4003 | 登录账户多于100个 |
| 4004 | 空闲超时30秒 |
| 4005 | 写缓冲区满 |
| 4006 | 异常场景关闭 |
| 4007 | API key已更新或删除,请重新连接 |
| 4008 | 总订阅频道数量超过最大限制 |
| 4009 | 该连接订阅频道数超限制 |