概览
欢迎查看 API 文档。我们提供完整的REST和WebSocket API以满足您的交易需求。
- 在 my.okx.com 完成注册的用户,请访问 https://my.okx.com/docs-v5/en/ 获取 API 文档。
- 在 app.okx.com 完成注册的用户,请访问 https://app.okx.com/docs-v5/en/ 获取 API 文档。
API学习资源与技术支持
教程
- 学习使用 API 交易: API 使用指南
- 学习使用Python交易现货: Python 现货交易教程
- 学习使用Python交易衍生品: Python 衍生品交易教程
Python包
- 使用Python SDK更简单地上手: Python SDK
- 轻松上手Python做市商代码 Python 做市商代码示例
客户服务
- 如有问题请咨询线上客服
创建我的APIKey
点击跳转至官网创建V5APIKey的页面 创建我的APIKey
生成APIKey
在对任何请求进行签名之前,您必须通过交易网站创建一个APIKey。创建APIKey后,您将获得3个必须记住的信息:
- APIKey
- SecretKey
- Passphrase
APIKey和SecretKey将由平台随机生成和提供,Passphrase将由您提供以确保API访问的安全性。平台将存储Passphrase加密后的哈希值进行验证,但如果您忘记Passphrase,则无法恢复,请您通过交易网站重新生成新的APIKey。
APIKey 权限
APIKey 有如下3种权限,一个 APIKey 可以有一个或多个权限。
- 读取 :查询账单和历史记录等 读权限
- 提现 :可以进行提币
- 交易 :可以下单和撤单,转账,调整配置 等写权限
APIKey 安全性
- 每个APIKey最多可绑定20个IP地址,IP地址支持IPv4/IPv6和网段的格式。
- 用户调用了需要 APIKey 鉴权的接口,才会被视为 APIKey 被使用。
- 调用了不需要 APIKey 鉴权的接口,即使传入了 APIKey的信息,也不会被视为使用过。
- Websocket 只有在登陆的时候,才会被视为 APIKey 被使用过。在登陆后的连接中做任何操作(如 订阅/下单),也不会被认为 APIKey 被使用,这点需要注意。
用户可以在 安全中心 中看到未绑定IP且拥有交易/提现权限的 APIKey 最近使用记录。
REST 请求验证
发起请求
所有REST私有请求头都必须包含以下内容:
- OK-ACCESS-KEY字符串类型的APIKey。
- OK-ACCESS-SIGN使用HMAC SHA256哈希函数获得哈希值,再使用Base-64编码(请参阅签名)。
- OK-ACCESS-TIMESTAMP发起请求的时间(UTC),如:2020-12-08T09:08:57.715Z
- OK-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-USDT","lever":"5","mgnMode":"isolated"}
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": "******",
       "passphrase": "******",
       "timestamp": "1538054050",
       "sign": "7L+zFQ+CEgGu5rzCj4+BdV2/uUHGqddA9pI6ztsRRPs=" 
      }
   ]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| op | String | 是 | 操作, login | 
| args | Array of objectss | 是 | 账户列表 | 
| > 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 | 是 | 操作, loginerror | 
| 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-USDT"
        }
    ]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| op | String | 是 | 操作, subscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续FUTURES:交割OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
返回示例
{
    "event": "subscribe",
    "arg": {
        "channel": "tickers",
        "instId": "BTC-USDT"
    },
    "connId": "accb8e21"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| event | String | 是 | 事件, subscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续FUTURES:交割OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
取消订阅
可以取消一个或者多个频道
请求格式说明
{
    "op": "unsubscribe",
    "args": ["< SubscriptionTopic > "]
}
请求示例
{
  "op": "unsubscribe",
  "args": [
    {
      "channel": "tickers",
      "instId": "BTC-USDT"
    }
  ]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| op | String | 是 | 操作, unsubscribe | 
| args | Array of objects | 是 | 取消订阅的频道列表 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
返回示例
{
    "event": "unsubscribe",
    "arg": {
        "channel": "tickers",
        "instId": "BTC-USDT"
    },
    "connId": "d0b44253"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| event | String | 是 | 事件, unsubscribeerror | 
| arg | Object | 否 | 取消订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
通知
WebSocket有一种消息类型(event=notice)。 
用户会在如下场景收到此类信息:
- Websocket服务升级断线
在推送服务升级前60秒会推送信息,告知用户WebSocket服务即将升级。用户可以重新建立新的连接避免由于断线造成的影响。
返回示例
{
    "event": "notice",
    "code": "64008",
    "msg": "The connection will soon be closed for a service upgrade. Please reconnect.",
    "connId": "a4d3ae55"
}
目前支持WebSocket公共频道(/ws/v5/public)和私有频道(/ws/v5/private)。
账户模式
为了方便您的交易体验,请在开始交易前设置适当的账户模式。
交易账户交易系统提供四个账户模式,分别为现货模式、合约模式、跨币种保证金模式以及组合保证金模式。
账户模式的首次设置,需要在网页或手机app上进行。
实盘交易
实盘API交易地址如下:
- REST:https://www.okx.com
- WebSocket公共频道:wss://ws.okx.com:8443/ws/v5/public
- WebSocket私有频道:wss://ws.okx.com:8443/ws/v5/private
- WebSocket业务频道:wss://ws.okx.com:8443/ws/v5/business
模拟盘交易
目前可以进行 API 的模拟盘交易,部分功能不支持如提币、充值、申购赎回等。
模拟盘API交易地址如下:
- REST:https://www.okx.com
- WebSocket公共频道:wss://wspap.okx.com:8443/ws/v5/public
- WebSocket私有频道:wss://wspap.okx.com:8443/ws/v5/private
- WebSocket业务频道:wss://wspap.okx.com:8443/ws/v5/business
模拟盘的账户与欧易的账户是互通的,如果您已经有欧易账户,可以直接登录。
模拟盘API交易需要在模拟盘上创建APIKey:
登录欧易账户—>交易—>模拟交易—>个人中心—>创建模拟盘APIKey—>开始模拟交易
请求头示例
Content-Type: application/json
OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418
OK-ACCESS-SIGN: leaVRETrtaoEQ3yI9qEtI1CZ82ikZ4xSG5Kj8gnl3uw=
OK-ACCESS-PASSPHRASE: 1****6
OK-ACCESS-TIMESTAMP: 2020-03-28T12:21:41.274Z
x-simulated-trading: 1
模拟盘交互式浏览器
该功能接口用户需先登录,接口只会请求模拟环境
- Parameters 面板中点击 - Try it out按钮,编辑请求参数。
- 点击 - Execute按钮发送请求。Responses 面板中查看请求结果。
立即体验 交互式浏览器
基本信息
交易所层面的下单规则如下:
- 未成交订单(包括 post only,limit和处理中的taker单)的最大挂单数:4,000个
- 单个交易产品未成交订单的最大挂单数为500个,被计入到 500 笔挂单数量限制的订单类型包括: - 限价委托 (Limit)
- 市价委托 (Market)
- 只挂单 (Post only)
- 全部成交或立即取消 (FOK)
- 立即成交并取消剩余 (IOC)
- 市价委托立即成交并取消剩余 (optimal limit IOC)
- 止盈止损 (TP/SL)
- 以下类型的订单触发的限价和市价委托:
- 止盈止损 (TP/SL)
- 计划委托 (Trigger)
- 移动止盈止损 (Trailing stop)
- 套利下单 (Arbitrage)
- 冰山策略 (Iceberg)
- 时间加权策略 (TWAP)
- 定投 (Recurring buy)
 
 
- 价差订单最大挂单数:所有价差订单挂单合计500个 
- 策略委托订单最大挂单数: - 止盈止损:100个 每个Instrument ID
- 计划委托:500个
- 移动止盈止损:50个
- 冰山委托:100个
- 时间加权委托:20个
 
- 网格策略最大个数: - 现货网格:100个
- 合约网格:100个
 
交易限制规则如下:
- 当taker订单匹配的maker订单数量超过最大限制1000笔时,taker订单将被取消
- 限价单仅成交与1000笔maker订单相对应的部分,并取消剩余;
- 全部成交或立即取消(FOK)订单将直接被取消。
 
返回数据规则如下:
- 当返回数据中,有 - code,且没有- sCode字段时,- code和- msg代表请求结果或者报错原因;
- 当返回中有 - sCode字段时,代表请求结果或者报错原因的是- sCode和- sMsg,而不是- code和- msg。
instFamily 和 uly 参数说明:
  - 以下说明以 BTC 合约为例,其他币种的合约同理。
  - uly 是指数,如:"BTC-USD",与盈亏结算和保证金币种 (settleCcy) 会存在一对多的关系。
  - instFamily 是交易品种,如:BTC-USD_UM,与盈亏结算和保证金币种 (settleCcy) 一一对应。
  - 以下表格详细展示了 uly, instFamily,settleCcy 和 instId 的对应关系。
| 合约类型 | uly | instFamily | settleCcy | 交割合约 instId | 永续合约 instId | 
|---|---|---|---|---|---|
| USDT 本位合约 | BTC-USDT | BTC-USDT | USDT | BTC-USDT-250808 | BTC-USDT-SWAP | 
| USDC 本位合约 | BTC-USDC | BTC-USDC | USDC | BTC-USDC-250808 | BTC-USDC-SWAP | 
| USD 本位合约 | BTC-USD | BTC-USD_UM | USDⓈ | BTC-USD_UM-250808 | BTC-USD_UM-SWAP | 
| 币本位合约 | BTC-USD | BTC-USD | BTC | BTC-USD-250808 | BTC-USD-SWAP | 
注意:
1. USDⓈ 代表 USD 以及多种 USD 稳定币,如:USD, USDC, USDG。
2. 盈亏结算和保证金币种指的获取交易产品基础信息(私有)接口返回的 settleCcy 字段。
交易时效性
由于网络延时或者OKX服务器繁忙会导致订单无法及时处理。如果您对交易时效性有较高的要求,可以灵活设置请求有效截止时间expTime以达到你的要求。
(批量)下单,(批量)改单接口请求中如果包含expTime,如果服务器当前系统时间超过expTime,则该请求不会被服务器处理。
REST API
请求头中设置如下参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 | 
目前支持如下接口:
请求示例
curl -X 'POST' \
  'https://www.okx.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-USDT",
  "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-USDT",
        "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 级别定义(期权除外) 
- 期权的限速是根据 Instrument Family 级别定义的。 请参阅 获取交易产品基础信息 接口以查看交易品种信息。 
- 批量订单接口和单订单接口的限速也是独立的,除了只有一个订单发送到批量订单接口时,该订单将被视为一个订单并采用单订单限速。 
子账户限速
子账户维度,每2秒最多允许1000个订单相关请求。仅有新订单及修改订单请求会被计入此限制。此限制涵盖以下所列的所有接口。对于包含多个订单的批量请求,每个订单将被单独计数。如果请求频率超过限制,系统会返回50061错误码。产品ID维度的限速规则保持不变,现有的限速规则与新增的子账户维度限速将并行运行。若用户需要更高的速率限制,可以通过多个子账户进行交易。
基于成交比率的子账户限速
仅适用于用户等级 >= VIP5的用户。
为了激励更高效的交易,交易所将为交易成交比率高的用户提供更高的子账户限速。
交易所将在每天 00:00 UTC,根据过去七天的交易数据计算两个比率。
- 子账户成交比率:该比率为(子账户的USDT对应交易量)/(每个交易产品的新增和修改请求数 * 交易产品乘数之和)。请注意,在这种情况下,母账户自身也被视为一个“子账户”。
- 母账户合计成交比率:该比率为(母账户层面的USDT对应交易量)/(所有子账户各个交易产品的新增和修改请求数 * 交易产品乘数之和)。
交易产品乘数允许我们微调每个交易产品对成交比率的影响权重。较小的交易产品乘数(<1)适用于小币对及合约,在交易这些币对、合约时,为达到相同交易量往往需要更多的订单。所有的交易产品都有默认乘数,部分交易产品有独立的乘数。详情请见下表。
| 业务线 | 覆盖规则 | 独立乘数 | 默认乘数 | 
|---|---|---|---|
| 永续 | 产品ID | 1产品ID: BTC-USDT-SWAP BTC-USD-SWAP ETH-USDT-SWAP ETH-USD-SWAP | 0.2 | 
| 交割 | 交易品种 | 0.3交易品种: BTC-USDT BTC-USD ETH-USDT ETH-USD | 0.1 | 
| 币币 | 产品ID | 0.5产品ID: BTC-USDT ETH-USDT | 0.1 | 
| 期权 | 交易品种 | 0.1 | 
成交比率计算不包括大宗交易,价差交易,做市商保护(MMP),以及法币类型订单对应的订单数量;并且不包括大宗交易,价差交易对应的交易量。仅考虑 sCode = 0 的成功请求。
每日 08:00 UTC,系统将根据UTC时间 00:00 的数据快照,选取子账户成交比率及母账户合计成交比率中的较大值决定子账户的未来限速。详情请见下表。对于独立经纪商,系统只会取子账户的成交比率。
| 成交比率[x<=比率<y) | 子账户每2秒限速(新订单及修改订单请求) | |
|---|---|---|
| Tier 1 | [0,1) | 1,000 | 
| Tier 2 | [1,2) | 1,250 | 
| Tier 3 | [2,3) | 1,500 | 
| Tier 4 | [3,5) | 1,750 | 
| Tier 5 | [5,10) | 2,000 | 
| Tier 6 | [10,20) | 2,500 | 
| Tier 7 | [20,50) | 3,000 | 
| Tier 8 | >= 50 | 10,000 | 
若成交比率和预期限速有所改善,则提升将于 08:00 (UTC) 立即生效。但若成交比率下降,需要降低未来限速,系统将给予一天的宽限期,降低后的速率限制将在 T+1 08:00 (UTC) 实施。在 T+1 时,若成交比率提高,则将立即授予更高的限速。若用户的交易手续费等级降级为 VIP4,其限速将降低为最低档位,并有一天的宽限期。
若子账户7日交易量低于1,000,000 USDT,则按照母账户的合计成交比率实施限速。
对于新创建的子账户,创建时将应用最低档位限速,在 T+1 08:00 (UTC)时,将开始应用上述限速规则。
大宗交易、价差交易、做市商保护(MMP)以及币币、币币杠杆订单不受子账户限速限制。
交易所提供 GET / 获取账户限速 接口以便用户查询成交比率以及限速数据,数据将于每天 08:00 (UTC) 更新。该接口将返回子账户成交比率,母账户合计成交比率,子账户当前限速以及 T+1 时的预期子账户限速(适用于限速降级)。
成交比率、限速计算样例如下。用户有三个账户,交易产品 BTC-USDT-SWAP 及 XRP-USDT 的乘数分别为1,0.1。
- 账户 A(母账户):
- BTC-USDT-SWAP 交易量为100 USDT,订单数量为10;
- XRP-USDT 交易量为20 USDT,订单数量为15;
- 子账户成交比率 = (100+20) / (10 * 1 + 15 * 0.1) = 10.4
 
- 账户 B (子账户):
- BTC-USDT-SWAP 交易量为200 USDT,订单数量为100;
- XRP-USDT 交易量为20 USDT,订单数量为30;
- 子账户成交比率 = (200+20) / (100 * 1 + 30 * 0.1) = 2.13
 
- 账户 C (子账户):
- BTC-USDT-SWAP 交易量为300 USDT,订单数量为100;
- XRP-USDT 交易量为20 USDT,订单数量为45;
- 子账户成交比率 = (300+20) / (100 * 1 + 45 * 0.1) = 3.06
 
- 母账户合计成交比率 = (100+20+200+20+300+20) / (10 * 1 + 15 * 0.1 + 100 * 1 + 30 * 0.1 + 100 * 1 + 45 * 0.1) = 3.01
- 账户限速
- 账户 A = max(10.4, 3.01) = 10.4 -> 2500订单请求/2秒
- 账户 B = max(2.13, 3.01) = 3.01 -> 1750订单请求/2秒
- 账户 C = max(3.06, 3.01) = 3.06 -> 1750订单请求/2秒
 
最佳实践
如果您需要的请求速率高于我们的限速,您可以设置不同的子账户来批量请求限速。 我们建议使用此方法来限制或间隔请求,以最大化每个帐户的限速并避免断开连接或拒绝请求。
做市商申请
满足以下任意条件的用户即可申请加入欧易做市商计划:
- 交易等级VIP2及以上
- 其他交易所达标做市商(需审核)
感兴趣的各方可以使用此表格联系我们:https://okx.typeform.com/contact-sales
为鼓励做市商为平台提供更好的流动性,可以享受更优的交易手续费,同时也承担相应的做市责任。具体做市责任及手续费申请成功后提供相关资料。
经纪商申请
如果您的业务平台提供数字货币服务,您就可以申请加入欧易经纪商项目,成为欧易的经纪商合作伙伴,享受专属的经纪商服务,并通过用户在欧易产生的交易手续费赚取高额返佣。
经纪商业务包含且不限:聚合交易平台、交易机器人、跟单平台、交易策略提供方、量化策略机构、资管平台等。
具体经纪商业务文档及产品服务在申请成功后提供相关资料。
交易账户
账户功能模块下的API接口需要身份验证。
REST API
获取交易产品基础信息
获取当前账户可交易产品的信息列表。
限速:20次/2s
限速规则:User ID + Instrument Type
权限:读取
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"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
result = accountAPI.get_instruments(instType="SPOT")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 可选 | 交易品种,仅适用于 交割/永续/期权,期权必填 | 
| instId | String | 否 | 产品ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "auctionEndTime": "",
            "baseCcy": "BTC",
            "ctMult": "",
            "ctType": "",
            "ctVal": "",
            "ctValCcy": "",
            "contTdSwTime": "1704876947000",
            "expTime": "",
            "futureSettlement": false,
            "instFamily": "",
            "instId": "BTC-EUR",
            "instType": "SPOT",
            "lever": "",
            "listTime": "1704876947000",
            "lotSz": "0.00000001",
            "maxIcebergSz": "9999999999.0000000000000000",
            "maxLmtAmt": "1000000",
            "maxLmtSz": "9999999999",
            "maxMktAmt": "1000000",
            "maxMktSz": "1000000",
            "maxPlatOILmt": "1000000000",
            "maxStopSz": "1000000",
            "maxTriggerSz": "9999999999.0000000000000000",
            "maxTwapSz": "9999999999.0000000000000000",
            "minSz": "0.00001",
            "optType": "",
            "openType": "call_auction",
            "preMktSwTime": "",
            "posLmtPct": "30",
            "posLmtAmt": "2500000",
            "quoteCcy": "EUR",
            "tradeQuoteCcyList": [
                "EUR"
            ],
            "settleCcy": "",
            "state": "live",
            "ruleType": "normal",
            "stk": "",
            "tickSz": "1",
            "uly": "",
            "instIdCode": 1000000000
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品id, 如 BTC-USDT | 
| uly | String | 标的指数,如 BTC-USD,仅适用于杠杆/交割/永续/期权 | 
| instFamily | String | 交易品种,如 BTC-USD,仅适用于杠杆/交割/永续/期权 | 
| baseCcy | String | 交易货币币种,如 BTC-USDT中的BTC,仅适用于币币/币币杠杆 | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT中的USDT,仅适用于币币/币币杠杆 | 
| settleCcy | String | 盈亏结算和保证金币种,如 BTC仅适用于交割/永续/期权 | 
| ctVal | String | 合约面值,仅适用于 交割/永续/期权 | 
| ctMult | String | 合约乘数,仅适用于 交割/永续/期权 | 
| ctValCcy | String | 合约面值计价币种,仅适用于 交割/永续/期权 | 
| optType | String | 期权类型, C或P仅适用于期权 | 
| stk | String | 行权价格,仅适用于 期权 | 
| listTime | String | 上线时间 Unix时间戳的毫秒数格式,如 1597026383085 | 
| auctionEndTime | String | 1597026383085仅适用于通过集合竞价方式上线的 币币,其余情况返回""(已废弃,请使用contTdSwTime) | 
| contTdSwTime | String | 连续交易开始时间,从集合竞价、提前挂单切换到连续交易的时间,Unix时间戳格式,单位为毫秒。e.g. 1597026383085。仅适用于通过集合竞价或提前挂单上线的 SPOT/MARGIN,在其他情况下返回""。 | 
| preMktSwTime | String | 盘前永续合约转为普通永续合约的时间,Unix时间戳的毫秒数格式,如 1597026383085仅适用于盘前 SWAP | 
| openType | String | 开盘类型 fix_price: 定价开盘pre_quote: 提前挂单call_auction: 集合竞价只适用于 SPOT/MARGIN,其他业务线返回"" | 
| expTime | String | 产品下线时间 适用于 币币/杠杆/交割/永续/期权,对于交割/期权,为交割/行权日期;亦可以为产品下线时间,有变动就会推送。 | 
| lever | String | 该 instId支持的最大杠杆倍数,不适用于币币、期权 | 
| tickSz | String | 下单价格精度,如 0.0001对于期权来说,是梯度中的最小下单价格精度,如果想要获取期权价格梯度,请使用"获取期权价格梯度"接口 | 
| lotSz | String | 下单数量精度 合约的数量单位是 张,现货的数量单位是交易货币 | 
| minSz | String | 最小下单数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| ctType | String | 合约类型 linear:正向合约inverse:反向合约仅适用于 交割/永续 | 
| state | String | 产品状态 live:交易中suspend:暂停中preopen:预上线,交割和期权合约轮转生成到开始交易;部分交易产品上线前test:测试中(测试产品,不可交易) | 
| ruleType | String | 交易规则类型 normal:普通交易pre_market:盘前交易 | 
| posLmtAmt | String | 单一用户层面的该产品最大持仓名义价值(USD),按同方向已持仓与挂单的美元名义价值计算。单用户有效上限为 max(posLmtAmt, oiUSD × posLmtPct)。适用于 SWAP/FUTURES。 | 
| posLmtPct | String | 单一用户相对于平台当前总持仓名义价值可持有的最大比例(如 30 表示 30%)。单用户有效上限为 max(posLmtAmt, oiUSD × posLmtPct)。适用于 SWAP/FUTURES。 | 
| maxPlatOILmt | String | 该产品的全平台最大持仓名义价值(USD)。当开启全平台持仓限制开关且平台总持仓达到或超过该值时,系统将拒绝所有用户的新开仓委托;否则订单通过校验。 | 
| maxLmtSz | String | 限价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxMktSz | String | 市价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| maxLmtAmt | String | 限价单的单笔最大美元价值 | 
| maxMktAmt | String | 市价单的单笔最大美元价值 仅适用于 币币/币币杠杆 | 
| maxTwapSz | String | 时间加权单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币单笔最小委托数量为 minSz*2 | 
| maxIcebergSz | String | 冰山委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxTriggerSz | String | 计划委托委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| futureSettlement | Boolean | 交割合约是否支持每日结算 适用于 全仓交割 | 
| tradeQuoteCcyList | Array of strings | 可用于交易的计价币种列表,如 ["USD", "USDC"]. | 
| instIdCode | Integer | 产品唯一标识代码。 对于简单二进制编码,您必须使用 instIdCode而不是instId。对于同一 instId,实盘和模拟盘的值可能会不一样。 | 
查看账户余额
获取交易账户中资金余额信息。
限速:10次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户余额
result = accountAPI.get_account_balance()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adjEq": "55415.624719833286",
            "availEq": "",
            "borrowFroz": "0",
            "details": [
                {
                    "autoLendStatus": "off",
                    "autoLendMtAmt": "0",
                    "availBal": "4834.317093622894",
                    "availEq": "4834.3170936228935",
                    "borrowFroz": "0",
                    "cashBal": "4850.435693622894",
                    "ccy": "USDT",
                    "crossLiab": "0",
                    "colRes": "0",
                    "collateralEnabled": false,
                    "collateralRestrict": false,
                    "colBorrAutoConversion": "0",
                    "disEq": "4991.542013297616",
                    "eq": "4992.890093622894",
                    "eqUsd": "4991.542013297616",
                    "smtSyncEq": "0",
                    "spotCopyTradingEq": "0",
                    "fixedBal": "0",
                    "frozenBal": "158.573",
                    "frpType": "0",
                    "imr": "",
                    "interest": "0",
                    "isoEq": "0",
                    "isoLiab": "0",
                    "isoUpl": "0",
                    "liab": "0",
                    "maxLoan": "0",
                    "mgnRatio": "",
                    "mmr": "",
                    "notionalLever": "",
                    "ordFrozen": "0",
                    "rewardBal": "0",
                    "spotInUseAmt": "",
                    "clSpotInUseAmt": "",
                    "maxSpotInUse": "",
                    "spotIsoBal": "0",
                    "stgyEq": "150",
                    "twap": "0",
                    "uTime": "1705449605015",
                    "upl": "-7.545600000000006",
                    "uplLiab": "0",
                    "spotBal": "",
                    "openAvgPx": "",
                    "accAvgPx": "",
                    "spotUpl": "",
                    "spotUplRatio": "",
                    "totalPnl": "",
                    "totalPnlRatio": ""
                }
            ],
            "imr": "0",
            "isoEq": "0",
            "mgnRatio": "",
            "mmr": "0",
            "notionalUsd": "0",
            "notionalUsdForBorrow": "0",
            "notionalUsdForFutures": "0",
            "notionalUsdForOption": "0",
            "notionalUsdForSwap": "0",
            "ordFroz": "",
            "totalEq": "55837.43556134779",
            "uTime": "1705474164160",
            "upl": "0"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uTime | String | 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| totalEq | String | 美金层面权益 | 
| isoEq | String | 美金层面逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| adjEq | String | 美金层面有效保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| availEq | String | 账户美金层面可用保证金,排除因总质押借币上限而被限制的币种 适用于 跨币种保证金模式/组合保证金模式 | 
| ordFroz | String | 美金层面全仓挂单占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| imr | String | 美金层面占用保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| mmr | String | 美金层面维持保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| borrowFroz | String | 账户美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| mgnRatio | String | 美金层面维持保证金率 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsd | String | 以美金价值为单位的持仓数量,即仓位美金价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsdForBorrow | String | 借币金额(美元价值) 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsdForSwap | String | 永续合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| notionalUsdForFutures | String | 交割合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| notionalUsdForOption | String | 期权持仓美元价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| upl | String | 账户层面全仓未实现盈亏(美元单位) 适用于 跨币种保证金模式/组合保证金模式 | 
| details | Array of objects | 各币种资产详细信息 | 
| > ccy | String | 币种 | 
| > eq | String | 币种总权益 | 
| > cashBal | String | 币种余额 | 
| > uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > isoEq | String | 币种逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > availEq | String | 可用保证金 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > disEq | String | 美金层面币种折算权益 适用于 现货模式(开通了借币功能)/跨币种保证金模式/组合保证金模式 | 
| > fixedBal | String | 抄底宝、逃顶宝功能的币种冻结金额 | 
| > availBal | String | 可用余额 | 
| > frozenBal | String | 币种占用金额 | 
| > ordFrozen | String | 挂单冻结数量 适用于 现货模式/合约模式/跨币种保证金模式 | 
| > liab | String | 币种负债额 值为正数,如 "21625.64" 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > upl | String | 未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > uplLiab | String | 由于仓位未实现亏损导致的负债 适用于 跨币种保证金模式/组合保证金模式 | 
| > crossLiab | String | 币种全仓负债额 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > isoLiab | String | 币种逐仓负债额 适用于 跨币种保证金模式/组合保证金模式 | 
| > rewardBal | String | 体验金余额 | 
| > mgnRatio | String | 币种全仓维持保证金率,衡量账户内某项资产风险的指标 适用于 合约模式且有全仓仓位时 | 
| > imr | String | 币种维度全仓占用保证金 适用于 合约模式且有全仓仓位时 | 
| > mmr | String | 币种维度全仓维持保证金 适用于 合约模式且有全仓仓位时 | 
| > interest | String | 计息,应扣未扣利息 值为正数,如 9.01适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > twap | String | 当前负债币种触发自动换币的风险 0、1、2、3、4、5其中之一,数字越大代表您的负债币种触发自动换币概率越高 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > frpType | String | 自动换币类型 0:未发生自动换币1:基于用户的自动换币2:基于平台借币限额的自动换币当twap>=1时返回1或2代表自动换币风险类型,适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > maxLoan | String | 币种最大可借 适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓 | 
| > eqUsd | String | 币种权益美金价值 | 
| > borrowFroz | String | 币种美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| > notionalLever | String | 币种杠杆倍数 适用于 合约模式 | 
| > stgyEq | String | 策略权益 | 
| > isoUpl | String | 逐仓未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > spotInUseAmt | String | 现货对冲占用数量 适用于 组合保证金模式 | 
| > clSpotInUseAmt | String | 用户自定义现货占用数量 适用于 组合保证金模式 | 
| > maxSpotInUse | String | 系统计算得到的最大可能现货占用数量 适用于 组合保证金模式 | 
| > spotIsoBal | String | 现货逐仓余额 仅适用于现货带单/跟单 适用于 现货模式/合约模式 | 
| > smtSyncEq | String | 合约智能跟单权益 默认为0,仅适用于跟单人。 | 
| > spotCopyTradingEq | String | 现货智能跟单权益 默认为0,仅适用于跟单人。 | 
| > spotBal | String | 现货余额 ,单位为 币种,比如 BTC。详情 | 
| > openAvgPx | String | 现货开仓成本价 单位 USD。 详情 | 
| > accAvgPx | String | 现货累计成本价 单位 USD。 详情 | 
| > spotUpl | String | 现货未实现收益,单位 USD。 详情 | 
| > spotUplRatio | String | 现货未实现收益率。详情 | 
| > totalPnl | String | 现货累计收益,单位 USD。 详情 | 
| > totalPnlRatio | String | 现货累计收益率。详情 | 
| > colRes | String | 平台维度质押限制状态 0:限制未触发1:限制未触发,但该币种接近平台质押上限2:限制已触发。该币种不可用作新订单的保证金,这可能会导致下单失败。但它仍会被计入账户有效保证金,保证金率不会收到影响。更多详情,请参阅平台总质押借币上限说明。 | 
| > colBorrAutoConversion | String | 基于平台质押借币限额的自动换币风险指标。分为1-5多个等级,数字越大,触发自动换币的可能性越大。默认值为0,表示当前无风险。5表示该用户正在进行自动换币,4代表该用户即将被进行自动换币,1/2/3表示存在自动换币风险。 适用于 现货模式/合约模式/跨币种保证金模式/组合保证金模式当某币种的全平台质押借币量超出平台总上限一定比例时,对于质押该币种且借币量较大的用户,平台将通过自动换币降低质押借币风险。请减少该币种的质押数量或偿还负债,以降低风险。 更多详情,请参阅平台总质押借币上限说明。 | 
| > collateralRestrict | Boolean | truefalse | 
| > collateralEnabled | Boolean | true:质押币false:非质押币适用于`跨币种保证金模式 | 
| > autoLendStatus | String | 自动借出状态 unsupported:该币种不支持自动借出off:自动借出功能关闭pending:自动借出功能开启但未匹配active:自动借出功能开启且已匹配 | 
| > autoLendMtAmt | String | 自动借出已匹配量 当 autoLendStatus 为 unsupported/off/pending时返回 0当 autoLendStatus 为 active时返回已匹配量 | 
- 更多字段详情,请参考以下产品文档:
 合约账户全仓交易规则
 跨币种保证金账户全仓交易规则
 跨币种保证金模式和组合保证金模式对比
各账户等级下有效字段分布
| 参数 | 现货模式 | 合约模式 | 跨币种保证金模式 | 组合保证金模式 | 
|---|---|---|---|---|
| uTime | 是 | 是 | 是 | 是 | 
| totalEq | 是 | 是 | 是 | 是 | 
| isoEq | 是 | 是 | 是 | |
| adjEq | 是 | 是 | 是 | |
| availEq | 是 | 是 | ||
| ordFroz | 是 | 是 | 是 | |
| imr | 是 | 是 | 是 | |
| mmr | 是 | 是 | 是 | |
| borrowFroz | 是 | 是 | 是 | |
| mgnRatio | 是 | 是 | 是 | |
| notionalUsd | 是 | 是 | 是 | |
| notionalUsdForSwap | 是 | 是 | ||
| notionalUsdForFutures | 是 | 是 | ||
| notionalUsdForOption | 是 | 是 | 是 | |
| notionalUsdForBorrow | 是 | 是 | 是 | |
| upl | 是 | 是 | ||
| details | ||||
| > ccy | 是 | 是 | 是 | 是 | 
| > eq | 是 | 是 | 是 | 是 | 
| > cashBal | 是 | 是 | 是 | 是 | 
| > uTime | 是 | 是 | 是 | 是 | 
| > isoEq | 是 | 是 | 是 | |
| > availEq | 是 | 是 | 是 | |
| > disEq | 是 | 是 | 是 | |
| > availBal | 是 | 是 | 是 | 是 | 
| > frozenBal | 是 | 是 | 是 | 是 | 
| > ordFrozen | 是 | 是 | 是 | 是 | 
| > liab | 是 | 是 | 是 | |
| > upl | 是 | 是 | 是 | |
| > uplLiab | 是 | 是 | ||
| > crossLiab | 是 | 是 | 是 | |
| > isoLiab | 是 | 是 | ||
| > mgnRatio | 是 | |||
| > interest | 是 | 是 | 是 | |
| > twap | 是 | 是 | 是 | |
| > maxLoan | 是 | 是 | 是 | |
| > eqUsd | 是 | 是 | 是 | 是 | 
| > borrowFroz | 是 | 是 | 是 | |
| > notionalLever | 是 | |||
| > stgyEq | 是 | 是 | 是 | 是 | 
| > isoUpl | 是 | 是 | 是 | |
| > spotInUseAmt | 是 | |||
| > spotIsoBal | 是 | 是 | ||
| > imr | 是 | |||
| > mmr | 是 | |||
| > spotBal | 是 | 是 | 是 | 是 | 
| > openAvgPx | 是 | 是 | 是 | 是 | 
| > accAvgPx | 是 | 是 | 是 | 是 | 
| > spotUpl | 是 | 是 | 是 | 是 | 
| > spotUplRatio | 是 | 是 | 是 | 是 | 
| > totalPnl | 是 | 是 | 是 | 是 | 
| > totalPnlRatio | 是 | 是 | 是 | 是 | 
| > collateralEnabled | 是 | 
查看持仓信息
获取该账户下拥有实际持仓的信息。账户为买卖模式会显示净持仓(net),账户为开平仓模式下会分别返回开多(long)或开空(short)的仓位。按照仓位创建时间倒序排列。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/positions
请求示例
# 查看BTC-USDT的持仓信息
GET /api/v5/account/positions?instId=BTC-USDT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看持仓信息
result = accountAPI.get_positions()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权instType和instId同时传入的时候会校验instId与instType是否一致。 | 
| instId | String | 否 | 交易产品ID,如: BTC-USDT-SWAP支持多个 instId查询(不超过10个),半角逗号分隔 | 
| posId | String | 否 | 持仓ID 支持多个 posId查询(不超过20个)。存在有效期的属性,自最近一次完全平仓算起,满30天 posId 以及整个仓位会被清除。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adl": "1",
            "availPos": "0.00190433573",
            "avgPx": "62961.4",
            "baseBal": "",
            "baseBorrowed": "",
            "baseInterest": "",
            "bePx": "",
            "bizRefId": "",
            "bizRefType": "",
            "cTime": "1724740225685",
            "ccy": "BTC",
            "clSpotInUseAmt": "",
            "closeOrderAlgo": [],
            "deltaBS": "",
            "deltaPA": "",
            "fee": "",
            "fundingFee": "",
            "gammaBS": "",
            "gammaPA": "",
            "idxPx": "62890.5",
            "imr": "",
            "instId": "BTC-USDT",
            "instType": "MARGIN",
            "interest": "0",
            "last": "62892.9",
            "lever": "5",
            "liab": "-99.9998177776581948",
            "liabCcy": "USDT",
            "liqPenalty": "",
            "liqPx": "53615.448336593756",
            "margin": "0.000317654",
            "markPx": "62891.9",
            "maxSpotInUseAmt": "",
            "mgnMode": "isolated",
            "mgnRatio": "9.404143929947395",
            "mmr": "0.0000318005395854",
            "notionalUsd": "119.756628017499",
            "optVal": "",
            "pendingCloseOrdLiabVal": "0",
            "pnl": "",
            "pos": "0.00190433573",
            "posCcy": "BTC",
            "posId": "1752810569801498626",
            "posSide": "net",
            "quoteBal": "",
            "quoteBorrowed": "",
            "quoteInterest": "",
            "realizedPnl": "",
            "spotInUseAmt": "",
            "spotInUseCcy": "",
            "thetaBS": "",
            "thetaPA": "",
            "tradeId": "785524470",
            "uTime": "1724742632153",
            "upl": "-0.0000033452492717",
            "uplLastPx": "-0.0000033199677697",
            "uplRatio": "-0.0105311101755551",
            "uplRatioLastPx": "-0.0104515220008934",
            "usdPx": "",
            "vegaBS": "",
            "vegaPA": "",
            "nonSettleAvgPx":"",
            "settledPnl":""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| posId | String | 持仓ID | 
| posSide | String | 持仓方向 long:开平仓模式开多,pos为正short:开平仓模式开空,pos为正net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆时,pos均为正,posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。) | 
| pos | String | 持仓数量,逐仓自主划转模式下,转入保证金后会产生pos为 0的仓位 | 
| baseBal | String | 币币杠杆(逐仓一键借币模式) | 
| quoteBal | String | 币币杠杆(逐仓一键借币模式) | 
| baseBorrowed | String | 币币杠杆(逐仓一键借币模式) | 
| baseInterest | String | 币币杠杆(逐仓一键借币模式) | 
| quoteBorrowed | String | 币币杠杆(逐仓一键借币模式) | 
| quoteInterest | String | 币币杠杆(逐仓一键借币模式) | 
| posCcy | String | 仓位资产币种,仅适用于 币币杠杆仓位 | 
| availPos | String | 可平仓数量,适用于 币币杠杆,期权对于杠杆仓位,平仓时,杠杆还清负债后,余下的部分会视为币币交易,如果想要减少币币交易的数量,可通过"获取最大可用数量"接口获取只减仓的可用数量。 | 
| avgPx | String | 开仓均价 会随结算周期变化,特别是在交割合约全仓模式下,结算时开仓均价会更新为结算价格,同时新增头寸也会改变开仓均价。 | 
| nonSettleAvgPx | String | 未结算均价 不受结算影响的加权开仓价格,仅在新增头寸时更新,和开仓均价的主要区别在于是否受到结算影响。 仅适用于 全仓交割 | 
| upl | String | 未实现收益(以标记价格计算) | 
| uplRatio | String | 未实现收益率(以标记价格计算 | 
| uplLastPx | String | 以最新成交价格计算的未实现收益,主要做展示使用,实际值还是 upl | 
| uplRatioLastPx | String | 以最新成交价格计算的未实现收益率 | 
| instId | String | 产品ID,如 BTC-USDT-SWAP | 
| lever | String | 杠杆倍数,不适用于 期权以及组合保证金模式下的全仓仓位 | 
| liqPx | String | 预估强平价 不适用于 期权 | 
| markPx | String | 最新标记价格 | 
| imr | String | 初始保证金,仅适用于 全仓 | 
| margin | String | 保证金余额,可增减,仅适用于 逐仓 | 
| mgnRatio | String | 维持保证金率 | 
| mmr | String | 维持保证金 | 
| liab | String | 负债额,仅适用于 币币杠杆 | 
| liabCcy | String | 负债币种,仅适用于 币币杠杆 | 
| interest | String | 利息,已经生成的未扣利息 | 
| tradeId | String | 最新成交ID | 
| optVal | String | 期权市值,仅适用于 期权 | 
| pendingCloseOrdLiabVal | String | 逐仓杠杆负债对应平仓挂单的数量 | 
| notionalUsd | String | 以美金价值为单位的持仓数量 | 
| adl | String | 自动减仓信号区 分为6档,从0到5,数字越小代表adl强度越弱 仅适用于 交割/永续/期权 | 
| ccy | String | 占用保证金的币种 | 
| last | String | 最新成交价 | 
| idxPx | String | 最新指数价格 | 
| usdPx | String | 保证金币种的市场最新美金价格 仅适用于 期权 | 
| bePx | String | 盈亏平衡价 | 
| deltaBS | String | 美金本位持仓仓位delta,仅适用于 期权 | 
| deltaPA | String | 币本位持仓仓位delta,仅适用于 期权 | 
| gammaBS | String | 美金本位持仓仓位gamma,仅适用于 期权 | 
| gammaPA | String | 币本位持仓仓位gamma,仅适用于 期权 | 
| thetaBS | String | 美金本位持仓仓位theta,仅适用于 期权 | 
| thetaPA | String | 币本位持仓仓位theta,仅适用于 期权 | 
| vegaBS | String | 美金本位持仓仓位vega,仅适用于 期权 | 
| vegaPA | String | 币本位持仓仓位vega,仅适用于 期权 | 
| spotInUseAmt | String | 现货对冲占用数量 适用于 组合保证金模式 | 
| spotInUseCcy | String | 现货对冲占用币种,如 BTC适用于 组合保证金模式 | 
| clSpotInUseAmt | String | 用户自定义现货占用数量 适用于 组合保证金模式 | 
| maxSpotInUseAmt | String | 系统计算得到的最大可能现货占用数量 适用于 组合保证金模式 | 
| realizedPnl | String | 已实现收益 仅适用于 交割/永续/期权realizedPnl=pnl+fee+fundingFee+liqPenalty+settledPnl | 
| settledPnl | String | 已结算收益 仅适用于 全仓交割 | 
| pnl | String | 平仓订单累计收益额(不包括手续费) | 
| fee | String | 累计手续费金额,正数代表平台返佣 ,负数代表平台扣除 | 
| fundingFee | String | 累计资金费用 | 
| liqPenalty | String | 累计爆仓罚金,有值时为负数。 | 
| closeOrderAlgo | Array of objects | 平仓策略委托订单。调用策略委托下单,且 closeFraction=1 时,该数组才会有值。 | 
| > algoId | String | 策略委托单ID | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% | 
| cTime | String | 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 最近一次持仓更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| bizRefId | String | 外部业务id,如 体验券id | 
| bizRefType | String | 外部业务类型 | 
查看历史持仓信息
获取最近3个月有更新的仓位信息,按照仓位更新时间倒序排列。于2024年11月11日中午12:00(UTC+8)开始支持组合保证金账户模式下的历史持仓。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/positions-history
请求示例
GET /api/v5/account/positions-history
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看历史持仓信息
result = accountAPI.get_positions_history()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 否 | 交易产品ID,如: BTC-USD-SWAP | 
| mgnMode | String | 否 | 保证金模式 cross:全仓,isolated:逐仓 | 
| type | String | 否 | 最近一次平仓的类型 1:部分平仓;2:完全平仓;3:强平;4:强减;5:ADL自动减仓 - 仓位未完全平仓;6:ADL自动减仓 - 仓位完全平仓状态叠加时,以最新的平仓类型为准状态为准。 | 
| posId | String | 否 | 持仓ID。存在有效期的属性,自最近一次完全平仓算起,满30天 posId 会失效,之后的仓位,会使用新的 posId。 | 
| after | String | 否 | 查询仓位更新 (uTime) 之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询仓位更新 (uTime) 之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回结果的数量,最大为100,默认100条,uTime 相同的记录均会在当前请求中全部返回 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "cTime": "1654177169995",
            "ccy": "BTC",
            "closeAvgPx": "29786.5999999789081085",
            "closeTotalPos": "1",
            "instId": "BTC-USD-SWAP",
            "instType": "SWAP",
            "lever": "10.0",
            "mgnMode": "cross",
            "openAvgPx": "29783.8999999995535393",
            "openMaxPos": "1",
            "realizedPnl": "0.001",
            "fee": "-0.0001",
            "fundingFee": "0",
            "liqPenalty": "0",
            "pnl": "0.0011",
            "pnlRatio": "0.000906447858888",
            "posId": "452587086133239818",
            "posSide": "long",
            "direction": "long",
            "triggerPx": "",
            "type": "1",
            "uTime": "1654177174419",
            "uly": "BTC-USD",
            "nonSettleAvgPx":"",
            "settledPnl":""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 交易产品ID | 
| mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| type | String | 最近一次平仓的类型 1:部分平仓2:完全平仓3:强平4:强减5:ADL自动减仓状态叠加时,以最新的平仓类型为准状态为准。 | 
| cTime | String | 仓位创建时间 | 
| uTime | String | 仓位更新时间 | 
| openAvgPx | String | 开仓均价 会随结算周期变化,特别是在交割合约全仓模式下,结算时开仓均价会更新为结算价格,同时新增头寸也会改变开仓均价。 | 
| nonSettleAvgPx | String | 未结算均价 不受结算影响的加权开仓价格,仅在新增头寸时更新,和开仓均价的主要区别在于是否受到结算影响。 仅适用于 全仓交割 | 
| closeAvgPx | String | 平仓均价 | 
| posId | String | 仓位ID | 
| openMaxPos | String | 最大持仓量 | 
| closeTotalPos | String | 累计平仓量 | 
| realizedPnl | String | 已实现收益 仅适用于 交割/永续/期权realizedPnl=pnl+fee+fundingFee+liqPenalty+settledPnl | 
| settledPnl | String | 已实现收益 仅适用于 全仓交割 | 
| pnlRatio | String | 已实现收益率 | 
| fee | String | 累计手续费金额 正数代表平台返佣,负数代表平台扣除。 | 
| fundingFee | String | 累计资金费用 | 
| liqPenalty | String | 累计爆仓罚金,有值时为负数。 | 
| pnl | String | 已实现收益(不包括手续费) | 
| posSide | String | 持仓模式方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| lever | String | 杠杆倍数 | 
| direction | String | 持仓方向 long:多short:空仅适用于 杠杆/交割/永续/期权 | 
| triggerPx | String | 触发标记价格 type为3,4,5时有值;为1,2时为空 | 
| uly | String | 标的指数 | 
| ccy | String | 占用保证金的币种 | 
查看账户持仓风险
查看账户整体风险。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/account-position-risk
请求示例
GET /api/v5/account/account-position-risk
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户特定风险状态
result = accountAPI.get_account_position_risk()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
返回结果
{
    "code":"0",
    "data":[
        {
            "adjEq":"174238.6793649711331679",
            "balData":[
                {
                    "ccy":"BTC",
                    "disEq":"78846.7803721021362242",
                    "eq":"1.3863533369419636"
                },
                {
                    "ccy":"USDT",
                    "disEq":"73417.2495112863300127",
                    "eq":"73323.395564963177146"
                }
            ],
            "posData":[
                {
                    "baseBal": "0.4",
                    "ccy": "",
                    "instId": "BTC-USDT",
                    "instType": "MARGIN",
                    "mgnMode": "isolated",
                    "notionalCcy": "0",
                    "notionalUsd": "0",
                    "pos": "0",
                    "posCcy": "",
                    "posId": "310388685292318723",
                    "posSide": "net",
                    "quoteBal": "0"
                }
            ],
            "ts":"1620282889345"
        }
    ],
    "msg":""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 获取账户信息数据的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| adjEq | String | 美金层面有效保证金 适用于 跨币种保证金模式和组合保证金模式 | 
| balData | Array of objects | 币种资产信息 | 
| > ccy | String | 币种 | 
| > eq | String | 币种总权益 | 
| > disEq | String | 美金层面币种折算权益 | 
| posData | Array of objects | 持仓详细信息 | 
| > instType | String | 产品类型 | 
| > mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| > posId | String | 持仓ID | 
| > instId | String | 产品ID,如 BTC-USDT-SWAP | 
| > pos | String | 以 张为单位的持仓数量,逐仓自主划转模式下,转入保证金后会产生pos为0的仓位 | 
| > baseBal | String | 币币杠杆(逐仓一键借币模式) | 
| > quoteBal | String | 币币杠杆(逐仓一键借币模式) | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。) | 
| > posCcy | String | 仓位资产币种,仅适用于 币币杠杆仓位 | 
| > ccy | String | 占用保证金的币种 | 
| > notionalCcy | String | 以 币为单位的持仓数量 | 
| > notionalUsd | String | 以 美金价值为单位的持仓数量 | 
账单流水查询(近七天)
帐户资产流水是指导致帐户余额增加或减少的行为。本接口可以查询最近7天的账单数据。
限速:5次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/bills
请求示例
GET /api/v5/account/bills
GET /api/v5/account/bills?instType=MARGIN
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户账单详情 (近七日内)
result = accountAPI.get_account_bills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| ccy | String | 否 | 账单币种 | 
| mgnMode | String | 否 | 仓位类型 isolated:逐仓cross:全仓 | 
| ctType | String | 否 | 合约类型 linear:正向合约inverse:反向合约仅 交割/永续有效 | 
| type | String | 否 | 账单类型 1:划转2:交易3:交割4:自动换币5:强平6:保证金划转7:扣息8:资金费9:自动减仓10:穿仓补偿11:系统换币12:策略划拨13:对冲减仓14:大宗交易15:一键借币16:借币22:一键还债24:价差交易26:结构化产品27:闪兑28:小额兑换29:一键还债30:简单交易32:移仓33:借贷34:结算250:跟单人分润支出251:跟单人分润退还 | 
| subType | String | 否 | 账单子类型 1:买入2:卖出3:开多4:开空5:平多6:平空9:市场借币扣息11:转入12:转出14:尊享借币扣息160:手动追加保证金161:手动减少保证金162:自动追加保证金114:自动换币买入115:自动换币卖出118:系统换币转入119:系统换币转出100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出108:穿仓补偿110:强平换币转入111:强平换币转出125:自动减仓平多126:自动减仓平空127:自动减仓买入128:自动减仓卖出131:对冲买入132:对冲卖出170:到期行权(实值期权买方)171:到期被行权(实值期权卖方)172:到期作废(非实值期权的买方和卖方)112:交割平多 (适用于FUTURES过期和SWAP下线)113:交割平空 (适用于FUTURES过期和SWAP下线)117:交割/行权穿仓补偿173:资金费支出174:资金费收入200:系统转入201:手动转入202:系统转出203:手动转出204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空210:一键借币的手动借币211:一键借币的手动还币212:一键借币的自动借币213:一键借币的自动还币220:USDT 买期权转入221:USDT 买期权转出16:强制还币17:强制借币还息224:一键还债买入225:一键还债卖出236:小额兑换买入237:小额兑换卖出250:永续分润支出251:永续分润退还280:现货分润支出281:现货分润退还282:现货分润收入283:现货跟单资产划转284:跟单自动转入285:跟单手动转入286:跟单自动转出287:跟单手动转出270:价差交易买271:价差交易卖272:价差交易开多273:价差交易开空274:价差交易平多275:价差交易平空290:系统转出小额资产293:固定借币扣息294:固定借币利息退款295:固定借币逾期利息296:结构化下单转出297:结构化下单转入298:结构化结算转出299:结构化结算转入306:手动借币307:自动借币308:手动还币309:自动还币312:自动折抵318:闪兑买入319:闪兑卖出320:简单交易买入321:简单交易卖出324:移仓买入325:移仓卖出326:移仓开多327:移仓开空328:移仓平多329:移仓平空332:逐仓杠杆仓位转入保证金333:逐仓杠杆仓位转出保证金334:逐仓杆仓位保证金平仓消耗355:结算盈亏376:质押借币超限买入377: 质押借币超限卖出381:自动出借利息转入372:策略空投转入373:策略空投转出374:策略空投回收转入375:策略空投回收转出381:自动赚币(自动借出) | 
| 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":  "USDT",
        "clOrdId":  "",
        "earnAmt": "",
        "earnApr": "",
        "execType":  "T",
        "fee":  "-0.000021955779",
        "fillFwdPx":  "",
        "fillIdxPx":  "27104.1",
        "fillMarkPx":  "",
        "fillMarkVol":  "",
        "fillPxUsd":  "",
        "fillPxVol":  "",
        "fillTime":  "1695033476166",
        "from":  "",
        "instId":  "BTC-USDT",
        "instType":  "SPOT",
        "interest":  "0",
        "mgnMode":  "isolated",
        "notes":  "",
        "ordId":  "623950854525124608",
        "pnl":  "0",
        "posBal":  "0",
        "posBalChg":  "0",
        "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 | 账户层面的余额变动数量 | 
| posBalChg | String | 仓位层面的余额变动数量 | 
| bal | String | 账户层面的余额数量 | 
| posBal | String | 仓位层面的余额数量 | 
| sz | String | 数量 对于交割、永续以及期权,为成交或者持仓的数量,单位为张,总为正数。 其他情况下,单位为账户余额币种( ccy)。 | 
| px | String | 价格,与 subType 相关 1:买入2:卖出3:开多4:开空5:平多6:平空204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空114:自动换币买入115:自动换币卖出100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出16:强制还币17:强制借币还息110:强平换币转入111:强平换币转出112:交割平多113:交割平空170:到期行权171:到期被行权172:到期作废173:资金费支出174:资金费收入 | 
| ccy | String | 账户余额币种 | 
| pnl | String | 收益 | 
| fee | String | 手续费 正数代表平台返佣 ,负数代表平台扣除 手续费规则 | 
| earnAmt | String | 自动赚币数量 仅适用于type 381 | 
| earnApr | String | 自动赚币实际年利率 仅适用于type 381 | 
| mgnMode | String | 保证金模式 isolated:逐仓cross:全仓cash:非保证金如果账单不是由交易产生的,该字段返回 "" | 
| instId | String | 产品ID,如 BTC-USDT | 
| ordId | String | 订单ID 当type为 2/5/9时,返回相应订单id无订单时,该字段返回 "" | 
| execType | String | 流动性方向 T:takerM:maker | 
| from | String | 转出账户 6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" | 
| to | String | 转入账户 6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" | 
| notes | String | 备注 | 
| interest | String | 利息 | 
| tag | String | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| fillTime | String | 最新成交时间 | 
| tradeId | String | 最新成交ID | 
| clOrdId | String | 客户自定义订单ID | 
| fillIdxPx | String | 交易执行时的指数价格 d 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 例如 LTC-ETH,该字段返回 LTC-USDT 的指数价格。 | 
| fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| fillPxVol | String | 成交时的隐含波动率,仅适用于 期权,其他业务线返回空字符串"" | 
| fillPxUsd | String | 成交时的期权价格,以USD为单位,仅适用于期权,其他业务线返回空字符串"" | 
| fillMarkVol | String | 成交时的标记波动率,仅适用于期权,其他业务线返回空字符串"" | 
| fillFwdPx | String | 成交时的远期价格,仅适用于期权,其他业务线返回空字符串"" | 
账单流水查询(近三个月)
帐户资产流水是指导致帐户余额增加或减少的行为。本接口可以查询最近 3 个月的账单数据。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/bills-archive
请求示例
GET /api/v5/account/bills-archive
GET /api/v5/account/bills-archive?instType=MARGIN
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户账单详情 (近三个月内)
result = accountAPI.get_account_bills_archive()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| ccy | String | 否 | 账单币种 | 
| mgnMode | String | 否 | 仓位类型 isolated:逐仓cross:全仓 | 
| ctType | String | 否 | 合约类型 linear:正向合约inverse:反向合约仅 交割/永续有效 | 
| type | String | 否 | 账单类型 1:划转2:交易3:交割4:自动换币5:强平6:保证金划转7:扣息8:资金费9:自动减仓10:穿仓补偿11:系统换币12:策略划拨13:对冲减仓14:大宗交易15:一键借币16:借币22:一键还债24:价差交易26:结构化产品27:闪兑28:小额兑换29:一键还债30:简单交易32:移仓33:借贷34:结算250:跟单人分润支出251:跟单人分润退还 | 
| subType | String | 否 | 账单子类型 1:买入2:卖出3:开多4:开空5:平多6:平空9:市场借币扣息11:转入12:转出14:尊享借币扣息160:手动追加保证金161:手动减少保证金162:自动追加保证金114:自动换币买入115:自动换币卖出118:系统换币转入119:系统换币转出100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出108:穿仓补偿110:强平换币转入111:强平换币转出125:自动减仓平多126:自动减仓平空127:自动减仓买入128:自动减仓卖出131:对冲买入132:对冲卖出170:到期行权(实值期权买方)171:到期被行权(实值期权卖方)172:到期作废(非实值期权的买方和卖方)112:交割平多 (适用于FUTURES过期和SWAP下线)113:交割平空 (适用于FUTURES过期和SWAP下线)117:交割/行权穿仓补偿173:资金费支出174:资金费收入200:系统转入201:手动转入202:系统转出203:手动转出204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空210:一键借币的手动借币211:一键借币的手动还币212:一键借币的自动借币213:一键借币的自动还币220:USDT 买期权转入221:USDT 买期权转出16:强制还币17:强制借币还息224:一键还债买入225:一键还债卖出236:小额兑换买入237:小额兑换卖出250:永续分润支出251:永续分润退还280:现货分润支出281:现货分润退还282:现货分润收入283:现货跟单资产划转284:跟单自动转入285:跟单手动转入286:跟单自动转出287:跟单手动转出270:价差交易买271:价差交易卖272:价差交易开多273:价差交易开空274:价差交易平多275:价差交易平空290:系统转出小额资产293:固定借币扣息294:固定借币利息退款295:固定借币逾期利息296:结构化下单转出297:结构化下单转入298:结构化结算转出299:结构化结算转入306:手动借币307:自动借币308:手动还币309:自动还币312:自动折抵318:闪兑买入319:闪兑卖出320:简单交易买入321:简单交易卖出324:移仓买入325:移仓卖出326:移仓开多327:移仓开空328:移仓平多329:移仓平空332:逐仓杠杆仓位转入保证金333:逐仓杠杆仓位转出保证金334:逐仓杆仓位保证金平仓消耗355:结算盈亏376:质押借币超限买入377: 质押借币超限卖出381:自动出借利息转入372:策略空投转入373:策略空投转出374:策略空投回收转入375:策略空投回收转出381:自动赚币(自动借出) | 
| 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": "USDT",
        "clOrdId": "",
        "earnAmt": "",
        "earnApr": "",
        "execType": "T",
        "fee": "-0.000021955779",
        "fillFwdPx": "",
        "fillIdxPx": "27104.1",
        "fillMarkPx": "",
        "fillMarkVol": "",
        "fillPxUsd": "",
        "fillPxVol": "",
        "fillTime": "1695033476166",
        "from": "",
        "instId": "BTC-USDT",
        "instType": "SPOT",
        "interest": "0",
        "mgnMode": "isolated",
        "notes": "",
        "ordId": "623950854525124608",
        "pnl": "0",
        "posBal": "0",
        "posBalChg": "0",
        "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 | 账户层面的余额变动数量 | 
| posBalChg | String | 仓位层面的余额变动数量 | 
| bal | String | 账户层面的余额数量 | 
| posBal | String | 仓位层面的余额数量 | 
| sz | String | 数量 对于交割、永续以及期权,为成交或者持仓的数量,单位为张,总为正数。 其他情况下,单位为账户余额币种( ccy)。 | 
| px | String | 价格,与 subType 相关 1:买入2:卖出3:开多4:开空5:平多6:平空204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空114:自动换币买入115:自动换币卖出100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出16:强制还币17:强制借币还息110:强平换币转入111:强平换币转出112:交割平多113:交割平空170:到期行权171:到期被行权172:到期作废173:资金费支出174:资金费收入 | 
| ccy | String | 账户余额币种 | 
| pnl | String | 收益 | 
| fee | String | 手续费 正数代表平台返佣 ,负数代表平台扣除 手续费规则 | 
| earnAmt | String | 自动赚币数量 仅适用于type 381 | 
| earnApr | String | 自动赚币实际年利率 仅适用于type 381 | 
| mgnMode | String | 保证金模式 isolated:逐仓cross:全仓cash:非保证金如果账单不是由交易产生的,该字段返回 "" | 
| instId | String | 产品ID,如 BTC-USDT | 
| ordId | String | 订单ID 当type为 2/5/9时,返回相应订单id无订单时,该字段返回 "" | 
| execType | String | 流动性方向 T:takerM:maker | 
| from | String | 转出账户 6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" | 
| to | String | 转入账户 6:资金账户18:交易账户仅适用于 资金划转,不是资金划转时,返回 "" | 
| notes | String | 备注 | 
| interest | String | 利息 | 
| tag | String | 订单标签 | 
| fillTime | String | 最新成交时间 | 
| tradeId | String | 最新成交ID | 
| clOrdId | String | 客户自定义订单ID | 
| fillIdxPx | String | 交易执行时的指数价格 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 例 LTC-ETH,该字段返回 LTC-USDT 的指数价格。 | 
| fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| fillPxVol | String | 成交时的隐含波动率,仅适用于 期权,其他业务线返回空字符串"" | 
| fillPxUsd | String | 成交时的期权价格,以USD为单位,仅适用于 期权,其他业务线返回空字符串"" | 
| fillMarkVol | String | 成交时的标记波动率,仅适用于 期权,其他业务线返回空字符串"" | 
| fillFwdPx | String | 成交时的远期价格,仅适用于 期权,其他业务线返回空字符串"" | 
申请账单流水(自 2021 年)
申请自 2021 年 2 月 1 日以来的账单数据,不包括当前季度。
限速:12 次/天
限速规则:User ID
权限:读取
HTTP 请求
POST /api/v5/account/bills-history-archive
请求示例
POST /api/v5/account/bills-history-archive
body
{
    "year":"2023",
    "quarter":"Q1"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| year | String | 是 | 4位数字的年份,如 2023 | 
| quarter | String | 是 | 季度,有效值 Q1Q2Q3Q4 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "result": "true",
            "ts": "1646892328000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | String | 是否已经存在该区间的下载链接 true:已存在,可以通过"获取账单流水(自 2021 年)"接口获取false:不存在,正在生成,请 2 个小时后查看下载链接 | 
| ts | String | 服务端首次收到请求的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取账单流水(自 2021 年)
获取自 2021 年 2 月 1 日以来的账单数据
限速:10 次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/account/bills-history-archive
请求示例
GET /api/v5/account/bills-history-archive?year=2023&quarter=Q4
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| year | String | 是 | 4位数字的年份,如 2023 | 
| quarter | String | 是 | 季度,有效值 Q1Q2Q3Q4 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fileHref": "http://xxx",
            "state": "finished",
            "ts": "1646892328000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fileHref | String | 文件链接。 每个链接的有效期为 5 个半小时,如果已经申请过同一季度的数据,则30天内无需再次申请。 | 
| ts | String | 服务端首次收到请求的时间,Unix时间戳的毫秒数格式 ,如 1597026383085 | 
| state | String | 下载链接状态 finished:已生成ongoing:进行中failed:生成失败,请重新生成 | 
解压后CSV里的字段说明
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| billId | String | 账单ID | 
| subType | String | 账单子类型 | 
| ts | String | 余额更新完成的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| balChg | String | 账户层面的余额变动数量 | 
| posBalChg | String | 仓位层面的余额变动数量 | 
| bal | String | 账户层面的余额数量 | 
| posBal | String | 仓位层面的余额数量 | 
| sz | String | 数量 | 
| px | String | 价格,与 subType 相关 1:买入2:卖出3:开多4:开空5:平多6:平空204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空114:自动换币买入115:自动换币卖出100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出16:强制还币17:强制借币还息110:强平换币转入111:强平换币转出112:交割平多113:交割平空170:到期行权171:到期被行权172:到期作废173:资金费支出174:资金费收入 | 
| ccy | String | 账户余额币种 | 
| pnl | String | 收益 | 
| fee | String | 手续费 正数代表平台返佣 ,负数代表平台扣除 手续费规则 | 
| mgnMode | String | 保证金模式 isolated:逐仓cross:全仓cash:非保证金如果账单不是由交易产生的,该字段返回 "" | 
| instId | String | 产品ID,如 BTC-USDT | 
| ordId | String | 订单ID 无订单时,该字段返回 "" | 
| execType | String | 流动性方向 T:takerM:maker | 
| interest | String | 利息 | 
| tag | String | 订单标签 | 
| fillTime | String | 最新成交时间 | 
| tradeId | String | 最新成交ID | 
| clOrdId | String | 客户自定义订单ID | 
| fillIdxPx | String | 交易执行时的指数价格 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 例 LTC-ETH,该字段返回 LTC-USDT 的指数价格。 | 
| fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| fillPxVol | String | 成交时的隐含波动率,仅适用于 期权,其他业务线返回空字符串"" | 
| fillPxUsd | String | 成交时的期权价格,以USD为单位,仅适用于 期权,其他业务线返回空字符串"" | 
| fillMarkVol | String | 成交时的标记波动率,仅适用于 期权,其他业务线返回空字符串"" | 
| fillFwdPx | String | 成交时的远期价格,仅适用于 期权,其他业务线返回空字符串"" | 
查看账户配置
查看当前账户的配置信息。
限速:5次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户配置
result = accountAPI.get_account_config()
print(result)
请求参数
无
返回结果
{
    "code": "0",
    "data": [
        {
            "acctLv": "2",
            "acctStpMode": "cancel_maker",
            "autoLoan": false,
            "ctIsoMode": "automatic",
            "enableSpotBorrow": false,
            "greeksType": "PA",
            "feeType": "0",
            "ip": "",
            "type": "0",
            "kycLv": "3",
            "label": "v5 test",
            "level": "Lv1",
            "levelTmp": "",
            "liquidationGear": "-1",
            "mainUid": "44705892343619584",
            "mgnIsoMode": "automatic",
            "opAuth": "1",
            "perm": "read_only,withdraw,trade",
            "posMode": "long_short_mode",
            "roleType": "0",
            "spotBorrowAutoRepay": false,
            "spotOffsetType": "",
            "spotRoleType": "0",
            "spotTraderInsts": [],
            "traderInsts": [],
            "uid": "44705892343619584",
            "settleCcy": "USDC",
            "settleCcyList": ["USD", "USDC", "USDG"]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uid | String | 当前请求的账户ID,账户uid和app上的一致 | 
| mainUid | String | 当前请求的母账户ID 如果 uid = mainUid,代表当前账号为母账户;如果 uid != mainUid,代表当前账户为子账户。 | 
| acctLv | String | 账户模式 1:现货模式2:合约模式3:跨币种保证金模式4:组合保证金模式 | 
| acctStpMode | String | 账户自成交保护模式 cancel_maker:撤销挂单cancel_taker:撤销吃单cancel_both:撤销挂单和吃单默认为 cancel_maker,用户可通过母账户登录网页修改该配置 | 
| posMode | String | 持仓方式 long_short_mode:开平仓模式net_mode:买卖模式仅适用 交割/永续 | 
| autoLoan | Boolean | 是否自动借币 true:自动借币false:非自动借币 | 
| greeksType | String | 当前希腊字母展示方式 PA:币本位BS:美元本位 | 
| feeType | String | 手续费类型 0:手续费以获取币种收取1:手续费以计价币种收取 | 
| level | String | 当前在平台上真实交易量的用户等级,如 Lv1,代表普通用户等级。 | 
| levelTmp | String | 特约用户的临时体验用户等级,如 Lv1 | 
| ctIsoMode | String | 衍生品的逐仓保证金划转模式 automatic:开仓划转autonomy:自主划转 | 
| spotOffsetType | String | 1:现货对冲模式U模式2:现货对冲模式币模式3:非现货对冲模式适用于 组合保证金模式已废弃 | 
| roleType | String | 用户角色 0:普通用户1:带单者2:跟单者 | 
| traderInsts | Array of strings | 当前账号已经设置的带单合约,仅适用于带单者 | 
| spotRoleType | String | 现货跟单角色。 0:普通用户;1:带单者;2:跟单者 | 
| spotTraderInsts | Array of strings | 当前账号已经设置的带单币对,仅适用于带单者 | 
| opAuth | String | 是否开通期权交易 0:未开通1:已经开通 | 
| kycLv | String | 母账户KYC等级 0: 未认证1: 已完成 level 1 认证2: 已完成 level 2 认证3: 已完成 level 3认证如果请求来自子账户, kycLv 为其母账户的等级 如果请求来自母账户, kycLv 为当前请求的母账户等级 | 
| 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:提币 | 
| liquidationGear | String | 强平提醒的维持保证金率水平 3和-1代表维持保证金率达到 300% 时,每隔 1 小时 app 和 ”爆仓风险预警推送频道“会推送通知。-1是初始值,与-3有着同样效果0代表不提醒 | 
| enableSpotBorrow | Boolean | 现货模式下是否支持借币true:支持false:不支持 | 
| spotBorrowAutoRepay | Boolean | 现货模式下是否支持自动还币true:支持false:不支持 | 
| type | String | 账户类型 0:母账户1:普通子账户2:资管子账户5:托管交易子账户 - Copper9:资管交易子账户 - Copper12:托管交易子账户 - Komainu | 
| settleCcy | String | 当前账户的 USD 本位合约结算币种 | 
| settleCcyList | String | 当前账户的 USD 本位合约结算币种列表,如 ["USD", "USDC", "USDG"]。 | 
设置持仓模式
合约模式和跨币种保证金模式:交割和永续合约支持开平仓模式和买卖模式。买卖模式只会有一个方向的仓位;开平仓模式可以分别持有多、空2个方向的仓位。
组合保证金模式:交割和永续仅支持买卖模式
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-position-mode
请求示例
POST /api/v5/account/set-position-mode
body 
{
    "posMode":"long_short_mode"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 设置持仓模式
result = accountAPI.set_position_mode(
    posMode="long_short_mode"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| posMode | String | 是 | 持仓方式 long_short_mode:开平仓模式net_mode:买卖模式仅适用 交割/永续 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "posMode": "long_short_mode"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| posMode | String | 持仓方式 | 
设置杠杆倍数
一个产品可以有如下10种杠杆倍数的设置场景:
- 在逐仓交易模式下,设置币币杠杆的杠杆倍数(币对层面);
- 现货模式账户已开通借币功能,在- 全仓交易模式下,设置- 币币杠杆的杠杆倍数(币种层面);
- 合约模式账户在- 全仓交易模式下,设置- 币币杠杆的杠杆倍数(币对层面);
- 跨币种保证金模式账户在- 全仓交易模式下,设置- 币币杠杆的杠杆倍数(币种层面);
- 组合保证金模式账户在- 全仓交易模式下,设置- 币币杠杆的杠杆倍数(币种层面);
- 在全仓交易模式下,设置交割的杠杆倍数(指数层面);
- 在逐仓交易模式、买卖持仓模式下,设置交割的杠杆倍数(合约层面);
- 在逐仓交易模式、开平仓持仓模式下,设置交割的杠杆倍数(合约与持仓方向层面);
- 在全仓交易模式下,设置永续的杠杆倍数(合约层面);
- 在逐仓交易模式、买卖持仓模式下,设置永续的杠杆倍数(合约层面);
- 在逐仓交易模式、开平仓持仓模式下,设置永续的杠杆倍数(合约与持仓方向层面);
注意请求参数 posSide 仅在交割/永续的开平仓持仓模式下才需要填写(参见场景8和11)。
请参阅右侧对应的每个案例的请求示例。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-leverage
请求示例
# 1.在`逐仓`交易模式下,设置`币币杠杆`的杠杆倍数(币对层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT",
    "lever":"5",
    "mgnMode":"isolated"
}
# 2.`现货模式`账户已开通借币功能,在`全仓`交易模式下,设置`币币杠杆`的杠杆倍数(币种层面)
POST /api/v5/account/set-leverage
body
{
    "ccy":"BTC",
    "lever":"5",
    "mgnMode":"cross"
}
# 3.`合约模式`账户在`全仓`交易模式下,设置`币币杠杆`的杠杆倍数(币对层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT",
    "lever":"5",
    "mgnMode":"cross"
}
# 4.`跨币种保证金模式`账户在`全仓`交易模式下,设置`币币杠杆`的杠杆倍数(币种层面)
POST /api/v5/account/set-leverage
body
{
    "ccy":"BTC",
    "lever":"5",
    "mgnMode":"cross"
}
# 5. `组合保证金模式`账户在`全仓`交易模式下,设置`币币杠杆`的杠杆倍数(币种层面)
POST /api/v5/account/set-leverage
body
{
    "ccy":"BTC",
    "lever":"5",
    "mgnMode":"cross"
}
# 6.在`全仓`交易模式下,设置`交割`的杠杆倍数(指数层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-200802",
    "lever":"5",
    "mgnMode":"cross"
}
# 7.在`逐仓`交易模式、`买卖`持仓模式下,设置`交割`的杠杆倍数(合约层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-200802",
    "lever":"5",
    "mgnMode":"isolated"
}
# 8.在`逐仓`交易模式、`开平仓`持仓模式下,设置`交割`的杠杆倍数(合约与头寸层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-200802",
    "lever":"5",
    "posSide":"long",
    "mgnMode":"isolated"
}
# 9.在`全仓`交易模式下,设置`永续`的杠杆倍数(合约层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-SWAP",
    "lever":"5",
    "mgnMode":"cross"
}
# 10.在`逐仓`交易模式、`买卖`持仓模式下,设置`永续`的杠杆倍数(合约层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-SWAP",
    "lever":"5",
    "mgnMode":"isolated"
}
# 11.在`逐仓`交易模式、`开平仓`持仓模式下,设置`永续`的杠杆倍数(合约与头寸层面)
POST /api/v5/account/set-leverage
body
{
    "instId":"BTC-USDT-SWAP",
    "lever":"5",
    "posSide":"long",
    "mgnMode":"isolated"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 在逐仓交易模式下,设置币币杠杆的杠杆倍数(币对层面)
result = accountAPI.set_leverage(
    instId="BTC-USDT",
    lever="5",
    mgnMode="isolated"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 可选 | 产品ID:币对、合约 仅适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓交割永续,合约模式的全仓币币杠杆交割永续以及逐仓。且在适用场景下必填。 | 
| ccy | String | 可选 | 保证金币种,用于设置开启自动借币模式下币种维度的杠杆。 仅适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓币币杠杆。且在适用场景下必填。 | 
| lever | String | 是 | 杠杆倍数 | 
| mgnMode | String | 是 | 保证金模式 isolated:逐仓cross:全仓如果 ccy有效传值,该参数值只能为cross。 | 
| posSide | String | 可选 | 持仓方向 long:开平仓模式开多short:开平仓模式开空仅适用于逐仓 交割/永续在开平仓模式且保证金模式为逐仓条件下必填 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "lever": "30",
        "mgnMode": "isolated",
        "instId": "BTC-USDT-SWAP",
        "posSide": "long"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| lever | String | 杠杆倍数 | 
| mgnMode | String | 保证金模式 isolated:逐仓cross:全仓 | 
| instId | String | 产品ID | 
| posSide | String | 持仓方向 | 
获取最大可下单数量
获取最大可下单数量,可对应下单时的 "sz" 字段
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/max-size
请求示例
GET /api/v5/account/max-size?instId=BTC-USDT&tdMode=isolated
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取最大可买卖/开仓数量
result = accountAPI.get_max_order_size(
    instId="BTC-USDT",
    tdMode="isolated"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT支持同一业务线下的多产品ID查询(不超过5个),半角逗号分隔 | 
| tdMode | String | 是 | 交易模式 cross:全仓isolated:逐仓cash:非保证金spot_isolated:现货逐仓,仅适用于合约模式 | 
| ccy | String | 可选 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| px | String | 否 | 委托价格 当不填委托价时,交割和永续会取当前限价计算,其他业务线会按当前最新成交价计算 当指定多个产品ID查询时,忽略该参数,当未填写处理 | 
| leverage | String | 否 | 开仓杠杆倍数 默认为当前杠杆倍数 仅适用于 币币杠杆/交割/永续 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ccy": "BTC",
        "instId": "BTC-USDT",
        "maxBuy": "0.0500695098559788",
        "maxSell": "64.4798671570072269"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| ccy | String | 保证金币种 | 
| maxBuy | String | 币币/币币杠杆:最大可买的交易币数量合约模式下的全仓杠杆订单,为交易币数量交割/永续/期权:最大可开多的合约张数 | 
| maxSell | String | 币币/币币杠杆:最大可卖的计价币数量合约模式下的全仓杠杆订单,为交易币数量交割/永续/期权:最大可开空的合约张数 | 
获取最大可用余额/保证金
币币和逐仓时为可用余额,全仓时为可用保证金
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/max-avail-size
请求示例
# 获取BTC-USDT全仓币币杠杆指定BTC作为保证金最大可用数量
GET /api/v5/account/max-avail-size?instId=BTC-USDT&tdMode=cross&ccy=BTC
# 获取BTC-USDT币币最大可用数量
GET /api/v5/account/max-avail-size?instId=BTC-USDT&tdMode=cash
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取BTC-USDT币币最大可用数量
result = accountAPI.get_max_avail_size(
    instId="BTC-USDT",
    tdMode="cash"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT支持多产品ID查询(不超过5个),半角逗号分隔 | 
| tdMode | String | 是 | 交易模式 cross:全仓isolated:逐仓cash:非保证金spot_isolated:现货逐仓,仅适用于合约模式 | 
| ccy | String | 可选 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆 | 
| reduceOnly | Boolean | 否 | 是否为只减仓模式,仅适用于 币币杠杆 | 
| px | String | 否 | 平仓价格,默认为市价。 仅适用于杠杆只减仓 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "instId": "BTC-USDT",
        "availBuy": "100",
        "availSell": "1"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| availBuy | String | 最大买入可用余额/保证金 | 
| availSell | String | 最大卖出可用余额/保证金 | 
调整保证金
增加或者减少逐仓保证金。减少保证金可能会导致实际杠杆倍数发生变化。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/position/margin-balance
请求示例
POST /api/v5/account/position/margin-balance 
body
{
    "instId":"BTC-USDT-SWAP",
    "posSide":"short",
    "type":"add",
    "amt":"1"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 调整保证金
result = accountAPI.adjustment_margin(
    instId="BTC-USDT-SWAP",
    posSide="short",
    type= "add",
    amt="1"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID | 
| posSide | String | 是 | 持仓方向,默认值是 netlong:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| type | String | 是 | 增加/减少保证金 add:增加reduce:减少 | 
| amt | String | 是 | 增加或减少的保证金数量 | 
| ccy | String | 可选 | 增加或减少的保证金的币种, 适用于 逐仓杠杆仓位 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "0.3",
            "ccy": "BTC",
            "instId": "BTC-USDT",
            "leverage": "",
            "posSide": "net",
            "type": "add"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| posSide | String | 持仓方向 | 
| amt | String | 已增加/减少的保证金数量 | 
| type | String | 增加/减少保证金 | 
| leverage | String | 调整保证金后的实际杠杆倍数 | 
| ccy | String | 增加或减少的保证金的币种 | 
获取杠杆倍数
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/leverage-info
请求示例
GET /api/v5/account/leverage-info?instId=BTC-USDT-SWAP&mgnMode=cross
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取杠杆倍数
result = accountAPI.get_leverage(
    instId="BTC-USDT-SWAP",
    mgnMode="cross"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 可选 | 产品ID 支持多个instId查询,半角逗号分隔。instId个数不超过20个。 | 
| ccy | String | 可选 | 币种,用于币种维度的杠杆。 仅适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓币币杠杆。支持多ccy查询,半角逗号分隔。ccy个数不超过20个。 | 
| mgnMode | String | 是 | 保证金模式 isolated:逐仓cross:全仓 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ccy":"",
        "instId": "BTC-USDT-SWAP",
        "mgnMode": "cross",
        "posSide": "long",
        "lever": "10"
    },{
        "ccy":"",
        "instId": "BTC-USDT-SWAP",
        "mgnMode": "cross",
        "posSide": "short",
        "lever": "10"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| ccy | String | 币种,用于币种维度的杠杆。 仅适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓币币杠杆。 | 
| mgnMode | String | 保证金模式 | 
| posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式开平仓模式下会返回两个方向的杠杆倍数 | 
| lever | String | 杠杆倍数 | 
获取杠杆倍数预估信息
获取指定杠杆倍数下,相关的预估信息。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/adjust-leverage-info
请求示例
GET /api/v5/account/adjust-leverage-info?instType=MARGIN&mgnMode=isolated&lever=3&instId=BTC-USDT
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约 | 
| mgnMode | String | 是 | 保证金模式 isolated:逐仓cross:全仓 | 
| lever | String | 是 | 杠杆倍数 | 
| instId | String | 可选 | 产品ID,如 BTC-USDT必填的场景有:交割永续,逐仓杠杆,以及 合约模式下全仓杠杆。 | 
| ccy | String | 可选 | 保证金币种,如 BTC逐仓杠杆及 合约模式/跨币种保证金模式/组合保证金模式的全仓杠杆时必填。 | 
| posSide | String | 否 | 持仓方向 net: 默认值,代表买卖模式long: 开平模式下的多仓short:开平模式下的空仓适用于 交割/永续。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "estAvailQuoteTrans": "",
            "estAvailTrans": "1.1398040558348279",
            "estLiqPx": "",
            "estMaxAmt": "10.6095865868904898",
            "estMgn": "0.0701959441651721",
            "estQuoteMaxAmt": "176889.6871254563042714",
            "estQuoteMgn": "",
            "existOrd": false,
            "maxLever": "10",
            "minLever": "0.01"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| estAvailQuoteTrans | String | 对应杠杆倍数下,计价货币预估可转出的保证金数量 全仓时,为交易账户最大可转出 逐仓时,为逐仓仓位可减少的保证金。 仅适用于 杠杆 | 
| estAvailTrans | String | 对应杠杆倍数下,预估可转出的保证金数量 全仓时,为交易账户最大可转出 逐仓时,为逐仓仓位可减少的保证金 对于 杠杆,单位为交易货币不适用于 交割,永续的逐仓,调大杠杆的场景 | 
| estLiqPx | String | 对应杠杆倍数下的预估强平价,仅在有仓位时有值 | 
| estMgn | String | 对应杠杆倍数下,仓位预估所需的保证金数量 对于杠杆仓位,为所需交易货币保证金 对于交割或永续仓位,为仓位所需保证金 | 
| estQuoteMgn | String | 对应杠杆倍数下,仓位预估所需的计价货币保证金数量 | 
| estMaxAmt | String | 对于杠杆,为对应杠杆倍数下,交易货币预估最大可借 对于交割和永续,为对应杠杆倍数下,预估的最大可开张数 | 
| estQuoteMaxAmt | String | 对应杠杆倍数下,杠杆计价货币预估最大可借 | 
| existOrd | Boolean | 当前是否存在挂单 true:存在挂单false:不存在挂单 | 
| maxLever | String | 最大杠杆倍数 | 
| minLever | String | 最小杠杆倍数 | 
获取交易产品最大可借
限速:20 次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/account/max-loan
请求示例
# 现货模式用户已经开通了借币情况下币对币种最大可借
GET  /api/v5/account/max-loan?instId=BTC-USDT&mgnMode=cross
# 现货模式用户已经开通了借币情况下币种最大可借
GET  /api/v5/account/max-loan?ccy=USDT&mgnMode=cross
# 合约模式逐仓账户获取币币杠杆最大可借
GET  /api/v5/account/max-loan?instId=BTC-USDT&mgnMode=isolated
# 合约模式全仓账户获取币币杠杆最大可借(指定保证金为BTC)
GET  /api/v5/account/max-loan?instId=BTC-USDT&mgnMode=cross&mgnCcy=BTC
# 跨币种全仓账户获取币币杠杠最大可借
GET  /api/v5/account/max-loan?instId=BTC-USDT&mgnMode=cross
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 合约模式全仓账户获取币币杠杆最大可借(指定保证金为BTC)
result = accountAPI.get_max_loan(
    instId="BTC-USDT",
    mgnMode="cross",
    mgnCcy="BTC"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| mgnMode | String | 是 | 仓位类型 isolated:逐仓cross:全仓 | 
| instId | String | 可选 | 产品 ID,如 BTC-USDT支持多产品ID查询(不超过5个),半角逗号分隔 | 
| ccy | String | 可选 | 币种 仅适用于 现货模式下手动借币币种最大可借 | 
| mgnCcy | String | 可选 | 保证金币种,如 BTC适用于 逐仓杠杆及合约模式下的全仓杠杆 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "instId": "BTC-USDT",
      "mgnMode": "isolated",
      "mgnCcy": "",
      "maxLoan": "0.1",
      "ccy": "BTC",
      "side": "sell"
    },
    {
      "instId": "BTC-USDT",
      "mgnMode": "isolated",
      "mgnCcy": "",
      "maxLoan": "0.2",
      "ccy": "USDT",
      "side": "buy"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品 ID | 
| mgnMode | String | 仓位类型 | 
| mgnCcy | String | 保证金币种 | 
| maxLoan | String | 最大可借 | 
| ccy | String | 币种 | 
| side | String | 订单方向 | 
获取当前账户交易手续费费率
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/trade-fee
请求示例
# 获取币币BTC-USDT交易手续费率  
GET /api/v5/account/trade-fee?instType=SPOT&instId=BTC-USDT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取当前账户交易手续费费率
result = accountAPI.get_fee_rates(
    instType="SPOT",
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 否 | 产品ID,如 BTC-USDT仅适用于instType为 币币/币币杠杆 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权,如BTC-USD | 
| ruleType | String | 否 | 交易规则类型 normal:普通交易pre_market:盘前交易ruleType不能与instId/instFamily同时传入 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
            "category": "1", //已废弃
            "delivery": "",
            "exercise": "",
            "instType": "SPOT",
            "level": "lv1",
            "maker": "-0.0008",
            "makerU": "",
            "makerUSDC": "",
            "taker": "-0.001",
            "takerU": "",
            "takerUSDC": "",
            "ruleType": "normal",
            "ts": "1608623351857",
            "fiat": []
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| level | String | 手续费等级 | 
| taker | String | 对于币币/杠杆,为 USDT 交易区的吃单手续费率; 对于永续,交割和期权合约,为币本位合约费率 | 
| maker | String | 对于币币/杠杆,为 USDT 交易区的挂单手续费率; 对于永续,交割和期权合约,为币本位合约费率 | 
| takerU | String | USDT 合约吃单手续费率,仅适用于 交割/永续 | 
| makerU | String | USDT 合约挂单手续费率,仅适用于 交割/永续 | 
| delivery | String | 交割手续费率 | 
| exercise | String | 行权手续费率 | 
| instType | String | 产品类型 | 
| takerUSDC | String | 对于币币/杠杆,为 USDⓈ&Crypto 交易区的吃单手续费率; 对于永续和交割合约,为 USDC 合约费率 | 
| makerUSDC | String | 对于币币/杠杆,为 USDⓈ&Crypto 交易区的挂单手续费率; 对于永续和交割合约,为 USDC 合约费率 | 
| ruleType | String | 交易规则类型 normal:普通交易pre_market:盘前交易 | 
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| category | String | |
| fiat | Array of objects | 法币费率 | 
| > ccy | String | 法币币种 | 
| > taker | String | 吃单手续费率 | 
| > maker | String | 挂单手续费率 | 
获取计息记录
获取过去一年的计息记录
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/interest-accrued
请求示例
GET /api/v5/account/interest-accrued
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取计息记录
result = accountAPI.get_interest_accrued()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 借币类型 2:市场借币默认为 2 | 
| ccy | String | 否 | 借贷币种,如 BTC仅适用于 市场借币仅适用于 币币杠杆 | 
| instId | String | 否 | 产品ID,如 BTC-USDT仅适用于 市场借币 | 
| mgnMode | String | 否 | 保证金模式 cross:全仓isolated:逐仓仅适用于 市场借币 | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085 | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "instId": "",
            "interest": "0.0003960833333334",
            "interestRate": "0.0000040833333333",
            "liab": "97",
            "totalLiab": "",
            "interestFreeLiab": "",
            "mgnMode": "",
            "ts": "1637312400000",
            "type": "1"
        },
        {
            "ccy": "USDT",
            "instId": "",
            "interest": "0.0004083333333334",
            "interestRate": "0.0000040833333333",
            "liab": "100",
            "totalLiab": "",
            "interestFreeLiab": "",
            "mgnMode": "",
            "ts": "1637049600000",
            "type": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 类型 2:市场借币 | 
| ccy | String | 借贷币种,如 BTC | 
| instId | String | 产品ID,如 BTC-USDT仅适用于 市场借币 | 
| mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| interest | String | 利息 | 
| interestRate | String | 计息利率(小时) | 
| liab | String | 计息负债 | 
| totalLiab | String | 当前账户总负债量 | 
| interestFreeLiab | String | 当前账户免息负债量 | 
| ts | String | 计息时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取用户当前市场借币利率
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/interest-rate
请求示例
GET /api/v5/account/interest-rate
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取用户当前市场借币利率
result = accountAPI.get_interest_rate()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ccy":"BTC",
            "interestRate":"0.0001"
        },
        {
            "ccy":"LTC",
            "interestRate":"0.0003"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| interestRate | String | 每小时借币利率 | 
| ccy | String | 币种 | 
设置手续费计价方式
设置手续费计价方式。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/account/set-fee-type
请求示例
POST /api/v5/account/set-fee-type 
body
{
    "feeType": "0"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| feeType | String | 是 | 手续费计价方式 0: 按交易获得的币种收取手续费(默认)1: 始终按交易对的计价币种收取手续费(仅适用于现货) | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "feeType": "0"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| feeType | String | 手续费计价方式 0: 按交易获得的币种收取手续费1: 始终按交易对的计价币种收取手续费 | 
期权greeks的PA/BS切换
设置greeks的展示方式。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-greeks
请求示例
POST /api/v5/account/set-greeks 
body
{
    "greeksType":"PA"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 期权greeks的PA/BS切换
result = accountAPI.set_greeks(greeksType="PA")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| greeksType | String | 是 | 希腊字母展示方式 PA:币本位,BS:美元本位 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "greeksType": "PA"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| greeksType | String | 当前希腊字母展示方式 | 
逐仓交易设置
可以通过该接口设置币币杠杆和交割、永续的逐仓仓位保证金的划转模式
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-isolated-mode
请求示例
POST /api/v5/account/set-isolated-mode
body
{
    "isoMode":"automatic",
    "type":"MARGIN"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 逐仓交易设置
result = accountAPI.set_isolated_mode(
    isoMode="automatic",
    type="MARGIN"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| isoMode | String | 是 | 逐仓保证金划转模式 auto_transfers_ccy:新版开仓自动划转,支持交易货币及计价货币作为保证金,仅适用于币币杠杆automatic:开仓自动划转 | 
| type | String | 是 | 业务线类型 MARGIN:币币杠杆CONTRACTS:合约 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "isoMode": "automatic"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| isoMode | String | 逐仓保证金划转模式 auto_transfers_ccy:新版开仓自动划转automatic:开仓自动划转 | 
查看账户最大可转余额
当指定币种时会返回该币种的交易账户到资金账户的最大可划转数量,不指定币种会返回所有拥有的币种资产可划转数量。
限速:20次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户最大可转余额
result = accountAPI.get_max_withdrawal()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
            "ccy": "BTC",
            "maxWd": "124",
            "maxWdEx": "125",
            "spotOffsetMaxWd": "",
            "spotOffsetMaxWdEx": ""
        },
        {
            "ccy": "ETH",
            "maxWd": "10",
            "maxWdEx": "12",
            "spotOffsetMaxWd": "",
            "spotOffsetMaxWdEx": ""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种 | 
| maxWd | String | 最大可划转数量(不包含 跨币种保证金模式/组合保证金模式借币金额) | 
| maxWdEx | String | 最大可划转数量(包含 跨币种保证金模式/组合保证金模式借币金额) | 
| spotOffsetMaxWd | String | 现货对冲不支持借币最大可转数量 仅适用于 组合保证金模式 | 
| spotOffsetMaxWdEx | String | 现货对冲支持借币的最大可转数量 仅适用于 组合保证金模式 | 
查看账户特定风险状态
仅适用于PM账户
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/risk-state
请求示例
GET /api/v5/account/risk-state
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户持仓风险
result = accountAPI.get_account_position_risk()
print(result)
返回结果
{
    "code": "0",
    "data": [
        {
            "atRisk": false,
            "atRiskIdx": [],
            "atRiskMgn": [],
            "ts": "1635745078794"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| atRisk | Boolean | 自动借币模式下的账户风险状态 true: 当前账户为特定风险状态 false: 当前不是特定风险状态 | 
| atRiskIdx | Array of strings | 衍生品的risk unit列表 | 
| atRiskMgn | Array of strings | 杠杆的risk unit列表 | 
| ts | String | 接口数据返回时间 ,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取借币利率与限额
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/interest-limits
请求示例
GET /api/v5/account/interest-limits?ccy=BTC
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取借币利率与限额
result = accountAPI.get_interest_limits(
    ccy="BTC"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 借币类型 2:市场借币默认为 2 | 
| ccy | String | 否 | 借贷币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debt": "0.85893159114900247077000000000000",
            "interest": "0.00000000000000000000000000000000",
            "loanAlloc": "",
            "nextDiscountTime": "1729490400000",
            "nextInterestTime": "1729490400000",
            "records": [
                {
                    "availLoan": "",
                    "avgRate": "",
                    "ccy": "BTC",
                    "interest": "0",
                    "loanQuota": "175.00000000",
                    "posLoan": "",
                    "rate": "0.0000276",
                    "surplusLmt": "175.00000000",
                    "surplusLmtDetails": {},
                    "usedLmt": "0.00000000",
                    "usedLoan": "",
                    "interestFreeLiab": "",
                    "potentialBorrowingAmt": ""
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debt | String | 当前负债,单位为 USD | 
| interest | String | 当前记息,单位为 USD仅适用于 市场借币 | 
| nextDiscountTime | String | 下次扣息时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| nextInterestTime | String | 下次计息时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| loanAlloc | String | 1. 范围为[0, 100]. 精度为 0.01% (2位小数) 2. 0 代表母账户没有为子账户分配; 3. "" 代表母子账户共享 已废弃 | 
| records | Array of objects | 各币种详细信息 | 
| > ccy | String | 借贷币种,如 BTC | 
| > rate | String | 日利率 | 
| > loanQuota | String | 母账户维度借币限额 如果已配置可用额度,该字段代表当前交易账户的借币限额 | 
| > usedLmt | String | 当前账户已借额度 如果已配置可用额度,该字段代表当前交易账户的已借额度 | 
| > interest | String | 已计未扣利息 仅适用于 市场借币 | 
| > interestFreeLiab | String | 当前账户免息负债 | 
| > potentialBorrowingAmt | String | 当前账户潜在借币量 | 
| > surplusLmt | String | 母子账户剩余可借 如果已配置可用额度,该字段代表当前交易账户的剩余可借 | 
| > surplusLmtDetails | Object | 仅适用于 尊享借币已废弃 | 
| >> allAcctRemainingQuota | String | 母子账户剩余额度 | 
| >> curAcctRemainingQuota | String | 当前账户剩余额度 仅适用于为子账户分配限额的场景 | 
| >> platRemainingQuota | String | 平台剩余额度,当平台剩余额度大于 curAcctRemainingQuota或者allAcctRemainingQuota时,会显示大于某个值,如">1000" | 
| > posLoan | String | 仅适用于 尊享借币已废弃 | 
| > availLoan | String | 仅适用于 尊享借币已废弃 | 
| > usedLoan | String | 仅适用于 尊享借币已废弃 | 
| > avgRate | String | 尊享借币已废弃 | 
手动借/还币
仅适用于现货模式已开通借币的情况。
限速:1次/3s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/spot-manual-borrow-repay
请求示例
POST /api/v5/account/spot-manual-borrow-repay 
body
{
    "ccy": "USDT",
    "side": "borrow",
    "amt": "100"
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
result = accountAPI.spot_manual_borrow_repay(ccy="USDT", side="borrow", amt= "1")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种,如 BTC | 
| side | String | 是 | 方向 borrow:借币repay:还币 | 
| amt | String | 是 | 数量 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy":"USDT",
            "side":"borrow",
            "amt":"100"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| side | String | 方向 borrow:借币repay:还币 | 
| amt | String | 实际数量 | 
设置自动还币
仅适用于现货模式已开通借币的情况。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-auto-repay
请求示例
POST /api/v5/account/set-auto-repay
body
{
    "autoRepay": true
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
result = accountAPI.set_auto_repay(autoRepay=True)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| autoRepay | Boolean | 是 | 是否支持 现货模式下自动还币true:支持false:不支持 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "autoRepay": true
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| autoRepay | Boolean | 是否支持 现货模式下自动还币true:支持false:不支持 | 
获取借/还币历史
获取现货模式下的借/还币历史。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/spot-borrow-repay-history
请求示例
GET /api/v5/account/spot-borrow-repay-history
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
result = accountAPI.spot_borrow_repay_history(ccy="USDT", type="auto_borrow")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
| type | String | 否 | 事件类型 auto_borrow:自动借币auto_repay:自动还币manual_borrow:手动借币manual_repay:手动还币 | 
| after | String | 否 | 请求发生时间 ts之前(包含)的分页内容,Unix时间戳的毫秒数格式,如1597026383085 | 
| before | String | 否 | 请求发生时间 ts之后(包含)的分页内容,Unix时间戳的毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "accBorrowed": "0",
            "amt": "6764.802661157592",
            "ccy": "USDT",
            "ts": "1725330976644",
            "type": "auto_repay"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| type | String | 事件类型 auto_borrow:自动借币auto_repay:自动还币manual_borrow:手动借币manual_repay:手动还币 | 
| amt | String | 数量 | 
| accBorrowed | String | 累计借币数量 | 
| ts | String | 事件发生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
仓位创建器
计算用户的模拟头寸或当前头寸的投资组合保证金信息,一次请求最多可添加200个虚拟仓位和200个虚拟虚拟资产
限速:2次/2s
限速规则:User ID
权限:读取
HTTP请求
POST /api/v5/account/position-builder
请求示例
# 真实与虚拟的仓位与资产一起计算
POST /api/v5/account/position-builder
body
{
    "inclRealPosAndEq": false,
    "simPos":[
         {
            "pos":"-10",
            "instId":"BTC-USDT-SWAP",
            "avgPx":"100000"
         },
         {
            "pos":"10",
            "instId":"LTC-USDT-SWAP",
            "avgPx":"8000"
         }
    ],
    "simAsset":[
        {
            "ccy": "USDT",
            "amt": "100"
        }
    ],
    "greeksType":"CASH"
}
# 只计算已有真实仓位
POST /api/v5/account/position-builder
body
{
   "inclRealPosAndEq": true
}
# 只计算虚拟仓位
POST /api/v5/account/position-builder
body
{
    "acctLv": "4",
    "inclRealPosAndEq": false,
    "simPos":[
        {
            "pos":"10",
            "instId":"BTC-USDT-SWAP",
            "avgPx":"100000"
        },
        {
            "pos":"10",
            "instId":"LTC-USDT-SWAP",
            "avgPx":"8000"
        }
    ]
}
# 切换到跨币种
POST /api/v5/account/position-builder
body
{
    "acctLv": "3",
    "lever":"10",
    "simPos":[
        {
            "pos":"10",
            "instId":"BTC-USDT-SWAP",
            "avgPx":"100000",
            "lever":"5"
        },
        {
            "pos":"10",
            "instId":"LTC-USDT-SWAP",
            "avgPx":"8000"
        }
    ]
}
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘: 0, 模拟盘: 1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
result = accountAPI.position_builder(
    inclRealPosAndEq=True,
    simPos=[
        {
            "pos": "10",
            "instId": "BTC-USDT-SWAP",
            "avgPx":"100000"
        },
        {
            "pos": "10",
            "instId": "LTC-USDT-SWAP",
            "avgPx":"100000"
        }
    ]
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| acctLv | String | 否 | 切换至账户模式 3:跨币种保证金模式4:组合保证金模式 | 
| inclRealPosAndEq | Boolean | 否 | 是否代入已有仓位和资产 默认为 true | 
| lever | String | 否 | 跨币种下整体的全仓合约杠杆数量,默认为 1。如果超过允许的杠杆倍数,按照最大的杠杆设置。 适用于 跨币种保证金模式 | 
| simPos | Array of objects | 否 | 模拟仓位列表 | 
| > instId | String | 是 | 交易产品ID,如 BTC-USDT-SWAP适用于 SWAP/FUTURES/OPTION | 
| > pos | String | 是 | 持仓量 | 
| > avgPx | String | 是 | 平均开仓价格 | 
| > lever | String | 否 | 杠杆 仅适用于在跨币种保证金模式下指定交易产品的杠杆。如果用户不传,则选择默认杠杆为 1。 | 
| simAsset | Array of objects | 否 | 模拟资产 当 inclRealPosAndEq为true,只考虑真实资产,会忽略虚拟资产 | 
| > ccy | String | 是 | 币种,如 BTC | 
| > amt | String | 是 | 币种数量 可以为负,代表减少币种资产 | 
| greeksType | String | 否 | 希腊值类型 BS:BS模型PA:币本位CASH:美元现金等价默认是 BS | 
| idxVol | String | 否 | 价格变动百分比。小数形式,范围 -0.99 ~ 1,以 0.01 为增量。 默认值为 0 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "acctLever": "-0.1364949794742562",
            "assets": [
                {
                    "availEq": "0",
                    "borrowImr": "0",
                    "borrowMmr": "",
                    "ccy": "BTC",
                    "spotInUse": "0"
                },
                {
                    "availEq": "0",
                    "borrowImr": "0",
                    "borrowMmr": "",
                    "ccy": "LTC",
                    "spotInUse": "0"
                },
                {
                    "availEq": "0",
                    "borrowImr": "0",
                    "borrowMmr": "",
                    "ccy": "USDC",
                    "spotInUse": "0"
                },
                {
                    "availEq": "-78589.37",
                    "borrowImr": "7855.32188898",
                    "borrowMmr": "",
                    "ccy": "USDT",
                    "spotInUse": "0"
                }
            ],
            "borrowMmr": "1571.064377796",
            "derivMmr": "1375.4837063088003",
            "eq": "-78553.21888979999",
            "marginRatio": "-25.95365779811705",
            "positions": [],
            "riskUnitData": [
                {
                    "delta": "-9704.903689800001",
                    "gamma": "0",
                    "imrBf": "",
                    "imr": "1538.9669514070802",
                    "mmrBf": "",
                    "mmr": "1183.8207318516002",
                    "mr1": "1164.4109244719994",
                    "mr1FinalResult": {
                        "pnl": "-1164.4109244719994",
                        "spotShock": "0.12",
                        "volShock": "up"
                    },
                    "mr1Scenarios": {
                        "volSame": {
                            "0": "0",
                            "0.08": "-776.2739496480004",
                            "-0.08": "776.2739496480004",
                            "0.04": "-388.1369748240002",
                            "0.12": "-1164.4109244719994",
                            "-0.12": "1164.4109244719994",
                            "-0.04": "388.1369748240002"
                        },
                        "volShockDown": {
                            "0": "0",
                            "0.08": "-776.2739496480004",
                            "-0.08": "776.2739496480004",
                            "0.04": "-388.1369748240002",
                            "0.12": "-1164.4109244719994",
                            "-0.12": "1164.4109244719994",
                            "-0.04": "388.1369748240002"
                        },
                        "volShockUp": {
                            "0": "0",
                            "0.08": "-776.2739496480004",
                            "-0.08": "776.2739496480004",
                            "0.04": "-388.1369748240002",
                            "0.12": "-1164.4109244719994",
                            "-0.12": "1164.4109244719994",
                            "-0.04": "388.1369748240002"
                        }
                    },
                    "mr2": "0",
                    "mr3": "0",
                    "mr4": "19.4098073796",
                    "mr5": "0",
                    "mr6": "1164.4109244720003",
                    "mr6FinalResult": {
                        "pnl": "-2328.8218489440005",
                        "spotShock": "0.24"
                    },
                    "mr7": "43.67206660410001",
                    "mr8": "1571.064377796",
                    "mr9": "0",
                    "portfolios": [
                        {
                            "amt": "-10",
                            "avgPx": "100000",
                            "delta": "-9704.903689800001",
                            "floatPnl": "290.6300000000003",
                            "gamma": "0",
                            "instId": "BTC-USDT-SWAP",
                            "instType": "SWAP",
                            "isRealPos": false,
                            "markPxBf": "",
                            "markPx": "97093.7",
                            "notionalUsd": "9703.22",
                            "posSide": "net",
                            "theta": "0",
                            "vega": "0"
                        }
                    ],
                    "riskUnit": "BTC",
                    "theta": "0",
                    "upl": "290.49631020000027",
                    "vega": "0"
                },
                {
                    "delta": "1019.5308",
                    "gamma": "0",
                    "imrBf": "",
                    "imr": "249.16186679436",
                    "mmrBf": "",
                    "mmr": "191.6629744572",
                    "mr1": "183.50672805719995",
                    "mr1FinalResult": {
                        "pnl": "-183.50672805719995",
                        "spotShock": "-0.18",
                        "volShock": "up"
                    },
                    "mr1Scenarios": {
                        "volSame": {
                            "0": "0",
                            "-0.06": "-61.168909352399936",
                            "0.06": "61.168909352399936",
                            "-0.18": "-183.50672805719995",
                            "0.18": "183.50672805719995",
                            "0.12": "122.33781870480001",
                            "-0.12": "-122.33781870480001"
                        },
                        "volShockDown": {
                            "0": "0",
                            "-0.06": "-61.168909352399936",
                            "0.06": "61.168909352399936",
                            "-0.18": "-183.50672805719995",
                            "0.18": "183.50672805719995",
                            "0.12": "122.33781870480001",
                            "-0.12": "-122.33781870480001"
                        },
                        "volShockUp": {
                            "0": "0",
                            "-0.06": "-61.168909352399936",
                            "0.06": "61.168909352399936",
                            "-0.18": "-183.50672805719995",
                            "0.18": "183.50672805719995",
                            "0.12": "122.33781870480001",
                            "-0.12": "-122.33781870480001"
                        }
                    },
                    "mr2": "0",
                    "mr3": "0",
                    "mr4": "8.1562464",
                    "mr5": "0",
                    "mr6": "183.5067280572",
                    "mr6FinalResult": {
                        "pnl": "-367.0134561144",
                        "spotShock": "-0.36"
                    },
                    "mr7": "7.1367156",
                    "mr8": "1571.064377796",
                    "mr9": "0",
                    "portfolios": [
                        {
                            "amt": "10",
                            "avgPx": "8000",
                            "delta": "1019.5308",
                            "floatPnl": "-78980",
                            "gamma": "0",
                            "instId": "LTC-USDT-SWAP",
                            "instType": "SWAP",
                            "isRealPos": false,
                            "markPxBf": "",
                            "markPx": "102",
                            "notionalUsd": "1018.9",
                            "posSide": "net",
                            "theta": "0",
                            "vega": "0"
                        }
                    ],
                    "riskUnit": "LTC",
                    "theta": "0",
                    "upl": "-78943.6692",
                    "vega": "0"
                }
            ],
            "totalImr": "9643.45070718144",
            "totalMmr": "2946.5480841048",
            "ts": "1736936801642",
            "upl": "-78653.1728898"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| eq | String | 账户有效保证金 | 
| totalMmr | String | 账户维持保证金,单位为 USD | 
| totalImr | String | 账户初始保证金占用,单位为 USD | 
| borrowMmr | String | 账户借币维持保证金,单位为 USD | 
| derivMmr | String | 账户衍生品维持保证金,单位为 USD | 
| marginRatio | String | 账户全仓维持保证金率 | 
| upl | String | 账户浮动盈亏 | 
| acctLever | String | 账户全仓杠杆 | 
| ts | String | 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| assets | Array of objects | 资产信息 | 
| > ccy | String | 币种,如 BTC | 
| > availEq | String | 币种权益 | 
| > spotInUse | String | 现货对冲占用 | 
| > borrowMmr | String | USD | 
| > borrowImr | String | 借币初始保证金,单位为 USD | 
| riskUnitData | Array of objects | Risk unit 相关信息 适用于 组合保证金模式 | 
| > riskUnit | String | 账户内的 risk unit,如 BTC | 
| > mmrBf | String | 价格变动前 Risk unit 维度的维持保证金,单位为 USD若用户没有传入idxVol,则返回 "" | 
| > mmr | String | Risk unit 维度的维持保证金,单位为 USD | 
| > imrBf | String | 价格变动前 Risk unit 维度的初始保证金,单位为 USD若用户没有传入idxVol,则返回 "" | 
| > imr | String | Risk unit 维度的初始保证金,单位为 USD | 
| > upl | String | Risk unit 维度的浮动盈亏,单位为 USD | 
| > mr1 | String | 现货和波动率变化风险 (适用于所有衍生品,以及在现货对冲模式下的现货) | 
| > mr2 | String | 时间价值风险 (仅适用于期权) | 
| > mr3 | String | 波动率跨期风险 (仅适用于期权) | 
| > mr4 | String | 基差风险 (适用于所有衍生品) | 
| > mr5 | String | 利率风险 (仅适用于期权) | 
| > mr6 | String | 极端市场波动风险 (适用于所有衍生品,以及在现货对冲模式下的现货) | 
| > mr7 | String | 减仓成本 (适用于所有衍生品) | 
| > mr8 | String | 借币维持保证金/初始保证金 | 
| > mr9 | String | USDT-USDC-USD 对冲风险 | 
| > mr1Scenarios | Object of objects | MR1 的压力测试场景分析 | 
| >> volShockDown | Object | 波动率向下时,不同价格波动比率下的压力测试盈亏 值为 { change:value, ...}change:价格波动比率(百分比),如0.01代表1%value:压力测试下的盈亏,单位为USD如 {"-0.15":"-2333.23", ...} | 
| >> volSame | Object | 波动率不变时,不同价格波动比率下的压力测试盈亏 值为 { change:value, ...}change:价格波动比率(百分比),如0.01代表1%value:压力测试下的盈亏,单位为USD如 {"-0.15":"-2333.23", ...} | 
| >> volShockUp | Object | 波动率向上时,不同价格波动比率下的压力测试盈亏 值为 { change:value, ...}change:价格波动比率(百分比),如0.01代表1%value:压力测试下的盈亏,单位为USD如 {"-0.15":"-2333.23", ...} | 
| > mr1FinalResult | Object | MR1 最大亏损场景 | 
| >> pnl | String | MR1 最大亏损压测盈亏,单位为 USD | 
| >> spotShock | String | MR1 最大亏损的价格波动(百分比),如 0.01代表1% | 
| >> volShock | String | MR1 最大亏损波动率趋势 down:波动率向下unchange:波动率不变up:波动率向上 | 
| > mr6FinalResult | Object | MR6 最大亏损场景 | 
| >> pnl | String | MR6 最大亏损压测盈亏,单位为 USD | 
| >> spotShock | String | MR6 最大亏损的价格波动(百分比),如 0.01代表1% | 
| > delta | String | (Risk unit 维度) 合约价格随标的价格变动的比例 当标的价格变动 x 时,合约价格变动约为此 Delta 数值乘以 x | 
| > gamma | String | (Risk unit 维度) 标的价格对 Delta 值的影响程度 当标的价格变动 x% 时,期权 Delta 值的变动约为此 Gamma 数值乘以 x% | 
| > theta | String | (Risk unit 维度) 距离到期日时间缩短 1 天,该合约价格的变化量 | 
| > vega | String | (Risk unit 维度) 标的波动率增加 1%,该合约价格的变化量 | 
| > portfolios | Array of objects | 资产组合 | 
| >> instId | String | 产品ID,如 BTC-USDT-SWAP | 
| >> instType | String | 产品类型 SPOT:现货SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| >> amt | String | instType为SPOT,代表现货对冲占用instType为SWAP/FUTURES/OPTION,代表仓位数量。 | 
| >> posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| >> avgPx | String | 平均开仓价格 | 
| >> markPxBf | String | 价格变动前标记价格 若用户没有传入idxVol,则返回 "" | 
| >> markPx | String | 标记价格 | 
| >> floatPnl | String | 浮动盈亏 | 
| >> notionalUsd | String | 美金价值 | 
| >> delta | String | instType为SPOT,代表资产数量。instType为SWAP/FUTURES/OPTION,代表(产品层面) 合约价格随标的价格变动的比例。 | 
| >> gamma | String | (产品层面) 标的价格对 Delta 值的影响程度 instType为SPOT,返回"" | 
| >> theta | String | (产品层面) 距离到期日时间缩短 1 天,该合约价格的变化量 instType为SPOT,返回"" | 
| >> vega | String | (产品层面) 标的波动率增加 1%,该合约价格的变化量 instType为SPOT,返回"" | 
| >> isRealPos | Boolean | 是否为真实仓位 instType为SWAP/FUTURES/OPTION,该字段有效,其他都默认返回false | 
| positions | Array of objects | 仓位信息 适用于 跨币种保证金模式 | 
| > instId | String | 产品ID,如 BTC-USDT-SWAP | 
| > instType | String | 产品类型 SPOT:现货SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| > amt | String | instType为SPOT,代表现货对冲占用instType为SWAP/FUTURES/OPTION,代表仓位数量。 | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| > avgPx | String | 平均开仓价格 | 
| > markPxBf | String | 价格变动前标记价格 若用户没有传入idxVol,则返回 "" | 
| > markPx | String | 标记价格 | 
| > floatPnl | String | 浮动盈亏 | 
| > imrBf | String | 价格变动前初始保证金 | 
| > imr | String | 初始保证金,仅适用于全仓 | 
| > mgnRatio | String | 维持保证金率 | 
| > lever | String | 杠杆倍数 | 
| > notionalUsd | String | 美金价值 | 
| > isRealPos | Boolean | 是否为真实仓位 instType为SWAP/FUTURES/OPTION,该字段有效,其他都默认返回false | 
仓位创建器趋势图
限速:1次/5s
限速规则:User ID
权限:读取
HTTP请求
POST /api/v5/account/position-builder-graph
请求示例
{
   "inclRealPosAndEq":false,
   "simPos":[
      {
         "pos":"-10",
         "instId":"BTC-USDT-SWAP",
         "avgPx":"100000"
      },
      {
         "pos":"10",
         "instId":"LTC-USDT-SWAP",
         "avgPx":"8000"
      }
   ],
   "simAsset":[
      {
         "ccy":"USDT",
         "amt":"100"
      }
   ],
   "greeksType":"CASH",
   "type":"mmr",
   "mmrConfig":{
      "acctLv":"3",
      "lever":"1"
   }
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| inclRealPosAndEq | Boolean | 否 | 是否代入已有仓位和资产 默认为 true | 
| simPos | Array of objects | 否 | 模拟仓位列表 | 
| > instId | String | 是 | 交易产品ID,如 BTC-USDT-SWAP适用于 SWAP/FUTURES/OPTION | 
| > pos | String | 是 | 持仓量 | 
| > avgPx | String | 是 | 平均开仓价格 | 
| > lever | String | 否 | 杠杆 仅适用于在跨币种保证金模式下指定交易产品的杠杆。如果用户不传,则选择默认杠杆为 1。 | 
| simAsset | Array of objects | 否 | 模拟资产 当 inclRealPosAndEq为true,只考虑真实资产,会忽略虚拟资产 | 
| > ccy | String | 是 | 币种,如 BTC | 
| > amt | String | 是 | 币种数量 可以为负,代表减少币种资产 | 
| type | String | 是 | 趋势图类型 mmr | 
| mmrConfig | Object | 是 | MMR配置 | 
| > acctLv | String | 否 | 切换至账户模式 3:跨币种保证金模式4:组合保证金模式 | 
| > lever | String | 否 | 跨币种下整体的全仓合约杠杆数量,默认为 1。如果超过允许的杠杆倍数,按照最大的杠杆设置。 适用于 跨币种保证金模式 | 
返回示例
{
    "code": "0",
    "data": [
         {
            "type": "mmr",
            "mmrData": [
               ......
               {
                     "mmr": "1415.0254039225917",
                     "mmrRatio": "-47.45603627655477",
                     "shockFactor": "-0.94"
               },
               {
                     "mmr": "1417.732491243024",
                     "mmrRatio": "-47.436684685735386",
                     "shockFactor": "-0.93"
               }
               ......
            ]
         }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 趋势图类型 mmr | 
| mmrData | Array | MMR数据 以shockFactor升序返回 | 
| > shockFactor | String | 价格变动比例,数据范围 -1 到 1. | 
| > mmr | String | 维持保证金 | 
| > mmrRatio | String | 维持保证金率 | 
设置现货对冲占用
用户自定义现货对冲占用数量,不代表实际现货对冲占用数量。仅适用于组合保证金模式。
限速:10次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-riskOffset-amt
请求示例
# 设置现货对冲占用
POST /api/v5/account/set-riskOffset-amt
{
   "ccy": "BTC",
   "clSpotInUseAmt": "0.5"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种,如 BTC | 
| clSpotInUseAmt | String | 是 | 用户自定义现货对冲数量 | 
返回示例
{
   "code": "0",
   "msg": "",
   "data": [
      {
         "ccy": "BTC",
         "clSpotInUseAmt": "0.5"
      }
   ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| clSpotInUseAmt | String | 用户自定义现货对冲数量 | 
查看账户Greeks
获取账户资产的greeks信息。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/greeks
请求示例
# 获取账户中所有资产的greeks
GET /api/v5/account/greeks
# 获取账户中BTC的greeks
GET /api/v5/account/greeks?ccy=BTC
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看账户Greeks
result = accountAPI.get_greeks()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
返回结果
{
    "code":"0",
    "data":[
        {            
           "thetaBS": "",
           "thetaPA":"",
           "deltaBS":"",
           "deltaPA":"",
           "gammaBS":"",
           "gammaPA":"",
           "vegaBS":"",    
           "vegaPA":"",
           "ccy":"BTC",
           "ts":"1620282889345"
        }
    ],
    "msg":""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| deltaBS | String | 美金本位账户资产delta | 
| deltaPA | String | 币本位账户资产delta | 
| gammaBS | String | 美金本位账户资产gamma,仅适用于 期权 | 
| gammaPA | String | 币本位账户资产gamma,仅适用于 期权 | 
| thetaBS | String | 美金本位账户资产theta,仅适用于 期权 | 
| thetaPA | String | 币本位账户资产theta,仅适用于 期权 | 
| vegaBS | String | 美金本位账户资产vega,仅适用于 期权 | 
| vegaPA | String | 币本位账户资产vega,仅适用于 期权 | 
| ccy | String | 币种 | 
| ts | String | 获取greeks的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取组合保证金模式仓位限制
仅支持获取组合保证金模式下,交割、永续和期权的全仓仓位限制。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/position-tiers
请求示例
# 查看BTC-USDT在组合保证金模式下的全仓限制
GET /api/v5/account/position-tiers?instType=SWAP&uly=BTC-USDT
import okx.Account as Account
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取组合保证金模式仓位限制
result = accountAPI.get_account_position_tiers(
    instType="SWAP",
    uly="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 是 | 交易品种,如 BTC-USDT,支持多个查询(不超过5个),instFamily之间半角逗号分隔 | 
返回结果
{
  "code": "0",
  "data": [
    {
      "instFamily": "BTC-USD",
      "maxSz": "10000",
      "posType": "",
      "uly": "BTC-USDT"
    }
  ],
  "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uly | String | 标的指数 适用于 交割/永续/期权 | 
| instFamily | String | 交易品种 适用于 交割/永续/期权 | 
| maxSz | String | 最大持仓量 | 
| posType | String | 限仓类型,仅适用于组合保证金模式下的期权全仓。 1:所有合约挂单 + 持仓张数,2:所有合约总挂单张数,3:所有合约总挂单单数,4:同方向合约挂单 + 持仓张数,5:单一合约总挂单单数,6:单一合约挂单 + 持仓张数,7:单笔挂单张数" | 
开通期权交易
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/activate-option
请求示例
POST /api/v5/account/activate-option
请求参数
无
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ts": "1600000000000"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开通时间 | 
设置自动借币
仅适用于跨币种保证金模式和组合保证金模式
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-auto-loan
请求示例
POST /api/v5/account/set-auto-loan
body
{
    "autoLoan":true,
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| autoLoan | Boolean | 否 | 是否自动借币 有效值为 true,false默认为 true | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "autoLoan": true
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| autoLoan | Boolean | 是否自动借币 | 
预设置账户模式切换
预设置账户模式切换的必要信息,若由组合保证金模式切换到合约模式/跨币种保证金模式,且存在全仓交割、永续仓位,则必须预设置lever,令所有仓位具有相同杠杆倍数。
若用户未按照规定进行设置,在预检查或设置账户模式时将接收到报错或提示信息。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/account-level-switch-preset
请求示例
# 1. 合约模式 -> 跨币种
POST /api/v5/account/account-level-switch-preset
body
{
    "acctLv": "3"
}
# 2. 跨币种 -> 合约模式
POST /api/v5/account/account-level-switch-preset
body
{
    "acctLv": "2"
}
# 3. 组合保证金 -> 合约模式/跨币种,且有全仓合约仓位,则必须传入lever
POST /api/v5/account/account-level-switch-preset
body
{
    "acctLv": "2",
    "lever": "10"
}
# 4. 组合保证金 -> 合约模式/跨币种,没有全仓合约仓位,则不需传入lever,不进行校验
POST /api/v5/account/account-level-switch-preset
body
{
    "acctLv": "3"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| acctLv | String | 是 | 账户模式 2: 合约模式3: 跨币种保证金模式4: 组合保证金模式 | 
| lever | String | 可选 | 在 组合保证金模式向合约模式/跨币种保证金模式切换,且用户有全仓仓位时,必须传入 | 
| riskOffsetType | String | 可选 | 1:现货对冲(USDT)2:现货对冲(币)3:衍生品对冲(未开启现货对冲)4:现货对冲(USDC)适用于 合约模式/跨币种保证金模式向组合保证金模式切换 | 
返回结果 1. 合约模式 -> 跨币种
{
    "acctLv": "3",
    "curAcctLv": "2",
    "lever": "",
    "riskOffsetType": ""
}
返回结果 2. 跨币种 -> 合约模式
{
    "acctLv": "2",
    "curAcctLv": "3",
    "lever": "",
    "riskOffsetType": ""
}
返回结果 3. 组合保证金 -> 合约模式/跨币种
{
    "acctLv": "2",
    "curAcctLv": "4",
    "lever": "10",
    "riskOffsetType": ""
}
返回结果 4. 组合保证金 -> 合约模式/跨币种,没有全仓合约仓位,则不需传入lever,不进行校验
{
    "acctLv": "3",
    "curAcctLv": "4",
    "lever": "",
    "riskOffsetType": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| curAcctLv | String | 当前账户类型 | 
| acctLv | String | 切换后的账户类型 | 
| lever | String | 用户预设置的全仓合约仓位杠杆倍数 | 
| riskOffsetType | String | 
预检查账户模式切换
获取账户模式切换预检查相关信息
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/set-account-switch-precheck
请求示例
GET /api/v5/account/set-account-switch-precheck?acctLv=3
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| acctLv | String | 是 | 账户模式 1: 现货模式2: 合约模式3: 跨币种保证金模式4: 组合保证金模式 | 
返回结果: 合约模式->跨币种,需要现在网页或移动端完成答题
{
    "code": "51070",
    "data": [],
    "msg": "您当前尚未达到升级至该账户模式的要求,请先在官方网站或APP完成账户模式的升级。"
}
返回结果: 合约模式->跨币种,有不兼容信息。sCode 1
{
    "code": "0",
    "data": [
        {
            "acctLv": "3",
            "curAcctLv": "1",
            "mgnAft": null,
            "mgnBf": null,
            "posList": [],
            "posTierCheck": [],
            "riskOffsetType": "",
            "sCode": "1",
            "unmatchedInfoCheck": [
                {
                    "posList": [],
                    "totalAsset": "",
                    "type": "repay_borrowings"
                }
            ]
        }
    ],
    "msg": ""
}
返回结果: 组合保证金->跨币种,未进行杠杆设置,展示用户全部合约全仓仓位。sCode 3
{
    "code": "0",
    "data": [
        {
            "acctLv": "3",
            "curAcctLv": "4",
            "mgnAft": null,
            "mgnBf": null,
            "posList": [
                {
                    "lever": "50",
                    "posId": "2005456500916518912"
                },
                {
                    "lever": "10",
                    "posId": "2005456108363218944"
                },
                {
                    "lever": "100",
                    "posId": "2005456332909477888"
                },
                {
                    "lever": "1",
                    "posId": "2005456415990251520"
                }
            ],
            "posTierCheck": [],
            "riskOffsetType": "",
            "sCode": "3",
            "unmatchedInfoCheck": []
        }
    ],
    "msg": ""
}
返回结果: 组合保证金->跨币种,已进行杠杆设置,将全部杠杆倍数设置为50,通过梯度档位及保证金校验。sCode 0
{
    "code": "0",
    "data": [
        {
            "acctLv": "3",
            "curAcctLv": "4",
            "mgnAft": {
                "acctAvailEq": "106002.2061970689",
                "details": [],
                "mgnRatio": "148.1652396878421"
            },
            "mgnBf": {
                "acctAvailEq": "77308.89735228613",
                "details": [],
                "mgnRatio": "4.460069474634038"
            },
            "posList": [
                {
                    "lever": "50",
                    "posId": "2005456500916518912"
                },
                {
                    "lever": "50",
                    "posId": "2005456108363218944"
                },
                {
                    "lever": "50",
                    "posId": "2005456332909477888"
                },
                {
                    "lever": "50",
                    "posId": "2005456415990251520"
                }
            ],
            "posTierCheck": [],
            "riskOffsetType": "",
            "sCode": "0",
            "unmatchedInfoCheck": []
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sCode | String | 校验码 0:通过所有验证1:有不兼容信息3:未进行杠杆设置4:梯度档位或保证金校验未通过 | 
| curAcctLv | String | 当前账户模式 1: 现货模式2: 合约模式3: 跨币种保证金模式4: 组合保证金模式所有情况下均返回 | 
| acctLv | String | 新账户模式 1: 现货模式2: 合约模式3: 跨币种保证金模式4: 组合保证金模式所有情况下均返回 | 
| riskOffsetType | String | 1:现货对冲(USDT)2:现货对冲(币)3:衍生品对冲4:现货对冲(USDC)acctLv为 4时返回,其余情况下返回""若用户有设置,则为用户的设置值;若没有设置,则为默认值 | 
| unmatchedInfoCheck | Array of objects | 包含不匹配信息对象的列表 仅在sCode为 1,有不兼容信息时返回,其他情况返回[] | 
| >> type | String | 不匹配信息类型 asset_validation:资产校验pending_orders:撮合挂单pending_algos:策略挂单,冰山、时间加权、定投等isolated_margin:杠杆逐仓一键借币及自主划转isolated_contract:合约逐仓自主划转contract_long_short:合约开平模式cross_margin:杠杆全仓开仓划转cross_option_buyer:期权全仓买方isolated_option:期权逐仓 (仅适用于简单账户)growth_fund:体验金仓位all_positions:所有仓位spot_lead_copy_only_simple_single:带单和自定义跟单员只能使用现货或合约模式stop_spot_custom:停止现货自定义跟单stop_futures_custom:停止合约自定义跟单lead_portfolio:身为带单员,您不能切换到组合保证金账户模式futures_smart_sync:您存在合约智能跟单,无法切换到现货模式repay_borrowings:存在借币compliance_restriction:合规,无法使用保证金交易相关服务compliance_kyc2:合规,无法使用保证金交易相关服务,如果您不是该地区居民,请进行KYC2身份认证 | 
| >> totalAsset | String | 总资产 仅在type为 asset_validation时返回,其他情况都为"" | 
| >> posList | Array of strings | 不匹配仓位列表,返回持仓ID 在type为仓位相关枚举值时返回,其他情况都为[] | 
| posList | Array of objects | 合约全仓仓位列表 适用于curAcctLv为 4,acctLv为2/3,且用户具有全仓合约仓位的情况在sCode为 0/3/4的情况下返回 | 
| > posId | String | 持仓ID | 
| > lever | String | 切换后的全仓仓位杠杆倍数 | 
| posTierCheck | Array of objects | 未满足梯度档位校验全仓仓位的列表 仅在sCode为 4时返回 | 
| > instFamily | String | 交易品种 | 
| > instType | String | 产品类型 SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| > pos | String | 持仓量 | 
| > lever | String | 杠杆倍数 | 
| > maxSz | String | 若acctLv为 2/3,目标账户模式为合约、跨币种,则为当前杠杆倍数下的最大持仓张数;若acctLv为4,目标账户模式为组合保证金,则为PM全仓最大持仓量上限 | 
| mgnBf | Object | 切换账户模式前的保证金相关信息 在sCode为 0/4时返回,其他时候为null | 
| > acctAvailEq | String | 美金层面可用保证金 在curAcctLv为 3/4时返回,其他情况返回"" | 
| > mgnRatio | String | 美金层面维持保证金率 在curAcctLv为 3/4时返回,其他情况返回"" | 
| > details | Array of objects | 各币种资产详细信息 仅在curAcctLv为 2时返回,其他情况返回[] | 
| >> ccy | String | 币种 | 
| >> availEq | String | 币种维度可用保证金 | 
| >> mgnRatio | String | 币种维度全仓维持保证金率 | 
| mgnAft | Object | 切换账户模式后的保证金相关信息 在sCode为 0/4时返回,其他时候为null | 
| > acctAvailEq | String | 美金层面可用保证金 在acctLv为 3/4时返回,其他情况返回"" | 
| > mgnRatio | String | 美金层面维持保证金率 在acctLv为 3/4时返回,其他情况返回"" | 
| > details | Array of objects | 各币种资产详细信息 仅在acctLv为 2时返回,其他情况返回"" | 
| >> ccy | String | 币种 | 
| >> availEq | String | 币种维度可用保证金 | 
| >> mgnRatio | String | 币种维度全仓维持保证金率 | 
设置账户模式
账户模式的首次设置,需要在网页或手机app上进行。若用户计划在持有仓位的情况下切换账户模式,应该先调用预设置接口进行必要的预设置,再调用预检查接口获取不匹配信息、保证金校验等相关信息,最后调用账户模式切换接口进行账户模式切换。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-account-level
请求示例
POST /api/v5/account/set-account-level
body
{
    "acctLv":"1"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| acctLv | String | 是 | 账户模式 1: 现货模式2: 合约模式3: 跨币种保证金模式4: 组合保证金模式 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data" :[
          {
            "acctLv":"1"
          }
    ]  
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| acctLv | String | 账户模式 | 
设置质押币种
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/set-collateral-assets
请求示例
# 设置全部币种为可质押资产
POST /api/v5/account/set-collateral-assets
body
{
    "type":"all",
    "collateralEnabled":true
}
# 设置自定义不可质押资产
POST /api/v5/account/set-collateral-assets
body
{
    "type":"custom",
    "ccyList":["BTC","ETH"],
    "collateralEnabled":false
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 是 | 设置币种类型 all:全部custom:自定义 | 
| collateralEnabled | Boolean | 是 | 是否设置为质押币种 true:设置为质押币false:取消质押币的设置 | 
| ccyList | Array of strings | 可选 | 币种列表,如 ["BTC","ETH"] 当type= custom,该字段必传。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data" :[
      {
        "type":"all",
        "ccyList":["BTC","ETH"],
        "collateralEnabled":false
      }
    ]  
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 设置币种类型 all:全部custom:自定义 | 
| collateralEnabled | Boolean | 是否已设置为质押币种 true:设置为质押币false:取消质押币的设置 | 
| ccyList | Array of strings | 币种列表,如 ["BTC","ETH"] | 
查看质押币种
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/collateral-assets
请求示例
GET /api/v5/account/collateral-assets
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种 支持多币种查询(不超过20个),币种之间半角逗号分隔,如 "BTC,ETH" | 
| collateralEnabled | Boolean | 否 | 是否为质押币 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data" :[
          {
            "ccy":"BTC",
            "collateralEnabled": true
          },
          {
            "ccy":"ETH",
            "collateralEnabled": false
          }
    ]  
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| collateralEnabled | Boolean | 是否为质押币 | 
重置 MMP 状态
一旦 MMP 被触发,可以使用该接口解冻。
仅适用于组合保证金账户模式下的期权订单,且有 MMP 权限。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/mmp-reset
请求示例
POST /api/v5/account/mmp-reset
body
{
    "instType":"OPTION",
    "instFamily":"BTC-USD"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 交易产品类型 OPTION:期权默认为期权 | 
| instFamily | String | 是 | 交易品种 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "result":true
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 重置结果 true:将做市商保护状态重置为了 inactive 状态false:重置失败 | 
设置 MMP
可以使用该接口进行 MMP 的配置。
仅适用于组合保证金账户模式下的期权订单,且有 MMP 权限。
限速:2次/10s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/account/mmp-config
请求示例
POST /api/v5/account/mmp-config
body
{
    "instFamily":"BTC-USD",
    "timeInterval":"5000",
    "frozenInterval":"2000",
    "qtyLimit": "100"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instFamily | String | 是 | 交易品种 | 
| timeInterval | String | 是 | 时间窗口 (毫秒)。 "0" 代表停用 MMP | 
| frozenInterval | String | 是 | 冻结时间长度 (毫秒)。 "0" 代表一直冻结,直到调用 "重置 MMP 状态" 接口解冻 | 
| qtyLimit | String | 是 | 成交数量的上限 需大于 0 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
        "frozenInterval":"2000",
        "instFamily":"BTC-USD",
        "qtyLimit": "100",
        "timeInterval":"5000"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instFamily | String | 交易品种 | 
| timeInterval | String | 时间窗口 (毫秒) | 
| frozenInterval | String | 冻结时间长度 (毫秒) | 
| qtyLimit | String | 成交张数的上限 | 
查看 MMP 配置
可以使用该接口获取 MMP 的配置信息。
仅适用于组合保证金账户模式下的期权订单,且有 MMP 权限。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/mmp-config
请求示例
GET /api/v5/account/mmp-config?instFamily=BTC-USD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instFamily | String | 否 | 交易品种 | 
返回结果
{
  "code": "0",
  "data": [
    {
      "frozenInterval": "2000",
      "instFamily": "ETH-USD",
      "mmpFrozen": true,
      "mmpFrozenUntil": "1000",
      "qtyLimit": "10",
      "timeInterval": "5000"
    }
  ],
  "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instFamily | String | 交易品种 | 
| mmpFrozen | Boolean | 是否 MMP 被触发. true或者false | 
| mmpFrozenUntil | String | 如果配置了frozenInterval且mmpFrozen = true,则为不再触发MMP时的时间窗口(单位为ms),否则为“” | 
| timeInterval | String | 时间窗口 (毫秒) | 
| frozenInterval | String | 冻结时间长度 (毫秒)。 如果为"0",代表一直冻结,直到调用 "重置 MMP 状态" 接口解冻,且 mmpFrozenUntil为 ""。 | 
| qtyLimit | String | 成交张数的上限 | 
移仓
仅适用于交易等级大于等于VIP5的用户,仅能通过母账户的API Key调用。用户可通过我的手续费页面的手续费详情表格查看自己的交易等级。
支持同一母账户下的子账户间仓位划转。每个源账户每24小时最多可触发15次移仓请求,目标账户接受移仓不受次数限制。参考下文“注意事项”部分,以获取详情。
限速:1次/1s
限速规则:母账户 User ID
HTTP请求
POST /api/v5/account/move-positions
请求示例
{
   "fromAcct":"0",
   "toAcct":"test",
   "legs":[
      {
         "from":{
            "posId":"2065471111340792832",
            "side":"sell",
            "sz":"1"
         },
         "to":{
            "posSide":"net",
            "tdMode":"cross"
         }
      },
      {
         "from":{
            "posId":"2063111180412153856",
            "side":"sell",
            "sz":"1"
         },
         "to":{
            "posSide":"net",
            "tdMode":"cross"
         }
      }
   ],
   "clientId":"test"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| fromAcct | String | 是 | 源账户名,使用"0"代表母账户 | 
| toAcct | String | 是 | 目标账户名,使用"0"代表母账户 | 
| legs | Array of Objects | 是 | 移仓仓位列表,每次最多支持30个仓位 | 
| > from | Object | 是 | 源账户仓位 | 
| >> posId | String | 是 | 源账户持仓ID | 
| >> sz | String | 是 | 合约数量 | 
| >> side | String | 是 | 源账户的交易方向 buysell | 
| > to | Object | 是 | 目标账户移仓配置 | 
| >> tdMode | String | 否 | 目标账户的交易模式 cross:全仓isolated:逐仓若未提供,tdMode会采用以下默认值: 在合约模式或跨币种保证金模式下买入期权: isolated其他情况: cross | 
| >> posSide | String | 否 | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式当目标账户处于买卖模式时,用户不需传入该参数,若传入,唯一有效值为 net;当处于开平仓模式时,有效值为long,short,若未指定,目标账户将总是开仓 | 
| >> ccy | String | 否 | 目标账户保证金币种 仅适用于 合约模式下的全仓杠杆仓位 | 
| clientId | String | 是 | 客户自定义ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "clientId": "test",
            "blockTdId": "2065832911119076864",
            "state": "filled",
            "ts": "1734069018526",
            "fromAcct": "0",
            "toAcct": "test",
            "legs": [
                {
                    "from": {
                        "posId": "2065471111340792832",
                        "instId": "BTC-USD-SWAP",
                        "px": "100042.7",
                        "side": "sell",
                        "sz": "1",
                        "sCode": "0",
                        "sMsg": ""
                    },
                    "to": {
                        "instId": "BTC-USD-SWAP",
                        "px": "100042.7",
                        "side": "buy",
                        "sz": "1",
                        "tdMode": "cross",
                        "posSide": "net",
                        "ccy": "",
                        "sCode": "0",
                        "sMsg": ""
                    }
                },
                {
                    "from": {
                        "posId": "2063111180412153856",
                        "instId": "BTC-USDT-SWAP",
                        "px": "100008.1",
                        "side": "sell",
                        "sz": "1",
                        "sCode": "0",
                        "sMsg": ""
                    },
                    "to": {
                        "instId": "BTC-USDT-SWAP",
                        "px": "100008.1",
                        "side": "buy",
                        "sz": "1",
                        "tdMode": "cross",
                        "posSide": "net",
                        "ccy": "",
                        "sCode": "0",
                        "sMsg": ""
                    }
                }
            ]
        }
    ]
}
返回示例:失败
// 目标账户处于开平仓模式,传入posSide:net不匹配
{
    "code": "51000",
    "msg": "Incorrect type of posSide (leg with Instrument Id [BTC-USD-SWAP])",
    "data": []
}
// 目标账户的BTC余额不足以开新仓位
{
    "code": "51008",
    "msg": "Order failed. Insufficient BTC margin in account",
    "data": []
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,代码为0时,该字段为空 | 
| blockTdId | String | 大宗交易ID | 
| clientId | String | 客户自定义ID | 
| state | String | 移仓状态, filledfailed | 
| fromAcct | String | 源账户名 | 
| toAcct | String | 目标账户名 | 
| legs | Array | 移仓仓位列表 | 
| > from | Object | 源账户仓位 | 
| >> instId | String | 产品ID | 
| >> posId | String | 持仓ID | 
| >> px | String | 移仓价格,过去60分钟的标记价格TWAP | 
| >> side | String | 源账户的交易方向 buysell | 
| >> sz | String | 合约数量 | 
| >> sCode | String | 事件执行结果的code,0代表成功 | 
| >> sMsg | String | 事件执行失败或成功时的msg | 
| > to | Object | 目标账户移仓配置 | 
| >> instId | String | 产品ID | 
| >> side | String | 目标账户交易方向 | 
| >> posSide | String | 目标账户持仓方向 | 
| >> tdMode | String | 目标账户的交易模式 | 
| >> px | String | 移仓价格,过去60分钟的标记价格TWAP | 
| >> ccy | String | 保证金币种 | 
| >> sCode | String | 事件执行结果的code,0代表成功 | 
| >> sMsg | String | 事件执行失败或成功时的msg | 
| ts | String | 移仓请求处理时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
注意事项
- 仅适用于交易等级大于等于VIP5的用户,仅能通过母账户的API Key调用
- 移仓的源账户和目标账户必须是统一主账户下的子账户,且两者不能相同
- 对于源账户,24小时内最多可触发15次移仓请求,目标账户接收仓位没有次数限制,只有成功的请求才会计入该限制
- 每个移仓请求最多支持30个仓位
- 目前暂不收取移仓手续费
- 目前币币杠杆交易产生的仓位不支持移仓
- 移仓价格采用过去60分钟内每分钟标记价格收盘价的TWAP(时间加权平均价格),若交易对为新上币且无法获取60分钟TWAP,移仓将被拒绝并返回错误码70065
- 移仓适用于订单簿相同的限价,若标记价格TWAP超出限价范围,移仓将失败
- 对源账户而言,移仓必须以只减仓模式进行;必须选择当前持仓的相反方向,且划转数量需小于或等于现有持仓量;系统将以尽力而为的方式按只减仓原则处理移仓请求
- 当持有多仓时,源账户的side字段应为sell,目标账户则应为buy;空仓时,方向相反
- 目标账户若为买卖模式,posSide应为net;若为开平仓模式,则需指定posSide为long/short以决定平仓或反向开仓,未指定时默认开新仓:
- 开多:买入开多(side: buy; posSide: long)
- 开空:卖出开空(side: sell; posSide: short)
- 平多:卖出平多(side: sell; posSide: long)
- 平空:买入平空(side: buy; posSide: short
 
- 移仓历史可通过“获取移仓历史”接口查询,该接口仅包含处理中或成功的请求
- 移仓操作计数示例
| 移仓操作 | 账户A总计次数 | 账户B总计次数 | 账户C总计次数 | 账户D总计次数 | 
|---|---|---|---|---|
| 账户A到账户B | 1 | 0 | 0 | 0 | 
| 账户B到账户C | 1 | 1 | 0 | 0 | 
| 账户B到账户D | 1 | 2 | 0 | 0 | 
获取移仓历史
仅适用于交易等级大于等于VIP5的用户,仅能通过母账户的API Key调用。用户可通过我的手续费页面的手续费详情表格查看自己的交易等级。
获取过去三天的移仓明细。
限速:2次/2s
限速规则:母账户 User ID
HTTP请求
GET /api/v5/account/move-positions-history
请求示例
Get /api/v5/account/move-positions-history
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| blockTdId | String | 否 | 大宗交易ID | 
| clientId | String | 否 | 客户自定义ID字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 | 
| beginTs | String | 否 | 用开始时间戳筛选执行时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| endTs | String | 否 | 用结束时间戳筛选执行时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
| state | String | 否 | 移仓状态, filledpending | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "clientId": "test",
            "blockTdId": "2066393411110139648",
            "state": "filled",
            "ts": "1734085725000",
            "fromAcct": "0",
            "toAcct": "test",
            "legs": [
                {
                    "from": {
                        "posId": "2065477911110792832",
                        "instId": "BTC-USD-SWAP",
                        "px": "100123.8",
                        "side": "sell",
                        "sz": "1"
                    },
                    "to": {
                        "instId": "BTC-USD-SWAP",
                        "px": "100123.8",
                        "side": "buy",
                        "sz": "1",
                        "tdMode": "cross",
                        "posSide": "net",
                        "ccy": ""
                    }
                },
                {
                    "from": {
                        "posId": "2063533111112153856",
                        "instId": "BTC-USDT-SWAP",
                        "px": "100078.7",
                        "side": "sell",
                        "sz": "1"
                    },
                    "to": {
                        "instId": "BTC-USDT-SWAP",
                        "px": "100078.7",
                        "side": "buy",
                        "sz": "1",
                        "tdMode": "cross",
                        "posSide": "net",
                        "ccy": ""
                    }
                }
            ]
        }
   ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| clientId | String | 客户自定义ID | 
| blockTdId | String | 大宗交易ID | 
| state | String | 移仓状态, filledfailed | 
| ts | String | 移仓请求处理时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| fromAcct | String | 源账户名 | 
| toAcct | String | 目标账户名 | 
| legs | Array | 移仓仓位列表 | 
| > from | Object | 源账户仓位 | 
| >> instId | String | 产品ID | 
| >> posId | String | 持仓ID | 
| >> px | String | 移仓价格,过去60分钟的标记价格TWAP | 
| >> side | String | 源账户的交易方向 buysell | 
| >> sz | String | 合约数量 | 
| > to | Object | 目标账户移仓配置 | 
| >> instId | String | 产品ID | 
| >> px | String | 移仓价格,过去60分钟的标记价格TWAP | 
| >> side | String | 目标账户交易方向 | 
| >> sz | String | 合约数量 | 
| >> tdMode | String | 目标账户的交易模式 | 
| >> posSide | String | 目标账户持仓方向 | 
| >> ccy | String | 保证金币种 | 
设置自动赚币
开启/关闭自动赚币
限速:2次/2s
限速规则:User ID
HTTP请求
POST /api/v5/account/set-auto-earn
请求示例
// 开启自动赚币
{
   "earnType": "0",
   "ccy":"BTC",
   "action":"turn_on"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| earnType | String | 否 | 自动赚币类型 0: 自动赚币 (自动出借、自动质押)1: 自动赚币(USDG 赚币)默认值为 0 | 
| ccy | String | 是 | 币种 | 
| action | String | 是 | 自动赚币操作类型 turn_on: 开启自动赚币turn_off: 关闭自动赚币amend: 修改最低年化收益率,仅适用于 earnType0 | 
| apr | String | 可选 | 
返回结果
{
   "code":"0",
   "msg":"",
   "data":[
      {
         "earnType": "0",
         "ccy":"BTC",
         "action":"turn_on",
         "apr":"0.01"
      }
   ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| earnType | String | 自动赚币类型 0: 自动赚币 (自动出借、自动质押)1: 自动赚币(USDG 赚币) | 
| ccy | String | 币种 | 
| action | Boolean | 自动赚币操作类型 turn_onturn_offamend | 
| apr | String | 
设置结算币种
仅适用于 USD 本位合约。
限速:20 次/2 秒
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/account/set-settle-currency
请求示例
POST /api/v5/account/set-settle-currency
body
{
    "settleCcy": "USDC"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| settleCcy | String | 是 | USD 本位合约结算币种 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data" :[
          {
            "settleCcy":"USDC"
          }
    ]  
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| settleCcy | String | USD 本位合约结算币种 | 
WebSocket
账户频道
获取账户信息,首次订阅按照订阅维度推送数据,此外,当下单、撤单、成交等事件触发时,推送数据以及按照订阅维度定时推送数据
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "account",
        "ccy": "BTC"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "account",
        "ccy": "BTC"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [
    {
      "channel": "account",
      "extraParams": "
        {
          \"updateInterval\": \"0\"
        }
      "
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "account",
          "extraParams": "{\"updateInterval\": \"0\"}"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 account | 
| > ccy | String | 否 | 币种 | 
| > extraParams | String | 否 | 额外配置 | 
| >> updateInterval | int | 否 | 0: 仅根据账户事件推送数据若不添加该字段或将其设置为除0外的其他值,数据将根据事件推送并定时推送。 使用该字段需严格遵守以下格式。 "extraParams": " { \"updateInterval\": \"0\" } " | 
成功返回示例:单个
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "account",
        "ccy": "BTC"
    },
  "connId": "a4d3ae55"
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def privateCallback(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{"channel": "account"}]
    await ws.subscribe(args, callback=privateCallback)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=privateCallback)
    await asyncio.sleep(10)
asyncio.run(main())
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "account"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"account\", \"ccy\" : \"BTC\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 account | 
| > ccy | String | 否 | 币种 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "account",
        "uid": "44*********584"
    },
    "eventType": "snapshot",
    "curPage": 1,
    "lastPage": true,
    "data": [{
        "adjEq": "55444.12216906034",
        "availEq": "55444.12216906034",
        "borrowFroz": "0",
        "details": [{
            "availBal": "4734.371190691436",
            "availEq": "4734.371190691435",
            "borrowFroz": "0",
            "cashBal": "4750.426970691436",
            "ccy": "USDT",
            "coinUsdPrice": "0.99927",
            "crossLiab": "0",
            "colRes": "0",
            "collateralEnabled": false,
            "collateralRestrict": false,
            "colBorrAutoConversion": "0",
            "disEq": "4889.379316336831",
            "eq": "4892.951170691435",
            "eqUsd": "4889.379316336831",
            "smtSyncEq": "0",
            "spotCopyTradingEq": "0",
            "fixedBal": "0",
            "frozenBal": "158.57998",
            "imr": "",
            "interest": "0",
            "isoEq": "0",
            "isoLiab": "0",
            "isoUpl": "0",
            "liab": "0",
            "maxLoan": "0",
            "mgnRatio": "",
            "mmr": "",
            "notionalLever": "",
            "ordFrozen": "0",
            "rewardBal": "0",
            "spotInUseAmt": "",
            "clSpotInUseAmt": "",
            "maxSpotInUseAmt": "",          
            "spotIsoBal": "0",
            "stgyEq": "150",
            "twap": "0",
            "uTime": "1705564213903",
            "upl": "-7.475800000000003",
            "uplLiab": "0",
            "spotBal": "",
            "openAvgPx": "",
            "accAvgPx": "",
            "spotUpl": "",
            "spotUplRatio": "",
            "totalPnl": "",
            "totalPnlRatio": ""
        }],
        "imr": "0",
        "isoEq": "0",
        "mgnRatio": "",
        "mmr": "0",
        "notionalUsd": "0",
        "notionalUsdForBorrow": "0",
        "notionalUsdForFutures": "0",
        "notionalUsdForOption": "0",
        "notionalUsdForSwap": "0",
        "ordFroz": "0",
        "totalEq": "55868.06403501676",
        "uTime": "1705564223311",
        "upl": "0"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 请求订阅的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| eventType | String | 事件类型: snapshot: 首推及定时快照推送event_update:事件推送 | 
| curPage | Integer | 当前消息分页页数 仅适用于 snapshot事件类型,event_update时不返回。 | 
| lastPage | Boolean | 当前消息是否为最后一页: truefalse仅适用于 snapshot事件类型,event_update时不返回. | 
| data | Array of objects | 订阅的数据 | 
| > uTime | String | 获取账户信息的最新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > totalEq | String | 美金层面权益 | 
| > isoEq | String | 美金层面逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > adjEq | String | 美金层面有效保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > availEq | String | 账户美金层面可用保证金,排除因总质押借币上限而被限制的币种 适用于 跨币种保证金模式/组合保证金模式 | 
| > ordFroz | String | 美金层面全仓挂单占用保证金 仅适用于 现货模式/跨币种保证金模式 | 
| > imr | String | 美金层面占用保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > mmr | String | 美金层面维持保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > borrowFroz | String | 账户美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| > mgnRatio | String | 美金层面维持保证金率 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > notionalUsd | String | 以美金价值为单位的持仓数量,即仓位美金价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > notionalUsdForBorrow | String | 借币金额(美元价值) 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > notionalUsdForSwap | String | 永续合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| > notionalUsdForFutures | String | 交割合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| > notionalUsdForOption | String | 期权持仓美元价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > upl | String | 账户层面全仓未实现盈亏(美元单位) 适用于 跨币种保证金模式/组合保证金模式 | 
| > details | Array | 各币种资产详细信息 | 
| >> ccy | String | 币种 | 
| >> eq | String | 币种总权益 | 
| >> cashBal | String | 币种余额 | 
| >> uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| >> isoEq | String | 币种逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| >> availEq | String | 可用保证金 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| >> disEq | String | 美金层面币种折算权益 | 
| >> fixedBal | String | 抄底宝、逃顶宝功能的币种冻结金额 | 
| >> availBal | String | 可用余额 | 
| >> frozenBal | String | 币种占用金额 | 
| >> ordFrozen | String | 挂单冻结数量 适用于 现货模式/合约模式/跨币种保证金模式 | 
| >> liab | String | 币种负债额 值为正数,如 21625.64适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| >> upl | String | 未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| >> uplLiab | String | 由于仓位未实现亏损导致的负债 适用于 跨币种保证金模式/组合保证金模式 | 
| >> crossLiab | String | 币种全仓负债额 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| >> isoLiab | String | 币种逐仓负债额 适用于 跨币种保证金模式/组合保证金模式 | 
| >> rewardBal | String | 体验金余额 | 
| >> mgnRatio | String | 币种全仓维持保证金率,衡量账户内某项资产风险的指标 适用于 合约模式且有全仓仓位时 | 
| >> imr | String | 币种维度全仓占用保证金 适用于 合约模式且有全仓仓位时 | 
| >> mmr | String | 币种维度全仓维持保证金 适用于 合约模式且有全仓仓位时 | 
| >> interest | String | 计息 值为正数,如 9.01适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| >> twap | String | 当前负债币种触发自动换币的风险 0、1、2、3、4、5其中之一,数字越大代表您的负债币种触发自动换币概率越高 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| >> frpType | String | 自动换币类型 0:未发生自动换币1:基于用户的自动换币2:基于平台借币限额的自动换币当twap>=1时返回1或2代表自动换币风险类型,适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| >> maxLoan | String | 币种最大可借 适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓 | 
| >> eqUsd | String | 币种权益美金价值 | 
| >> notionalLever | String | 币种杠杆倍数 适用于 合约模式 | 
| >> coinUsdPrice | String | 币种美元指数 | 
| >> stgyEq | String | 策略权益 | 
| >> isoUpl | String | 逐仓未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| >> borrowFroz | String | 币种美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| >> spotInUseAmt | String | 现货对冲占用数量 适用于 组合保证金模式 | 
| >> clSpotInUseAmt | String | 用户自定义现货占用数量 适用于 组合保证金模式 | 
| >> maxSpotInUseAmt | String | 系统计算得到的最大可能现货占用数量 适用于 组合保证金模式 | 
| >> spotIsoBal | String | 现货逐仓余额 仅适用于现货带单/跟单 适用于 现货模式/合约模式 | 
| >> smtSyncEq | String | 合约智能跟单权益 默认为0,仅适用于跟单人。 | 
| >> spotCopyTradingEq | String | 现货智能跟单权益 默认为0,仅适用于跟单人。 | 
| >> spotBal | String | 现货余额 ,单位为 币种,比如 BTC。详情 | 
| >> openAvgPx | String | 现货开仓成本价 单位 USD。 详情 | 
| >> accAvgPx | String | 现货累计成本价 单位 USD。 详情 | 
| >> spotUpl | String | 现货未实现收益,单位 USD。 详情 | 
| >> spotUplRatio | String | 现货未实现收益率。详情 | 
| >> totalPnl | String | 现货累计收益,单位 USD。 详情 | 
| >> totalPnlRatio | String | 现货累计收益率。详情 | 
| >> colRes | String | 平台维度质押限制状态 0:限制未触发1:限制未触发,但该币种接近平台质押上限2:限制已触发。该币种不可用作新订单的保证金,这可能会导致下单失败。但它仍会被计入账户有效保证金,保证金率不会收到影响。更多详情,请参阅平台总质押借币上限说明。 | 
| >> colBorrAutoConversion | String | 基于平台质押借币限额的自动换币风险指标。分为1-5多个等级,数字越大,触发自动换币的可能性越大。默认值为0,表示当前无风险。5表示该用户正在进行自动换币,4代表该用户即将被进行自动换币,1/2/3表示存在自动换币风险。 适用于 现货模式/合约模式/跨币种保证金模式/组合保证金模式当某币种的全平台质押借币量超出平台总上限一定比例时,对于质押该币种且借币量较大的用户,平台将通过自动换币降低质押借币风险。请减少该币种的质押数量或偿还负债,以降低风险。 更多详情,请参阅平台总质押借币上限说明。 | 
| >> collateralRestrict | Boolean | truefalse | 
| >> collateralEnabled | Boolean | true:质押币false:非质押币适用于`跨币种保证金模式 | 
持仓频道
获取持仓信息,首次订阅按照订阅维度推送数据,此外,当下单、撤单等事件触发时,推送数据以及按照订阅维度定时推送数据
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "positions",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "positions",
          "instType": "FUTURES",
          "instFamily": "BTC-USD"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [
        {
            "channel": "positions",
            "instType": "ANY",
            "extraParams": "
                {
                    \"updateInterval\": \"0\"
                }
            "
        }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
            "channel": "positions",
            "instType": "ANY",
            "extraParams": "{\"updateInterval\": \"0\"}"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 positions | 
| > instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID 如果同时传了 instId 和 instFamily,instId 将被使用 | 
| > extraParams | String | 否 | 额外配置 | 
| >> updateInterval | int | 否 | 0: 仅根据持仓事件推送数据2000, 3000, 4000: 根据持仓事件推送,且根据设置的时间间隔定时推送(ms)若不添加该字段或将其设置为上述合法值以外的其他值,数据将根据事件推送并大约每 5 秒定期推送一次。 使用该字段需严格遵守以下格式。 "extraParams": " { \"updateInterval\": \"0\" } " | 
成功返回示例:单个
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "positions",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "positions",
        "instType": "ANY"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"positions\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg":{
        "channel":"positions",
        "uid": "77982378738415879",
        "instType":"FUTURES"
    },
    "eventType": "snapshot",
    "curPage": 1,
    "lastPage": true,
    "data":[
        {
            "adl":"1",
            "availPos":"1",
            "avgPx":"2566.31",
            "cTime":"1619507758793",
            "ccy":"ETH",
            "deltaBS":"",
            "deltaPA":"",
            "gammaBS":"",
            "gammaPA":"",
            "imr":"",
            "instId":"ETH-USD-210430",
            "instType":"FUTURES",
            "interest":"0",
            "idxPx":"2566.13",
            "last":"2566.22",
            "lever":"10",
            "liab":"",
            "liabCcy":"",
            "liqPx":"2352.8496681818233",
            "markPx":"2353.849",
            "margin":"0.0003896645377994",
            "mgnMode":"isolated",
            "mgnRatio":"11.731726509588816",
            "mmr":"0.0000311811092368",
            "notionalUsd":"2276.2546609009605",
            "optVal":"",
            "pTime":"1619507761462",
            "pendingCloseOrdLiabVal":"0.1",
            "pos":"1",
            "baseBorrowed": "",
            "baseInterest": "",
            "quoteBorrowed": "",
            "quoteInterest": "",
            "posCcy":"",
            "posId":"307173036051017730",
            "posSide":"long",
            "spotInUseAmt": "",
            "clSpotInUseAmt": "",
            "maxSpotInUseAmt": "",
            "spotInUseCcy": "",
            "bizRefId": "",
            "bizRefType": "",
            "thetaBS":"",
            "thetaPA":"",
            "tradeId":"109844",
            "uTime":"1619507761462",
            "upl":"-0.0000009932766034",
            "uplLastPx":"-0.0000009932766034",
            "uplRatio":"-0.0025490556801078",
            "uplRatioLastPx":"-0.0025490556801078",
            "vegaBS":"",
            "vegaPA":"",
            "realizedPnl":"0.001",
            "pnl":"0.0011",
            "fee":"-0.0001",
            "fundingFee":"0",
            "liqPenalty":"0",
            "nonSettleAvgPx":"",
            "settledPnl":"",
            "closeOrderAlgo":[
                {
                    "algoId":"123",
                    "slTriggerPx":"123",
                    "slTriggerPxType":"mark",
                    "tpTriggerPx":"123",
                    "tpTriggerPxType":"mark",
                    "closeFraction":"0.6"
                },
                {
                    "algoId":"123",
                    "slTriggerPx":"123",
                    "slTriggerPxType":"mark",
                    "tpTriggerPx":"123",
                    "tpTriggerPxType":"mark",
                    "closeFraction":"0.4"
                }
            ]
        }
    ]
}
推送示例
{
    "arg": {
        "channel": "positions",
        "uid": "77982378738415879",
        "instType": "ANY"
    },
    "eventType": "snapshot",
    "curPage": 1,
    "lastPage": true,
    "data": [{
        "adl": "1",
        "availPos": "1",
        "avgPx": "2566.31",
        "cTime": "1619507758793",
        "ccy": "ETH",
        "deltaBS": "",
        "deltaPA": "",
        "gammaBS": "",
        "gammaPA": "",
        "imr": "",
        "instId": "ETH-USD-210430",
        "instType": "FUTURES",
        "interest": "0",
        "idxPx": "2566.13",
        "last": "2566.22",
        "usdPx": "",
        "bePx": "2353.949",
        "lever": "10",
        "liab": "",
        "liabCcy": "",
        "liqPx": "2352.8496681818233",
        "markPx": "2353.849",
        "margin": "0.0003896645377994",
        "mgnMode": "isolated",
        "mgnRatio": "11.731726509588816",
        "mmr": "0.0000311811092368",
        "notionalUsd": "2276.2546609009605",
        "optVal": "",
        "pendingCloseOrdLiabVal": "0.1",
        "pTime": "1619507761462",
        "pos": "1",
        "baseBorrowed": "",
        "baseInterest": "",
        "quoteBorrowed": "",
        "quoteInterest": "",
        "posCcy": "",
        "posId": "307173036051017730",
        "posSide": "long",
        "spotInUseAmt": "",
        "clSpotInUseAmt": "",
        "maxSpotInUseAmt": "",
        "spotInUseCcy": "",
        "bizRefId": "",
        "bizRefType": "",
        "thetaBS": "",
        "thetaPA": "",
        "tradeId": "109844",
        "uTime": "1619507761462",
        "upl": "-0.0000009932766034",
        "uplLastPx": "-0.0000009932766034",
        "uplRatio": "-0.0025490556801078",
        "uplRatioLastPx": "-0.0025490556801078",
        "vegaBS": "",
        "vegaPA": "",
        "realizedPnl": "0.001",
        "pnl": "0.0011",
        "fee": "-0.0001",
        "fundingFee": "0",
        "liqPenalty": "0",
        "nonSettleAvgPx": "",
        "settledPnl": "",
        "closeOrderAlgo": [{
                "algoId": "123",
                "slTriggerPx": "123",
                "slTriggerPxType": "mark",
                "tpTriggerPx": "123",
                "tpTriggerPxType": "mark",
                "closeFraction": "0.6"
            },
            {
                "algoId": "123",
                "slTriggerPx": "123",
                "slTriggerPxType": "mark",
                "tpTriggerPx": "123",
                "tpTriggerPxType": "mark",
                "closeFraction": "0.4"
            }
        ]
    }, {
        "adl": "1",
        "availPos": "1",
        "avgPx": "2566.31",
        "cTime": "1619507758793",
        "ccy": "ETH",
        "deltaBS": "",
        "deltaPA": "",
        "gammaBS": "",
        "gammaPA": "",
        "imr": "",
        "instId": "ETH-USD-SWAP",
        "instType": "SWAP",
        "interest": "0",
        "idxPx": "2566.13",
        "last": "2566.22",
        "usdPx": "",
        "bePx": "2353.949",
        "lever": "10",
        "liab": "",
        "liabCcy": "",
        "liqPx": "2352.8496681818233",
        "markPx": "2353.849",
        "margin": "0.0003896645377994",
        "mgnMode": "isolated",
        "mgnRatio": "11.731726509588816",
        "mmr": "0.0000311811092368",
        "notionalUsd": "2276.2546609009605",
        "optVal": "",
        "pendingCloseOrdLiabVal": "0.1",
        "pTime": "1619507761462",
        "pos": "1",
        "baseBorrowed": "",
        "baseInterest": "",
        "quoteBorrowed": "",
        "quoteInterest": "",
        "posCcy": "",
        "posId": "307173036051017730",
        "posSide": "long",
        "spotInUseAmt": "",
        "clSpotInUseAmt": "",
        "maxSpotInUseAmt": "",
        "spotInUseCcy": "",
        "bizRefId": "",
        "bizRefType": "",
        "thetaBS": "",
        "thetaPA": "",
        "tradeId": "109844",
        "uTime": "1619507761462",
        "upl": "-0.0000009932766034",
        "uplLastPx": "-0.0000009932766034",
        "uplRatio": "-0.0025490556801078",
        "uplRatioLastPx": "-0.0025490556801078",
        "vegaBS": "",
        "vegaPA": "",
        "realizedPnl": "0.001",
        "pnl": "0.0011",
        "fee": "-0.0001",
        "fundingFee": "0",
        "liqPenalty": "0",
        "nonSettleAvgPx": "",
        "settledPnl": "",
        "closeOrderAlgo": [{
                "algoId": "123",
                "slTriggerPx": "123",
                "slTriggerPxType": "mark",
                "tpTriggerPx": "123",
                "tpTriggerPxType": "mark",
                "closeFraction": "0.6"
            },
            {
                "algoId": "123",
                "slTriggerPx": "123",
                "slTriggerPxType": "mark",
                "tpTriggerPx": "123",
                "tpTriggerPxType": "mark",
                "closeFraction": "0.4"
            }
        ]
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 | 
| > instId | String | 产品ID | 
| eventType | String | 事件类型: snapshot: 首推及定时快照推送event_update:事件推送 | 
| curPage | Integer | 当前消息分页页数 仅适用于 snapshot事件类型,event_update时不返回。 | 
| lastPage | Boolean | 当前消息是否为最后一页: truefalse仅适用于 snapshot事件类型,event_update时不返回. | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > mgnMode | String | 保证金模式, cross:全仓isolated:逐仓 | 
| > posId | String | 持仓ID | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。) | 
| > pos | String | 持仓数量,逐仓自主划转模式下,转入保证金后会产生pos为 0的仓位 | 
| > baseBal | String | 币币杠杆(逐仓一键借币模式) | 
| > quoteBal | String | 币币杠杆(逐仓一键借币模式) | 
| > baseBorrowed | String | 币币杠杆(逐仓一键借币模式) | 
| > baseInterest | String | 币币杠杆(逐仓一键借币模式) | 
| > quoteBorrowed | String | 币币杠杆(逐仓一键借币模式) | 
| > quoteInterest | String | 币币杠杆(逐仓一键借币模式) | 
| > posCcy | String | 持仓数量币种,仅适用于 币币杠杆 | 
| > availPos | String | 可平仓数量,适用于 币币杠杆,期权对于杠杆仓位,平仓时,杠杆还清负债后,余下的部分会视为币币交易,如果想要减少币币交易的数量,可通过"获取最大可用数量"接口获取只减仓的可用数量。 | 
| > avgPx | String | 开仓平均价 | 
| > upl | String | 未实现收益(以标记价格计算) | 
| > uplRatio | String | 未实现收益率(以标记价格计算 | 
| > uplLastPx | String | 以最新成交价格计算的未实现收益,主要做展示使用,实际值还是 upl | 
| > uplRatioLastPx | String | 以最新成交价格计算的未实现收益率 | 
| > instId | String | 产品ID,如 BTC-USDT-SWAP | 
| > lever | String | 杠杆倍数,不适用于 期权卖方 | 
| > liqPx | String | 预估强平价 不适用于 期权 | 
| > markPx | String | 最新标记价格 | 
| > imr | String | 初始保证金,仅适用于 全仓 | 
| > margin | String | 保证金余额,仅适用于 逐仓,可增减 | 
| > mgnRatio | String | 维持保证金率 | 
| > mmr | String | 维持保证金 | 
| > liab | String | 负债额,仅适用于 币币杠杆 | 
| > liabCcy | String | 负债币种,仅适用于 币币杠杆 | 
| > interest | String | 利息,已经生成未扣利息 | 
| > tradeId | String | 最新成交ID | 
| > notionalUsd | String | 以美金价值为单位的持仓数量 | 
| > optVal | String | 期权价值,仅适用于 期权 | 
| > pendingCloseOrdLiabVal | String | 逐仓杠杆负债对应平仓挂单的数量 | 
| > adl | String | 自动减仓信号区,分为6档,从0到5,数字越小代表adl强度越弱 仅适用于 交割/永续/期权 | 
| > bizRefId | String | 外部业务id,如 体验券id | 
| > bizRefType | String | 外部业务类型 | 
| > ccy | String | 占用保证金的币种 | 
| > last | String | 最新成交价 | 
| > idxPx | String | 最新指数价格 | 
| > usdPx | String | 保证金币种的市场最新美金价格 仅适用于 期权 | 
| > bePx | String | 盈亏平衡价 | 
| > deltaBS | String | 美金本位持仓仓位delta,仅适用于 期权 | 
| > deltaPA | String | 币本位持仓仓位delta,仅适用于 期权 | 
| > gammaBS | String | 美金本位持仓仓位gamma,仅适用于 期权 | 
| > gammaPA | String | 币本位持仓仓位gamma,仅适用于 期权 | 
| > thetaBS | String | 美金本位持仓仓位theta,仅适用于 期权 | 
| > thetaPA | String | 币本位持仓仓位theta,仅适用于 期权 | 
| > vegaBS | String | 美金本位持仓仓位vega,仅适用于 期权 | 
| > vegaPA | String | 币本位持仓仓位vega,仅适用于 期权 | 
| > spotInUseAmt | String | 现货对冲占用数量 适用于 组合保证金模式 | 
| > clSpotInUseAmt | String | 用户自定义现货占用数量 适用于 组合保证金模式 | 
| > maxSpotInUseAmt | String | 系统计算得到的最大可能现货占用数量 适用于 组合保证金模式 | 
| > spotInUseCcy | String | 现货对冲占用币种,如 BTC适用于 组合保证金模式 | 
| > realizedPnl | String | 已实现收益 仅适用于 交割/永续/期权realizedPnl=pnl+fee+fundingFee+liqPenalty+settledPnl | 
| > pnl | String | 平仓订单累计收益额(不包括手续费) | 
| > fee | String | 累计手续费金额,正数代表平台返佣 ,负数代表平台扣除 | 
| > fundingFee | String | 累计资金费用 | 
| > liqPenalty | String | 累计爆仓罚金,有值时为负数。 | 
| > closeOrderAlgo | Array of objects | 平仓策略委托订单。调用策略委托下单,且 closeFraction=1 时,该数组才会有值。 | 
| >> algoId | String | 策略委托单ID | 
| >> slTriggerPx | String | 止损触发价 | 
| >> slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> tpTriggerPx | String | 止盈委托价 | 
| >> tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% | 
| > cTime | String | 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 最近一次持仓更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > pTime | String | 持仓信息的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > nonSettleAvgPx | String | 未结算均价 不受结算影响的加权开仓价格,仅在新增头寸时更新,和开仓均价的主要区别在于是否受到结算影响。 适用于 全仓交割 | 
| > settledPnl | String | 累计已结算收益(以结算价格计算) 适用于 全仓交割 | 
账户余额和持仓频道
获取账户余额和持仓信息,首次订阅按照订阅维度推送数据,此外,当成交、资金划转等事件触发时,推送数据。
该频道适用于尽快获取账户现金余额和仓位资产变化的信息。
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "balance_and_position"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "balance_and_position"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 balance_and_position | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "balance_and_position"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"balance_and_position\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| 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"
        }],
        "posData": [{
            "posId": "1111111111",
            "tradeId": "2",
            "instId": "BTC-USD-191018",
            "instType": "FUTURES",
            "mgnMode": "cross",
            "posSide": "long",
            "pos": "10",
            "ccy": "BTC",
            "posCcy": "",
            "avgPx": "3320",
            "nonSettleAvgPx": "",
            "settledPnl": "",
            "uTime": "1597026383085"
        }],
        "trades": [{
            "instId": "BTC-USD-191018",
            "tradeId": "2",
        }]
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 请求订阅的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| data | Array of objects | 订阅的数据 | 
| > pTime | String | 推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > eventType | String | 事件类型 snapshot:首推快照delivered:交割exercised:行权transferred:划转filled:成交liquidation:强平claw_back:穿仓补偿adl:ADL自动减仓funding_fee:资金费adjust_margin:调整保证金set_leverage:设置杠杆interest_deduction:扣息settlement:交割结算 | 
| > balData | String | 余额数据 | 
| >> ccy | String | 币种 | 
| >> cashBal | String | 币种余额 | 
| >> uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > posData | String | 持仓数据 | 
| >> posId | String | 持仓ID | 
| >> tradeId | String | 最新成交ID | 
| >> instId | String | 交易产品ID,如 BTC-USD-180213 | 
| >> instType | String | 交易产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| >> mgnMode | String | 保证金模式 isolated,cross | 
| >> avgPx | String | 开仓平均价 | 
| >> ccy | String | 占用保证金的币种 | 
| >> posSide | String | 持仓方向 long,short,net | 
| >> pos | String | 持仓数量,逐仓自主划转模式下,转入保证金后会产生pos为 0的仓位 | 
| >> baseBal | String | 适用于 币币杠杆(逐仓一键借币模式) | 
| >> quoteBal | String | 适用于 币币杠杆(逐仓一键借币模式) | 
| >> posCcy | String | 持仓数量币种 只适用于币币杠杆仓位。当是交割、永续、期权持仓时,该字段返回“” | 
| >> nonSettleAvgPx | String | 未结算均价 不受结算影响的加权开仓价格,仅在新增头寸时更新,和开仓均价的主要区别在于是否受到结算影响。 适用于 全仓交割 | 
| >> settledPnl | String | 累计已结算收益(以结算价格计算) 适用于 全仓交割 | 
| >> uTime | String | 仓位信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > trades | Array of objects | 成交数据 | 
| >> instId | String | 产品ID,如 BTC-USDT | 
| >> tradeId | String | 最新成交ID | 
爆仓风险预警推送频道
此推送频道仅作为风险提示,不建议作为策略交易的风险判断。
在行情剧烈波动的情况下,可能会出现此消息推送的同时仓位已经被强平的可能性。
预警会在某一个逐仓仓位有风险时推送。预警会在所有全仓仓位有风险时推送。
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "liquidation-warning",
        "instType": "ANY"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "liquidation-warning",
          "instType": "ANY"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 liquidation-warning | 
| > instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "liquidation-warning",
    "instType": "ANY"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"liquidation-warning\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 , liquidation-warning | 
| > instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg":{
        "channel":"liquidation-warning",
        "uid": "77982378738415879",
        "instType":"FUTURES"
    },
    "data":[
        {
            "cTime":"1619507758793",
            "ccy":"ETH",
            "instId":"ETH-USD-210430",
            "instType":"FUTURES",
            "lever":"10",
            "markPx":"2353.849",
            "mgnMode":"isolated",
            "mgnRatio":"11.731726509588816",
            "pTime":"1619507761462",
            "pos":"1",
            "posCcy":"",
            "posId":"307173036051017730",
            "posSide":"long",
            "uTime":"1619507761462",
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > mgnMode | String | 保证金模式, cross:全仓isolated:逐仓 | 
| > posId | String | 持仓ID | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。) | 
| > pos | String | 持仓数量 | 
| > posCcy | String | 持仓数量币种,仅适用于 币币杠杆 | 
| > instId | String | 产品ID,如 BTC-USDT-SWAP | 
| > lever | String | 杠杆倍数,不适用于 期权卖方 | 
| > markPx | String | 标记价格 | 
| > mgnRatio | String | 维持保证金率 | 
| > ccy | String | 占用保证金的币种 | 
| > cTime | String | 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 最近一次持仓更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > pTime | String | 持仓信息的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
账户greeks频道
获取账户资产的greeks信息。当增加或者减少币种余额、持仓数量等会触发事件推送,周期性的也会有定时推送。
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "account-greeks"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "account-greeks"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 account-greeks | 
| > ccy | String | 否 | 保证金币种 当用户指定了保证金,只有作为保证金的仓位发生变化的时候,才会触发事件推送。例如当指定了ccy = BTC,如果BTC-USDT-SWAP仓位发生变化,不会触发事件推送。 | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "account-greeks"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"account-greeks\", \"ccy\" : \"BTC\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 account-greeks | 
| > ccy | String | 否 | 保证金币种 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg": {
        "channel": "account-greeks",
        "ccy": "BTC",
        "uid": "614488474791936"
    },
    "data": [
        {
            "ccy": "BTC",
            "deltaBS": "1.1246665401944310",
            "deltaPA": "-0.0074076183688949",
            "gammaBS": "0.0000000000000000",
            "gammaPA": "0.0148152367377899",
            "thetaBS": "2.0356991946421226",
            "thetaPA": "-0.0000000200174309",
            "ts": "1729179082006",
            "vegaBS": "0.0000000000000000",
            "vegaPA": "0.0000000000000000"
        }
    ]
}
推送示例
{
    "arg": {
        "channel": "account-greeks",
        "uid": "614488474791936"
    },
    "data": [
        {
            "ccy": "BTC",
            "deltaBS": "1.1246665403011684",
            "deltaPA": "-0.0074021163991037",
            "gammaBS": "0.0000000000000000",
            "gammaPA": "0.0148042327982075",
            "thetaBS": "2.1342098201092528",
            "thetaPA": "-0.0000000200876441",
            "ts": "1729179001692",
            "vegaBS": "0.0000000000000000",
            "vegaPA": "0.0000000000000000"
        },
        {
            "ccy": "ETH",
            "deltaBS": "0.3810670161698570",
            "deltaPA": "-0.0688347042402955",
            "gammaBS": "-0.0000000000230396",
            "gammaPA": "0.1376693483440320",
            "thetaBS": "0.3314776517141782",
            "thetaPA": "0.0000000001316008",
            "ts": "1729179001692",
            "vegaBS": "-0.0000000045069794",
            "vegaPA": "-0.0000000000017267"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 请求订阅的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| data | Array of objects | 订阅的数据 | 
| > deltaBS | String | 美金本位账户资产delta | 
| > deltaPA | String | 币本位账户资产delta | 
| > gammaBS | String | 美金本位账户资产gamma,仅适用于期权全仓 | 
| > gammaPA | String | 币本位账户资产gamma,仅适用于期权全仓 | 
| > thetaBS | String | 美金本位账户资产theta,仅适用于期权全仓 | 
| > thetaPA | String | 币本位账户资产theta,仅适用于期权全仓 | 
| > vegaBS | String | 美金本位账户资产vega,仅适用于期权全仓 | 
| > vegaPA | String | 币本位账户资产vega,仅适用于期权全仓 | 
| > ccy | String | 币种 | 
| > ts | String | 获取greeks的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
撮合交易
交易
交易功能模块下的API接口需要身份验证。
POST / 下单
只有当您的账户有足够的资金才能下单。
限速:60次/2s
跟单交易带单员带单产品的限速:4次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
HTTP请求
POST /api/v5/trade/order
请求示例
# 币币下单
POST /api/v5/trade/order
body
{
    "instId":"BTC-USDT",
    "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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 现货模式限价单
result = tradeAPI.place_order(
    instId="BTC-USDT",
    tdMode="cash",
    clOrdId="b15",
    side="buy",
    ordType="limit",
    px="2.15",
    sz="2"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| tdMode | String | 是 | 交易模式 保证金模式: isolated:逐仓 ;cross:全仓非保证金模式: cash:非保证金spot_isolated:现货逐仓(仅适用于现货带单) ,现货带单时,tdMode的值需要指定为spot_isolated注意: isolated在跨币种保证金模式和组合保证金模式下不可用。 | 
| ccy | String | 否 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| clOrdId | String | 否 | 客户自定义订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| side | String | 是 | 订单方向 buy:买,sell:卖 | 
| posSide | String | 可选 | 持仓方向 在开平仓模式下必填,且仅可选择 long或short。 仅适用交割、永续。 | 
| ordType | String | 是 | 订单类型 market:市价单,仅适用于币币/杠杆/交割/永续limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单) | 
| sz | String | 是 | 委托数量 | 
| px | String | 可选 | 委托价格,仅适用于 limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单期权下单时,px/pxUsd/pxVol 只能填一个 | 
| pxUsd | String | 可选 | 以USD价格进行期权下单 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| pxVol | String | 可选 | 以隐含波动率进行期权下单,例如 1 代表 100% 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续适用于 合约模式/跨币种保证金模式 | 
| tgtCcy | String | 否 | 市价单委托数量 sz的单位,仅适用于币币市价订单base_ccy: 交易货币 ;quote_ccy:计价货币买单默认 quote_ccy, 卖单默认base_ccy | 
| banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 | 
| pxAmendType | String | 否 | 订单价格修正类型 0:当px超出价格限制时,不允许系统修改订单价格1:当px超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
| stpMode | String | 否 | 自成交保护模式 cancel_maker,cancel_taker,cancel_bothCancel both不支持FOK 默认使用账户层面的acctStpMode进行下单,该字段的默认值为 cancel_maker,用户可通过母账户登录网页修改该配置;用户亦可以通过下单接口的stpMode参数指定订单的STP模式。 | 
| attachAlgoOrds | Array of objects | 否 | 下单附带止盈止损信息 | 
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给 algoClOrdId | 
| > tpTriggerPx | String | 可选 | 止盈触发价 对于条件止盈单,如果填写此参数,必须填写 止盈委托价 | 
| > tpOrdPx | String | 可选 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价 对于限价止盈单,需填写此参数,不需要填写止盈触发价 委托价格为-1时,执行市价止盈 | 
| > tpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单默认为 condition | 
| > slTriggerPx | String | 可选 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slOrdPx | String | 可选 | 止损委托价,如果填写此参数,必须填写 止损触发价 委托价格为-1时,执行市价止损 | 
| > tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > sz | String | 可选 | 数量。仅适用于“多笔止盈”的止盈订单,且对于“多笔止盈”的止盈订单必填 | 
| > amendPxOnTriggerType | String | 否 | 是否启用开仓价止损,仅适用于分批止盈的止损订单,第一笔止盈触发时,止损触发价格是否移动到开仓均价止损 0:不开启,默认值1:开启,且止损触发价不能为空 | 
返回结果
{
    "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 | Array of objects | 包含结果的对象数组 | 
| > 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
跟单交易带单员带单产品的限速:4个/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
HTTP请求
POST /api/v5/trade/batch-orders
请求示例
# 币币批量下单
 POST /api/v5/trade/batch-orders
 body
 [
    {
        "instId":"BTC-USDT",
        "tdMode":"cash",
        "clOrdId":"b15",
        "side":"buy",
        "ordType":"limit",
        "px":"2.15",
        "sz":"2"
    },
    {
        "instId":"BTC-USDT",
        "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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 批量下单
place_orders_without_clOrdId = [
    {"instId": "BTC-USDT", "tdMode": "cash", "clOrdId": "b15", "side": "buy", "ordType": "limit", "px": "2.15", "sz": "2"},
    {"instId": "BTC-USDT", "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-USDT | 
| tdMode | String | 是 | 交易模式 保证金模式: isolated:逐仓 ;cross:全仓非保证金模式: cash:非保证金spot_isolated:现货逐仓(仅适用于现货带单) ,现货带单时,tdMode的值需要指定为spot_isolated注意: isolated在跨币种保证金模式和组合保证金模式下不可用。 | 
| ccy | String | 否 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| clOrdId | String | 否 | 客户自定义订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 | 
| side | String | 是 | 订单方向 buy:买,sell:卖 | 
| posSide | String | 可选 | 持仓方向 在开平仓模式下必填,且仅可选择 long或short。 仅适用交割、永续。 | 
| ordType | String | 是 | 订单类型 market:市价单,仅适用于币币/杠杆/交割/永续limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单) | 
| sz | String | 是 | 委托数量 | 
| px | String | 可选 | 委托价格,仅适用于 limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单期权下单时,px/pxUsd/pxVol 只能填一个 | 
| pxUsd | String | 可选 | 以USD价格进行期权下单 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| pxVol | String | 可选 | 以隐含波动率进行期权下单,例如 1 代表 100% 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
| tgtCcy | String | 否 | 市价单委托数量 sz的单位,仅适用于币币市价订单base_ccy: 交易货币 ;quote_ccy:计价货币买单默认 quote_ccy, 卖单默认base_ccy | 
| banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 | 
| pxAmendType | String | 否 | 订单价格修正类型 0:当px超出价格限制时,不允许系统修改订单价格1:当px超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| stpMode | String | 否 | 自成交保护模式 cancel_maker,cancel_taker,cancel_bothCancel both不支持FOK 默认使用账户层面的acctStpMode进行下单,该字段的默认值为 cancel_maker,用户可通过母账户登录网页修改该配置;用户亦可以通过下单接口的stpMode参数指定订单的STP模式。 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
| attachAlgoOrds | Array of objects | 否 | 下单附带止盈止损信息 | 
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给 algoClOrdId | 
| > tpTriggerPx | String | 可选 | 止盈触发价 对于条件止盈单,如果填写此参数,必须填写 止盈委托价 | 
| > tpOrdPx | String | 可选 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价 对于限价止盈单,需填写此参数,不需要填写止盈触发价 委托价格为-1时,执行市价止盈 | 
| > tpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单默认为 condition | 
| > slTriggerPx | String | 可选 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slOrdPx | String | 可选 | 止损委托价,如果填写此参数,必须填写 止损触发价 委托价格为-1时,执行市价止损 | 
| > tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 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 | Array of objects | 包含结果的对象数组 | 
| > 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
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
HTTP请求
POST /api/v5/trade/cancel-order
请求示例
POST /api/v5/trade/cancel-order
body
{
    "ordId":"590908157585625111",
    "instId":"BTC-USDT"
}
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.cancel_order(instId="BTC-USDT", ordId = "590908157585625111")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| 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 | Array of objects | 包含结果的对象数组 | 
| > 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
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
HTTP请求
POST /api/v5/trade/cancel-batch-orders
请求示例
POST /api/v5/trade/cancel-batch-orders
body
[
    {
        "instId":"BTC-USDT",
        "ordId":"590908157585625111"
    },
    {
        "instId":"BTC-USDT",
        "ordId":"590908544950571222"
    }
]
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)
# 按ordId撤单
cancel_orders_with_orderId = [
    {"instId": "BTC-USDT", "ordId": "590908157585625111"},
    {"instId": "BTC-USDT", "ordId": "590908544950571222"}
]
result = tradeAPI.cancel_multiple_orders(cancel_orders_with_orderId)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-190927 | 
| 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 | Array of objects | 包含结果的对象数组 | 
| > 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
限速规则:User ID + Instrument ID
权限:交易
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
HTTP请求
POST /api/v5/trade/amend-order
请求示例
POST /api/v5/trade/amend-order
body
{
    "ordId":"590909145319051111",
    "newSz":"2",
    "instId":"BTC-USDT"
}
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.amend_order(
    instId="BTC-USDT",
    ordId="590909145319051111",
    newSz="2"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID | 
| cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为 falsefalse:不自动撤单true:自动撤单 | 
| ordId | String | 可选 | 订单ID ordId和clOrdId必须传一个,若传两个,以ordId为主 | 
| clOrdId | String | 可选 | 用户自定义订单ID | 
| reqId | String | 否 | 用户自定义修改事件ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| newSz | String | 可选 | 修改的新数量,必须大于0,对于部分成交订单,该数量应包含已成交数量。 | 
| newPx | String | 可选 | 修改后的新价格 修改的新价格期权改单时,newPx/newPxUsd/newPxVol 只能填一个,且必须与下单参数保持一致,如下单用px,改单时需使用newPx | 
| newPxUsd | String | 可选 | 以USD价格进行期权改单 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| newPxVol | String | 可选 | 以隐含波动率进行期权改单,如 1 代表 100% 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| pxAmendType | String | 否 | 订单价格修正类型 0:当newPx超出价格限制时,不允许系统修改订单价格1:当newPx超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| attachAlgoOrds | Array of objects | 否 | 修改附带止盈止损信息 | 
| > attachAlgoId | String | 可选 | 附带止盈止损的订单ID,由系统生成,改单时必填,用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 可选 | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈。 | 
| > newTpOrdPx | String | 可选 | 止盈委托价 委托价格为-1时,执行市价止盈。 | 
| > newTpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损。 | 
| > newSlOrdPx | String | 可选 | 止损委托价 委托价格为-1时,执行市价止损。 | 
| > newTpTriggerPxType | String | 可选 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格只适用于 交割/永续如果要新增止盈,该参数必填 | 
| > newSlTriggerPxType | String | 可选 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格只适用于 交割/永续如果要新增止损,该参数必填 | 
| > 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 | Array of objects | 包含结果的对象数组 | 
| > 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
跟单交易带单员带单产品的限速:4个/2s
限速规则:User ID + Instrument ID
权限:交易
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
HTTP请求
POST /api/v5/trade/amend-batch-orders
请求示例
POST /api/v5/trade/amend-batch-orders
body
[
    {
        "ordId":"590909308792049444",
        "newSz":"2",
        "instId":"BTC-USDT"
    },
    {
        "ordId":"590909308792049555",
        "newSz":"2",
        "instId":"BTC-USDT"
    }
]
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)
# 按ordId修改未完成的订单
amend_orders_with_orderId = [
    {"instId": "BTC-USDT", "ordId": "590909308792049444","newSz":"2"},
    {"instId": "BTC-USDT", "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 | 可选 | 修改后的新价格 修改的新价格期权改单时,newPx/newPxUsd/newPxVol 只能填一个,且必须与下单参数保持一致,如下单用px,改单时需使用newPx | 
| newPxUsd | String | 可选 | 以USD价格进行期权改单 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| newPxVol | String | 可选 | 以隐含波动率进行期权改单,如 1 代表 100% 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| pxAmendType | String | 否 | 订单价格修正类型 0:当newPx超出价格限制时,不允许系统修改订单价格1:当newPx超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| attachAlgoOrds | Array of objects | 否 | 下单附带止盈止损信息 | 
| > attachAlgoId | String | 可选 | 附带止盈止损的订单ID,由系统生成,改单时必填,用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 可选 | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈。 | 
| > newTpOrdPx | String | 可选 | 止盈委托价 委托价格为-1时,执行市价止盈。 | 
| > newTpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损。 | 
| > newSlOrdPx | String | 可选 | 止损委托价 委托价格为-1时,执行市价止损。 | 
| > newTpTriggerPxType | String | 可选 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格只适用于 交割/永续如果要新增止盈,该参数必填 | 
| > newSlTriggerPxType | String | 可选 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格只适用于 交割/永续如果要新增止损,该参数必填 | 
| > 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 | Array of objects | 包含结果的对象数组 | 
| > 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次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
HTTP请求
POST /api/v5/trade/close-position
请求示例
POST /api/v5/trade/close-position
body
{
    "instId":"BTC-USDT-SWAP",
    "mgnMode":"cross"
}
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.close_positions(
    instId="BTC-USDT-SWAP",
    mgnMode="cross"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID | 
| posSide | String | 可选 | 持仓方向 买卖模式下:可不填写此参数,默认值net,如果填写,仅可以填写net 开平仓模式下: 必须填写此参数,且仅可以填写 long:平多 ,short:平空 | 
| mgnMode | String | 是 | 保证金模式 cross:全仓 ;isolated:逐仓 | 
| ccy | String | 可选 | 保证金币种, 合约模式下的全仓币币杠杆平仓必填 | 
| autoCxl | Boolean | 否 | 当市价全平时,平仓单是否需要自动撤销,默认为false. false:不自动撤单true:自动撤单 | 
| clOrdId | String | 否 | 客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "clOrdId": "",
            "instId": "BTC-USDT-SWAP",
            "posSide": "long",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| posSide | String | 持仓方向 | 
| clOrdId | String | 客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
GET / 获取订单信息
查订单信息
限速:60次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:读取
HTTP请求
GET /api/v5/trade/order
请求示例
GET /api/v5/trade/order?ordId=1753197687182819328&instId=BTC-USDT
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)
# 通过 ordId 查询订单
result = tradeAPI.get_order(
    instId="BTC-USDT",
    ordId="680800019749904384"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT只适用于交易中的产品 | 
| 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-USDT",
            "instType": "SPOT",
            "isTpLimit": "false",
            "lever": "",
            "linkedAlgoOrd": {
                "algoId": ""
            },
            "ordId": "680800019749904384",
            "ordType": "market",
            "pnl": "0",
            "posSide": "net",
            "px": "",
            "pxType": "",
            "pxUsd": "",
            "pxVol": "",
            "quickMgnType": "",
            "rebate": "0",
            "rebateCcy": "USDT",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "source": "",
            "state": "filled",
            "stpId": "",
            "stpMode": "",
            "sz": "100",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "quote_ccy",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "tpTriggerPxType": "",
            "tradeId": "744876980",
            "tradeQuoteCcy": "USDT",
            "uTime": "1708587373362"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 产品ID | 
| tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格,对于期权,以币(如BTC, ETH)为单位 | 
| pxUsd | String | 期权价格,以USD为单位 仅适用于期权,其他业务线返回空字符串"" | 
| pxVol | String | 期权订单的隐含波动率 仅适用于期权,其他业务线返回空字符串"" | 
| pxType | String | 期权的价格类型 px:代表按价格下单,单位为币 (请求参数 px 的数值单位是BTC或ETH)pxVol:代表按pxVol下单pxUsd:代表按照pxUsd下单,单位为USD (请求参数px 的数值单位是USD) | 
| sz | String | 委托数量 | 
| pnl | String | 收益(不包括手续费) 适用于有成交的平仓订单,其他情况均为0 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| side | String | 订单方向 | 
| posSide | String | 持仓方向 | 
| tdMode | String | 交易模式 | 
| accFillSz | String | 累计成交数量 对于 币币和杠杆,单位为交易货币,如 BTC-USDT, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币;对于交割、永续以及期权,单位为张。 | 
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" | 
| tradeId | String | 最新成交ID | 
| fillSz | String | 最新成交数量 对于 币币和杠杆,单位为交易货币,如 BTC-USDT, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币;对于交割、永续以及期权,单位为张。 | 
| fillTime | String | 最新成交时间 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" | 
| state | String | 订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| tpTriggerPx | String | 止盈触发价 | 
| tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| slOrdPx | String | 止损委托价 | 
| attachAlgoOrds | Array of objects | 下单附带止盈止损信息 | 
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > tpOrdKind | String | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价 | 
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 | 
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 | 
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 | 
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 | 
| > algoId | String | 策略订单唯一标识 | 
| stpId | String | 如果自成交保护不适用则返回"" | 
| stpMode | String | 自成交保护模式 | 
| feeCcy | String | 手续费币种 对于币币和杠杆的挂单卖单,表示计价币种;其他情况下,表示收取手续费的币种。 | 
| fee | String | 手续费金额 对于币币和杠杆(除挂单卖单外):平台收取的累计手续费,始终为负数。 对于币币和杠杆的挂单卖单、交割、永续和期权:累计手续费和返佣(币币和杠杆挂单卖单始终以计价币种计算)。 | 
| rebateCcy | String | 返佣币种 对于币币和杠杆的挂单卖单,表示交易币种;其他情况下,表示支付返佣的币种。 | 
| rebate | String | 返佣金额,仅适用于币币和杠杆 对于挂单卖单:累计手续费和返佣金额,单位为交易币种。 其他情况下,表示挂单返佣金额,始终为正数,如无返佣则返回""。 | 
| source | String | 订单来源 6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单34: 追逐限价委托生成的普通单 | 
| category | String | 订单种类 normal:普通委托twap:TWAP自动换币adl:ADL自动减仓full_liquidation:强制平仓partial_liquidation:强制减仓delivery:交割ddh:对冲减仓类型订单auto_conversion:抵押借币自动还币订单 | 
| reduceOnly | String | 是否只减仓, true或false | 
| cancelSource | String | 订单取消来源的原因枚举值代码 | 
| cancelSourceReason | String | 订单取消来源的对应具体原因 | 
| quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式 manual:手动auto_borrow:自动借币auto_repay:自动还币 | 
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有 algoClOrdId时有值,否则为"", | 
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" | 
| isTpLimit | String | 是否为限价止盈,true 或 false. | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取未成交订单列表
获取当前账户下所有未成交订单信息
限速:60次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询所有未成交订单
result = tradeAPI.get_order_list(
    instType="SPOT",
    ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| 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-USDT",
            "instType": "SPOT",
            "isTpLimit": "false",
            "lever": "",
            "linkedAlgoOrd": {
                "algoId": ""
            },
            "ordId": "1752588852617379840",
            "ordType": "post_only",
            "pnl": "0",
            "posSide": "net",
            "px": "13013.5",
            "pxType": "",
            "pxUsd": "",
            "pxVol": "",
            "quickMgnType": "",
            "rebate": "0",
            "rebateCcy": "USDT",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "source": "",
            "state": "live",
            "stpId": "",
            "stpMode": "cancel_maker",
            "sz": "0.001",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "tpTriggerPxType": "",
            "tradeId": "",
            ”tradeQuoteCcy“: "USDT",
            "uTime": "1724733617998"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格,对于期权,以币(如BTC, ETH)为单位 | 
| pxUsd | String | 期权价格,以USD为单位 仅适用于期权,其他业务线返回空字符串"" | 
| pxVol | String | 期权订单的隐含波动率 仅适用于期权,其他业务线返回空字符串"" | 
| pxType | String | 期权的价格类型 px:代表按价格下单,单位为币 (请求参数 px 的数值单位是BTC或ETH)pxVol:代表按pxVol下单pxUsd:代表按照pxUsd下单,单位为USD (请求参数px 的数值单位是USD) | 
| sz | String | 委托数量 | 
| pnl | String | 收益(不包括手续费) 适用于有成交的平仓订单,其他情况均为0 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| side | String | 订单方向 | 
| posSide | String | 持仓方向 | 
| tdMode | String | 交易模式 | 
| accFillSz | String | 累计成交数量 | 
| fillPx | String | 最新成交价格。如果还没成交,系统返回""。 | 
| tradeId | String | 最新成交ID | 
| fillSz | String | 最新成交数量 | 
| fillTime | String | 最新成交时间 | 
| avgPx | String | 成交均价。如果还没成交,系统返回 0。 | 
| state | String | 订单状态 live:等待成交partially_filled:部分成交 | 
| lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| tpTriggerPx | String | 止盈触发价 | 
| tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| slOrdPx | String | 止损委托价 | 
| tpOrdPx | String | 止盈委托价 | 
| attachAlgoOrds | Array of objects | 下单附带止盈止损信息 | 
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > tpOrdKind | String | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价 | 
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 | 
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 | 
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 | 
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 | 
| > algoId | String | 策略订单唯一标识 | 
| stpId | String | 如果自成交保护不适用则返回"" | 
| stpMode | String | 自成交保护模式 | 
| feeCcy | String | 手续费币种 对于币币和杠杆的挂单卖单,表示计价币种;其他情况下,表示收取手续费的币种。 | 
| fee | String | 手续费金额 对于币币和杠杆(除挂单卖单外):平台收取的累计手续费,始终为负数。 对于币币和杠杆的挂单卖单、交割、永续和期权:累计手续费和返佣(币币和杠杆挂单卖单始终以计价币种计算)。 | 
| rebateCcy | String | 返佣币种 对于币币和杠杆的挂单卖单,表示交易币种;其他情况下,表示支付返佣的币种。 | 
| rebate | String | 返佣金额,仅适用于币币和杠杆 对于挂单卖单:累计手续费和返佣金额,单位为交易币种。 其他情况下,表示挂单返佣金额,始终为正数,如无返佣则返回""。 | 
| source | String | 订单来源 6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单34: 追逐限价委托生成的普通单 | 
| category | String | 订单种类 normal:普通委托 | 
| reduceOnly | String | 是否只减仓, true或false | 
| quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式 manual:手动,auto_borrow:自动借币,auto_repay:自动还币 | 
| algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有 algoClOrdId是有值,否则为"", | 
| algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" | 
| isTpLimit | String | 是否为限价止盈,true 或 false. | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| cancelSource | String | 订单取消来源的原因枚举值代码 | 
| cancelSourceReason | String | 订单取消来源的对应具体原因 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取历史订单记录(近七天)
获取最近7天挂单,且完成的订单数据,包括7天以前挂单,但近7天才成交的订单数据。按照订单创建时间倒序排序。
已经撤销的未成交单 只保留2小时
限速:40次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询币币历史订单(7天内)
# 已经撤销的未成交单 只保留2小时
result = tradeAPI.get_orders_history(
    instType="SPOT",
    ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品ID,如 BTC-USD-190927 | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| state | String | 否 | 订单状态 canceled:撤单成功filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| category | String | 否 | 订单种类 twap:TWAP自动换币adl:ADL自动减仓full_liquidation:强制平仓partial_liquidation:强制减仓delivery:交割ddh:对冲减仓类型订单 | 
| 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-USDT",
            "instType": "SPOT",
            "isTpLimit": "false",
            "lever": "",
            "ordId": "680800019749904384",
            "ordType": "market",
            "pnl": "0",
            "posSide": "",
            "px": "",
            "pxType": "",
            "pxUsd": "",
            "pxVol": "",
            "quickMgnType": "",
            "rebate": "0",
            "rebateCcy": "USDT",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "source": "",
            "state": "filled",
            "stpId": "",
            "stpMode": "",
            "sz": "100",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "quote_ccy",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "tpTriggerPxType": "",
            "tradeId": "744876980",
            ”tradeQuoteCcy“: "USDT",
            "uTime": "1708587373362",
            "linkedAlgoOrd": {
                "algoId": ""
            }
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格,对于期权,以币(如BTC, ETH)为单位 | 
| pxUsd | String | 期权价格,以USD为单位 仅适用于期权,其他业务线返回空字符串"" | 
| pxVol | String | 期权订单的隐含波动率 仅适用于期权,其他业务线返回空字符串"" | 
| pxType | String | 期权的价格类型 px:代表按价格下单,单位为币 (请求参数 px 的数值单位是BTC或ETH)pxVol:代表按pxVol下单pxUsd:代表按照pxUsd下单,单位为USD (请求参数px 的数值单位是USD) | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| side | String | 订单方向 | 
| posSide | String | 持仓方向 | 
| tdMode | String | 交易模式 | 
| accFillSz | String | 累计成交数量 | 
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" | 
| tradeId | String | 最新成交ID | 
| fillSz | String | 最新成交数量 | 
| fillTime | String | 最新成交时间 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" | 
| state | String | 订单状态 canceled:撤单成功filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| tpTriggerPx | String | 止盈触发价 | 
| tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| slOrdPx | String | 止损委托价 | 
| attachAlgoOrds | Array of objects | 下单附带止盈止损信息 | 
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > tpOrdKind | String | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价 | 
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 | 
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 | 
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 | 
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 | 
| > algoId | String | 策略订单唯一标识 | 
| stpId | String | 如果自成交保护不适用则返回"" | 
| stpMode | String | 自成交保护模式 | 
| feeCcy | String | 手续费币种 对于币币和杠杆的挂单卖单,表示计价币种;其他情况下,表示收取手续费的币种。 | 
| fee | String | 手续费金额 对于币币和杠杆(除挂单卖单外):平台收取的累计手续费,始终为负数。 对于币币和杠杆的挂单卖单、交割、永续和期权:累计手续费和返佣(币币和杠杆挂单卖单始终以计价币种计算)。 | 
| rebateCcy | String | 返佣币种 对于币币和杠杆的挂单卖单,表示交易币种;其他情况下,表示支付返佣的币种。 | 
| rebate | String | 返佣金额,仅适用于币币和杠杆 对于挂单卖单:累计手续费和返佣金额,单位为交易币种。 其他情况下,表示挂单返佣金额,始终为正数,如无返佣则返回""。 | 
| source | String | 订单来源 6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单34: 追逐限价委托生成的普通单 | 
| pnl | String | 收益(不包括手续费) 适用于有成交的平仓订单,其他情况均为0 | 
| category | String | 订单种类 normal:普通委托twap:TWAP自动换币adl:ADL自动减仓full_liquidation:强制平仓partial_liquidation:强制减仓delivery:交割ddh:对冲减仓类型订单auto_conversion:抵押借币自动还币订单 | 
| reduceOnly | String | 是否只减仓, 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 | 
| quickMgnType | String | manual:手动,auto_borrow:自动借币,auto_repay:自动还币 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取历史订单记录(近三个月)
获取最近3个月挂单,且完成的订单数据,包括3个月以前挂单,但近3个月才成交的订单数据。按照订单创建时间倒序排序。
限速:20次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询币币历史订单(3月内)
result = tradeAPI.get_orders_history_archive(
    instType="SPOT",
    ordType="post_only,fok,ioc"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| state | String | 否 | 订单状态 canceled:撤单成功filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| category | String | 否 | 订单种类 twap:TWAP自动换币adl:ADL自动减仓full_liquidation:强制平仓partial_liquidation:强制减仓delivery:交割ddh:对冲减仓类型订单 | 
| 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-USDT",
            "instType": "SPOT",
            "isTpLimit": "false",
            "lever": "",
            "ordId": "680800019749904384",
            "ordType": "market",
            "pnl": "0",
            "posSide": "",
            "px": "",
            "pxType": "",
            "pxUsd": "",
            "pxVol": "",
            "quickMgnType": "",
            "rebate": "0",
            "rebateCcy": "USDT",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "source": "",
            "state": "filled",
            "stpId": "",
            "stpMode": "",
            "sz": "100",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "quote_ccy",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "tpTriggerPxType": "",
            "tradeId": "744876980",
            ”tradeQuoteCcy“: "USDT",
            "uTime": "1708587373362",
            "linkedAlgoOrd": {
                "algoId": ""
            }
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格,对于期权,以币(如BTC, ETH)为单位 | 
| pxUsd | String | 期权价格,以USD为单位 仅适用于期权,其他业务线返回空字符串"" | 
| pxVol | String | 期权订单的隐含波动率 仅适用于期权,其他业务线返回空字符串"" | 
| pxType | String | 期权的价格类型 px:代表按价格下单,单位为币 (请求参数 px 的数值单位是BTC或ETH)pxVol:代表按pxVol下单pxUsd:代表按照pxUsd下单,单位为USD (请求参数px 的数值单位是USD) | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| side | String | 订单方向 | 
| posSide | String | 持仓方向 | 
| tdMode | String | 交易模式 | 
| accFillSz | String | 累计成交数量 | 
| fillPx | String | 最新成交价格,如果成交数量为0,该字段为"" | 
| tradeId | String | 最新成交ID | 
| fillSz | String | 最新成交数量 | 
| fillTime | String | 最新成交时间 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段也为"" | 
| state | String | 订单状态 canceled:撤单成功filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| tpTriggerPx | String | 止盈触发价 | 
| tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| slOrdPx | String | 止损委托价 | 
| stpId | String | 如果自成交保护不适用则返回"" | 
| attachAlgoOrds | Array of objects | 下单附带止盈止损信息 | 
| > attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > tpOrdKind | String | 止盈订单类型 condition: 条件单limit: 限价单 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价 | 
| > sz | String | 张数。仅适用于“多笔止盈”的止盈订单 | 
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| > failCode | String | 委托失败的错误码,默认为"", 委托失败时有值,如 51020 | 
| > failReason | String | 委托失败的原因,默认为"" 委托失败时有值 | 
| linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 | 
| > algoId | String | 策略订单唯一标识 | 
| stpMode | String | 自成交保护模式 | 
| feeCcy | String | 手续费币种 对于币币和杠杆的挂单卖单,表示计价币种;其他情况下,表示收取手续费的币种。 | 
| fee | String | 手续费金额 对于币币和杠杆(除挂单卖单外):平台收取的累计手续费,始终为负数。 对于币币和杠杆的挂单卖单、交割、永续和期权:累计手续费和返佣(币币和杠杆挂单卖单始终以计价币种计算)。 | 
| rebateCcy | String | 返佣币种 对于币币和杠杆的挂单卖单,表示交易币种;其他情况下,表示支付返佣的币种。 | 
| rebate | String | 返佣金额,仅适用于币币和杠杆 对于挂单卖单:累计手续费和返佣金额,单位为交易币种。 其他情况下,表示挂单返佣金额,始终为正数,如无返佣则返回""。 | 
| pnl | String | 收益(不包括手续费) 适用于有成交的平仓订单,其他情况均为0 | 
| source | String | 订单来源 6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单34: 追逐限价委托生成的普通单 | 
| category | String | 订单种类 normal:普通委托twap:TWAP自动换币adl:ADL自动减仓full_liquidation:强制平仓partial_liquidation:强制减仓delivery:交割ddh:对冲减仓类型订单auto_conversion:抵押借币自动还币订单 | 
| reduceOnly | String | 是否只减仓, 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 | 
| quickMgnType | String | manual:手动,auto_borrow:自动借币,auto_repay:自动还币 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取成交明细(近三天)
获取近3天的订单成交明细信息
限速:60次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 获取成交明细
result = tradeAPI.get_fills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品 ID,如 BTC-USDT | 
| ordId | String | 否 | 订单 ID | 
| subType | String | 否 | 成交类型 1:买入2:卖出3:开多4:开空5:平多6:平空100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出110:强平换币转入111:强平换币转出118:系统换币转入119:系统换币转出112:交割平多113:交割平空125:自动减仓平多126:自动减仓平空127:自动减仓买入128:自动减仓卖出212:一键借币的自动借币213:一键借币的自动还币204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空236:小额兑换买入237:小额兑换卖出270:价差交易买271:价差交易卖272:价差交易开多273:价差交易开空274:价差交易平多275:价差交易平空324:移仓买入325:移仓卖出326:移仓开多327:移仓开空328:移仓平多329:移仓平空376:质押借币超限买入377: 质押借币超限卖出 | 
| 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",
            "fillPxVol": "",
            "fillFwdPx": "",
            "fee": "-0.00000192834",
            "fillPnl": "0",
            "ordId": "680800019749904384",
            "feeRate": "-0.001",
            "instType": "SPOT",
            "fillPxUsd": "",
            "instId": "BTC-USDT",
            "clOrdId": "",
            "posSide": "net",
            "billId": "680800019754098688",
            "subType": "1",
            "fillMarkVol": "",
            "tag": "",
            "fillTime": "1708587373361",
            "execType": "T",
            "fillIdxPx": "",
            "tradeId": "744876980",
            "fillMarkPx": "",
            "feeCcy": "BTC",
            "ts": "1708587373362",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "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 | 最新成交数量 | 
| fillIdxPx | String | 交易执行时的指数价格 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 如 LTC-ETH,该字段返回LTC-USDT的指数价格。 | 
| fillPnl | String | 最新成交收益,适用于有成交的平仓订单。其他情况均为0。 | 
| fillPxVol | String | 成交时的隐含波动率,仅适用于期权,其他业务线返回空字符串"" | 
| fillPxUsd | String | 成交时的期权价格,以USD为单位,仅适用于期权,其他业务线返回空字符串"" | 
| fillMarkVol | String | 成交时的标记波动率,仅适用于期权,其他业务线返回空字符串"" | 
| fillFwdPx | String | 成交时的远期价格,仅适用于期权,其他业务线返回空字符串"" | 
| fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| side | String | 订单方向 buy:买sell:卖 | 
| posSide | String | 持仓方向 long:多short:空 买卖模式返回net | 
| execType | String | 流动性方向 T:takerM:maker不适用于系统订单比如强平和ADL | 
| feeCcy | String | 交易手续费币种或者返佣金币种 | 
| fee | String | 手续费金额或者返佣金额,手续费扣除为‘负数’,如-0.01;手续费返佣为‘正数’,如 0.01 | 
| ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| fillTime | String | 成交时间,与订单频道的 fillTime相同 | 
| feeRate | String | 手续费费率。 该字段仅对 币币和杠杆返回 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取成交明细(近三个月)
本接口可以查询最近 3 个月的成交明细数据。
限速:10 次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询 币币 成交明细(3月内)
result = tradeAPI.get_fills_history(
    instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品 ID,如 BTC-USD-190927 | 
| ordId | String | 否 | 订单 ID | 
| subType | String | 否 | 成交类型 1:买入2:卖出3:开多4:开空5:平多6:平空100:强减平多101:强减平空102:强减买入103:强减卖出104:强平平多105:强平平空106:强平买入107:强平卖出110:强平换币转入111:强平换币转出118:系统换币转入119:系统换币转出112:交割平多113:交割平空125:自动减仓平多126:自动减仓平空127:自动减仓买入128:自动减仓卖出212:一键借币的自动借币213:一键借币的自动还币204:大宗交易买205:大宗交易卖206:大宗交易开多207:大宗交易开空208:大宗交易平多209:大宗交易平空236:小额兑换买入237:小额兑换卖出270:价差交易买271:价差交易卖272:价差交易开多273:价差交易开空274:价差交易平多275:价差交易平空324:移仓买入325:移仓卖出326:移仓开多327:移仓开空328:移仓平多329:移仓平空376:质押借币超限买入377: 质押借币超限卖出 | 
| 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",
            "fillPxVol": "",
            "fillFwdPx": "",
            "fee": "-0.00000192834",
            "fillPnl": "0",
            "ordId": "680800019749904384",
            "feeRate": "-0.001",
            "instType": "SPOT",
            "fillPxUsd": "",
            "instId": "BTC-USDT",
            "clOrdId": "",
            "posSide": "net",
            "billId": "680800019754098688",
            "subType": "1",
            "fillMarkVol": "",
            "tag": "",
            "fillTime": "1708587373361",
            "execType": "T",
            "fillIdxPx": "",
            "tradeId": "744876980",
            "fillMarkPx": "",
            "feeCcy": "BTC",
            "ts": "1708587373362",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "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 | 最新成交数量 | 
| fillIdxPx | String | 交易执行时的指数价格 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 如 LTC-ETH,该字段返回 LTC-USDT 的指数价格。 | 
| fillPnl | String | 最新成交收益,适用于有成交的平仓订单。其他情况均为0。 | 
| fillPxVol | String | 成交时的隐含波动率,仅适用于期权,其他业务线返回空字符串"" | 
| fillPxUsd | String | 成交时的期权价格,以USD为单位,仅适用于期权,其他业务线返回空字符串"" | 
| fillMarkVol | String | 成交时的标记波动率,仅适用于期权,其他业务线返回空字符串"" | 
| fillFwdPx | String | 成交时的远期价格,仅适用于期权,其他业务线返回空字符串"" | 
| fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| side | String | 订单方向 buy:买sell:卖 | 
| posSide | String | 持仓方向 long:多short:空买卖模式返回 net | 
| execType | String | 流动性方向 T:takerM:maker不适用于系统订单比如强平和ADL | 
| feeCcy | String | 交易手续费币种或者返佣金币种 | 
| fee | String | 手续费金额或者返佣金额 手续费扣除为‘负数’,如 -0.01 手续费返佣为‘正数’,如 0.01 | 
| ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| fillTime | String | 成交时间,与订单频道的 fillTime相同 | 
| feeRate | String | 手续费费率。 该字段仅对 币币和杠杆返回 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取一键兑换主流币币种列表
获取小币一键兑换主流币币种列表。仅可兑换余额在 $10 以下币种。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/easy-convert-currency-list
请求示例
GET /api/v5/trade/easy-convert-currency-list
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.get_easy_convert_currency_list()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| source | String | 否 | 资金来源 1:交易账户2:资金账户默认为 1 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fromData": [
                {
                    "fromAmt": "6.580712708344864",
                    "fromCcy": "ADA"
                },
                {
                    "fromAmt": "2.9970000013055097",
                    "fromCcy": "USDC"
                }
            ],
            "toCcy": [
                "USDT",
                "BTC",
                "ETH",
                "OKB"
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fromData | Array of objects | 当前拥有并可兑换的小币币种列表信息 | 
| > fromCcy | String | 可兑换币种 | 
| > fromAmt | String | 可兑换币种数量 | 
| toCcy | Array of strings | 可转换成的主流币币种列表 | 
POST / 一键兑换主流币交易
进行小币一键兑换主流币交易。
限速:1次/2s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/trade/easy-convert
请求示例
POST /api/v5/trade/easy-convert
body
{
    "fromCcy": ["ADA","USDC"], //逗号分隔小币
    "toCcy": "OKB" 
}
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.easy_convert(
    fromCcy=["ADA", "USDC"],
    toCcy="OKB"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| fromCcy | Array of strings | 是 | 小币支付币种 单次最多同时选择5个币种,如有多个币种则用逗号隔开 | 
| toCcy | String | 是 | 兑换的主流币 只选择一个币种,且不能和小币支付币种重复 | 
| source | String | 否 | 资金来源 1:交易账户2:资金账户默认为 1 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fillFromSz": "6.5807127",
            "fillToSz": "0.17171580105126",
            "fromCcy": "ADA",
            "status": "running",
            "toCcy": "OKB",
            "uTime": "1661419684687"
        },
        {
            "fillFromSz": "2.997",
            "fillToSz": "0.1683755161661844",
            "fromCcy": "USDC",
            "status": "running",
            "toCcy": "OKB",
            "uTime": "1661419684687"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| status | String | 当前兑换进度/状态 running: 进行中filled: 已完成failed: 失败 | 
| fromCcy | String | 小币支付币种 | 
| toCcy | String | 兑换的主流币 | 
| fillFromSz | String | 小币偿还币种支付数量 | 
| fillToSz | String | 兑换的主流币成交数量 | 
| uTime | String | 交易时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取一键兑换主流币历史记录
查询一键兑换主流币过去7天内的历史记录与进度状态。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/easy-convert-history
请求示例
GET /api/v5/trade/easy-convert-history
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.get_easy_convert_history()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| after | String | 否 | 查询在此之前(不包含)的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后(不包含)的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 返回的结果集数量,默认为100,最大为100 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fillFromSz": "0.1761712511667539",
            "fillToSz": "6.7342205900000000",
            "fromCcy": "OKB",
            "status": "filled",
            "toCcy": "ADA",
            "acct": "18",
            "uTime": "1661313307979"
        },
        {
            "fillFromSz": "0.1722106121112177",
            "fillToSz": "2.9971018300000000",
            "fromCcy": "OKB",
            "status": "filled",
            "toCcy": "USDC",
            "acct": "18",
            "uTime": "1661313307979"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fromCcy | String | 小币支付币种 | 
| fillFromSz | String | 对应的小币支付数量 | 
| toCcy | String | 兑换到的主流币 | 
| fillToSz | String | 兑换到的主流币数量 | 
| acct | String | 兑换到的主流币所在的账户 6:资金账户18:交易账户 | 
| status | String | 当前兑换进度/状态 running: 进行中filled: 已完成failed: 失败 | 
| uTime | String | 交易时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取一键还债币种列表
查询一键还债币种列表。负债币种包括全仓负债和逐仓负债。仅适用于跨币种保证金模式/组合保证金模式。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/one-click-repay-currency-list
请求示例
GET /api/v5/trade/one-click-repay-currency-list
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.get_oneclick_repay_list()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| debtType | String | 否 | 负债类型 cross: 全仓负债isolated: 逐仓负债 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debtData": [
                {
                    "debtAmt": "29.653478",
                    "debtCcy": "LTC"
                },
                {
                    "debtAmt": "237803.6828295906051002",
                    "debtCcy": "USDT"
                }
            ],
            "debtType": "cross",
            "repayData": [
                {
                    "repayAmt": "0.4978335419825104",
                    "repayCcy": "ETH"
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debtData | Array of objects | 负债币种信息 | 
| > debtCcy | String | 负债币种 | 
| > debtAmt | String | 可负债币种数量 包括本金和利息 | 
| debtType | String | 负债类型 cross: 全仓负债isolated: 逐仓负债 | 
| repayData | Array of objects | 偿还币种信息 | 
| > repayCcy | String | 可偿还负债的币种 | 
| > repayAmt | String | 可偿还负债的币种可用资产数量 | 
POST / 一键还债交易
交易一键偿还全仓债务。不支持逐仓负债的偿还。根据资金和交易账户的剩余可用余额为最大偿还数量。仅适用于跨币种保证金模式/组合保证金模式。
限速:1次/2s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/trade/one-click-repay
请求示例
POST /api/v5/trade/one-click-repay
body
{
    "debtCcy": ["ETH","BTC"], //逗号分隔债务币
    "repayCcy": "USDT" //用USDT偿还ETH和BTC
}
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)
# 交易一键偿还小额全仓债务,使用USDT偿还ETH和BTC债务
result = tradeAPI.oneclick_repay(
    debtCcy=["ETH", "BTC"],
    repayCcy="USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| debtCcy | Array of strings | 是 | 负债币种 单次最多同时选择5个币种,如有多个币种则用逗号隔开 | 
| repayCcy | String | 是 | 偿还币种 只选择一个币种,且不能和负债币种重复 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debtCcy": "ETH", 
            "fillDebtSz": "0.01023052",
            "fillRepaySz": "30", 
            "repayCcy": "USDT", 
            "status": "filled",
            "uTime": "1646188520338"
        },
        {
            "debtCcy": "BTC", 
            "fillFromSz": "3",
            "fillToSz": "60,221.15910001",
            "repayCcy": "USDT",
            "status": "filled",
            "uTime": "1646188520338"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| status | String | 当前还债进度/状态 running: 进行中filled: 已完成failed: 失败 | 
| debtCcy | String | 负债币种 | 
| repayCcy | String | 偿还币种 | 
| fillDebtSz | String | 负债币种成交数量 | 
| fillRepaySz | String | 偿还币种成交数量 | 
| uTime | String | 交易时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取一键还债历史记录
查询一键还债近7天的历史记录与进度状态。仅适用于跨币种保证金模式/组合保证金模式。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/one-click-repay-history
请求示例
GET /api/v5/trade/one-click-repay-history
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.oneclick_repay_history()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 返回的结果集数量,默认为100,最大为100 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debtCcy": "USDC",
            "fillDebtSz": "6950.4865447900000000",
            "fillRepaySz": "4.3067975995094930",
            "repayCcy": "ETH",
            "status": "filled",
            "uTime": "1661256148746"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debtCcy | String | 负债币种 | 
| fillDebtSz | String | 对应的负债币种成交数量 | 
| repayCcy | String | 偿还币种 | 
| fillRepaySz | String | 偿还币种实际支付数量 | 
| status | String | 当前还债进度/状态 running: 进行中filled: 已完成failed: 失败 | 
| uTime | String | 交易时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取一键还债币种列表(新)
查询一键还债币种列表。仅适用于现货模式。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/one-click-repay-currency-list-v2
请求示例
GET /api/v5/trade/one-click-repay-currency-list-v2
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,debug=True) 
result = tradeAPI.get_oneclick_repay_list_v2()
print(result)
返回结果
{
    "code": "0",
    "data": [
        {
            "debtData": [
                {
                    "debtAmt": "100",
                    "debtCcy": "USDC"
                }
            ],
            "repayData": [
                {
                    "repayAmt": "1.000022977",
                    "repayCcy": "BTC"
                },
                {
                    "repayAmt": "4998.0002397",
                    "repayCcy": "USDT"
                },
                {
                    "repayAmt": "100",
                    "repayCcy": "OKB"
                },
                {
                    "repayAmt": "1",
                    "repayCcy": "ETH"
                },
                {
                    "repayAmt": "100",
                    "repayCcy": "USDC"
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debtData | Array of objects | 负债币种信息 | 
| > debtCcy | String | 负债币种 | 
| > debtAmt | String | 可负债币种数量 包括本金和利息 | 
| repayData | Array of objects | 偿还币种信息 | 
| > repayCcy | String | 可偿还负债的币种 | 
| > repayAmt | String | 可偿还负债的币种可用资产数量 | 
POST / 一键还债交易(新)
交易一键偿还债务。仅适用于现货模式。
限速:1次/2s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/trade/one-click-repay-v2
请求示例
POST /api/v5/trade/one-click-repay-v2
body
{
    "debtCcy": "USDC", 
    "repayCcyList": ["USDC","BTC"] 
}
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,debug=True)
result = tradeAPI.oneclick_repay_v2("USDC",["USDC","BTC"])
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| debtCcy | String | 是 | 负债币种 | 
| repayCcyList | Array of strings | 是 | 偿还币种列表,如 ["USDC","BTC"] 资产还币优先级和数组中的排序一致(排第一的优先级最高)。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debtCcy": "USDC",
            "repayCcyList": [
                "USDC",
                "BTC"
            ],
            "ts": "1742192217514"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debtCcy | String | 负债币种 | 
| repayCcyList | Array of strings | 偿还币种列表,如 ["USDC","BTC"] 资产还币优先级和数组中的排序一致(排第一的优先级最高)。 | 
| ts | String | 请求时间,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取一键还债历史记录(新)
查询一键还债近7天的历史记录与进度状态。仅适用于现货模式。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/trade/one-click-repay-history-v2
请求示例
GET /api/v5/trade/one-click-repay-history-v2
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.oneclick_repay_history_v2()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| after | String | 否 | 查询在指定请求时间 ts之前(包含)的内容,值为时间戳,Unix时间戳为毫秒数格式,如1597026383085 | 
| before | String | 否 | 查询在指定请求时间 ts之后(包含)的内容,值为时间戳,Unix时间戳为毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回的结果集数量,默认为 100,最大为100 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "debtCcy": "USDC",
            "fillDebtSz": "9.079631989",
            "ordIdInfo": [
                {
                    "cTime": "1742194485439",
                    "fillPx": "1",
                    "fillSz": "9.088651",
                    "instId": "USDC-USDT",
                    "ordId": "2338478342062235648",
                    "ordType": "ioc",
                    "px": "1.0049",
                    "side": "buy",
                    "state": "filled",
                    "sz": "9.0886514537313433"
                },
                {
                    "cTime": "1742194482326",
                    "fillPx": "83271.9",
                    "fillSz": "0.00010969",
                    "instId": "BTC-USDT",
                    "ordId": "2338478237607288832",
                    "ordType": "ioc",
                    "px": "82856.7",
                    "side": "sell",
                    "state": "filled",
                    "sz": "0.000109696512171"
                }
            ],
            "repayCcyList": [
                "USDC",
                "BTC"
            ],
            "status": "filled",
            "ts": "1742194481852"
        },
        {
            "debtCcy": "USDC",
            "fillDebtSz": "100",
            "ordIdInfo": [],
            "repayCcyList": [
                "USDC",
                "BTC"
            ],
            "status": "filled",
            "ts": "1742192217511"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| debtCcy | String | 负债币种 | 
| repayCcyList | Array of strings | 偿还币种列表,如 ["USDC","BTC"] | 
| fillDebtSz | String | 对应的负债币种成交数量 | 
| status | String | 当前还债进度/状态 running:进行中filled:已完成failed:失败 | 
| ordIdInfo | Array of objects | 相关订单信息 | 
| > ordId | String | 订单ID | 
| > instId | String | 产品ID,如 BTC-USDT | 
| > ordType | String | 订单类型 ioc:立即成交并取消剩余 | 
| > side | String | 订单方向 buysell | 
| > px | String | 委托价格 | 
| > sz | String | 委托数量 | 
| > fillPx | String | 最新成交价格 如果成交数量为0,该字段为"" | 
| > fillSz | String | 最新成交数量 | 
| > state | String | 订单状态 filled:完全成交canceled:撤单成功 | 
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| ts | String | 请求时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
POST / 撤销 MMP 订单
撤销同一交易品种下用户所有的 MMP 挂单
仅适用于组合保证金账户模式下的期权订单,且有 MMP 权限。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/trade/mass-cancel
请求示例
POST /api/v5/trade/mass-cancel
body
{
    "instType":"OPTION",
    "instFamily":"BTC-USD"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 交易产品类型 OPTION:期权 | 
| instFamily | String | 是 | 交易品种 | 
| lockInterval | String | 否 | 锁定时长(毫秒) 范围应为[0, 10 000] 默认为 0. 如果想要立即解锁,您可以设置为 "0" 下单时,如果在该锁定期间,会报错 54008,如果在 MMP 触发期间,会报错 51034 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "result":true
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 撤单结果 true:全部撤单成功false:全部撤单失败 | 
POST / 倒计时全部撤单
在倒计时结束后,取消所有挂单。适用于所有撮合交易产品(不包括价差交易)。
限速:1次/s
限速规则:User ID + tag
权限:交易
HTTP请求
POST /api/v5/trade/cancel-all-after
请求示例
POST /api/v5/trade/cancel-all-after
{
   "timeOut":"60"
}
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.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 | 请求被接收到的时间 | 
GET / 获取账户限速
获取账户限速相关信息
仅有新订单及修改订单请求会被计入此限制。对于包含多个订单的批量请求,每个订单将被单独计数。
更多细节,请见 基于成交比率的子账户限速
限速:1次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/trade/account-rate-limit
请求示例
# 获取账户限速相关信息
GET /api/v5/trade/account-rate-limit
请求参数
None
返回结果
{
   "code":"0",
   "data":[
      {
         "accRateLimit":"2000",
         "fillRatio":"0.1234",
         "mainFillRatio":"0.1234",
         "nextAccRateLimit":"2000",
         "ts":"123456789000"
      }
   ],
   "msg":""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fillRatio | String | 监测期内子账户的成交比率 适用于交易费等级 >= VIP 5的用户,其余用户返回"" 对于监测期内没有交易量的账户,返回"0"。对于监测期内有交易量,但没有订单操作数的用户,返回"9999"。 | 
| mainFillRatio | String | 监测期内母账户合计成交比率 适用于交易费等级 >= VIP 5的用户,其余用户返回"" 对于监测期内没有交易量的账户,返回"0" | 
| accRateLimit | String | 当前子账户交易限速(每两秒) | 
| nextAccRateLimit | String | 预计下一周期子账户交易限速(每两秒) 适用于交易费等级 >= VIP 5的用户,其余用户返回"" | 
| ts | String | 数据更新时间 对于交易费等级>= VIP 5的用户,数据将于每日16:00(UTC+8)生成 对于交易费等级 < VIP 5的用户,返回当前时间戳 | 
POST / 订单预检查
用来预先查看订单下单前后的账户的对比信息,仅适用于跨币种保证金模式和组合保证金模式。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/trade/order-precheck
请求示例
POST /api/v5/trade/order-precheck
body
{
    "instId":"BTC-USDT",
    "tdMode":"cash",
    "clOrdId":"b15",
    "side":"buy",
    "ordType":"limit",
    "px":"2.15",
    "sz":"2"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| tdMode | String | 是 | 交易模式 保证金模式: isolated:逐仓 ;cross:全仓非保证金模式: cash:非保证金spot_isolated:现货逐仓(仅适用于现货带单) ,现货带单时,tdMode的值需要指定为spot_isolated | 
| side | String | 是 | 订单方向 buy:买,sell:卖 | 
| posSide | String | 可选 | 持仓方向 在开平仓模式下必填,且仅可选择 long或short。 仅适用交割、永续。 | 
| ordType | String | 是 | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续) | 
| sz | String | 是 | 委托数量 | 
| px | String | 可选 | 委托价格,仅适用于 limit、post_only、fok、ioc类型的订单 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
| tgtCcy | String | 否 | 市价单委托数量 sz的单位,仅适用于币币市价订单base_ccy: 交易货币 ;quote_ccy:计价货币买单默认 quote_ccy, 卖单默认base_ccy | 
| attachAlgoOrds | Array of objects | 否 | 下单附带止盈止损信息 | 
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给 algoClOrdId | 
| > tpTriggerPx | String | 可选 | 止盈触发价 对于条件止盈单,如果填写此参数,必须填写 止盈委托价 | 
| > tpOrdPx | String | 可选 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价 对于限价止盈单,需填写此参数,不需要填写止盈触发价 委托价格为-1时,执行市价止盈 | 
| > tpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单默认为 condition | 
| > slTriggerPx | String | 可选 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slOrdPx | String | 可选 | 止损委托价,如果填写此参数,必须填写 止损触发价 委托价格为-1时,执行市价止损 | 
| > tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > sz | String | 可选 | 数量。仅适用于“多笔止盈”的止盈订单,且对于“多笔止盈”的止盈订单必填 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adjEq": "41.94347460746277",
            "adjEqChg": "-226.05616481626",
            "availBal": "0",
            "availBalChg": "0",
            "imr": "0",
            "imrChg": "57.74709688430927",
            "liab": "0",
            "liabChg": "0",
            "liabChgCcy": "",
            "liqPx": "6764.8556232031115",
            "liqPxDiff": "-57693.044376796888536773622035980224609375",
            "liqPxDiffRatio": "-0.8950500152315991",
            "mgnRatio": "0",
            "mgnRatioChg": "0",
            "mmr": "0",
            "mmrChg": "0",
            "posBal": "",
            "posBalChg": "",
            "type": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| adjEq | String | 当前美金层面有效保证金 | 
| adjEqChg | String | 下单后,美金层面有效保证金的变动数量 | 
| imr | String | 当前美金层面占用保证金 | 
| imrChg | String | 下单后,美金层面占用保证金的变动数量 | 
| mmr | String | 当前美金层面维持保证金 | 
| mmrChg | String | 下单后,美金层面维持保证金的变动数量 | 
| mgnRatio | String | 当前美金层面维持保证金率 | 
| mgnRatioChg | String | 下单后,美金层面维持保证金率的变动数量 | 
| availBal | String | 当前币种可用余额,仅适用于关闭自动借币时 | 
| availBalChg | String | 下单后,币种可用余额的变动数量,仅适用于关闭自动借币时 | 
| liqPx | String | 当前预估强平价 | 
| liqPxDiff | String | 下单后,预估强平价与标记价格的差距 | 
| liqPxDiffRatio | String | 下单后,预估强平价与标记价格的差距比率 | 
| posBal | String | 当前杠杆逐仓仓位正资产,仅适用于逐仓杠杆 | 
| posBalChg | String | 下单后,杠杆逐仓仓位正资产的变动数量,仅适用于逐仓杠杆 | 
| liab | String | 当前负债 如果是全仓,对应全仓负债,如果是逐仓,对应逐仓负债 | 
| liabChg | String | 下单后,当前负债的变动数量 如果是全仓,对应全仓负债,如果是逐仓,对应逐仓负债 | 
| liabChgCcy | String | 下单后,当前负债变动数量的单位 仅适用于全仓,开启自动借币时 | 
| type | String | 仓位正资产( posBal)的单位类型,仅适用于杠杆逐仓,用来确定posBal的单位1:下单前后都是交易货币2:下单前是交易货币,下单后是计价货币3:下单前是计价货币,下单后是交易货币4:下单前后都是计价货币 | 
WS / 订单频道
获取订单信息,首次订阅不推送,只有当下单、订单变更时,推送数据
该频道的并发连接受到如下规则限制:WebSocket 连接限制
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "orders",
        "instType": "FUTURES",
        "instId": "BTC-USD-200329"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "orders",
        "instType": "FUTURES",
        "instId": "BTC-USD-200329"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "orders",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "orders",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 orders | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
成功返回示例:单个
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "orders",
        "instType": "FUTURES",
        "instId": "BTC-USD-200329"
    },
    "connId": "a4d3ae55"
}
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "orders",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "orders",
        "instType": "SPOT",
        "instId": "BTC-USDT",
        "uid": "614488474791936"
    },
    "data": [
        {
            "accFillSz": "0.001",
            "amendResult": "",
            "avgPx": "31527.1",
            "cTime": "1654084334977",
            "category": "normal",
            "ccy": "",
            "clOrdId": "",
            "code": "0",
            "execType": "M",
            "fee": "-0.02522168",
            "feeCcy": "USDT",
            "fillFee": "-0.02522168",
            "fillFeeCcy": "USDT",
            "fillNotionalUsd": "31.50818374",
            "fillPx": "31527.1",
            "fillSz": "0.001",
            "fillPnl": "0.01",
            "fillTime": "1654084353263",
            "fillPxVol": "",
            "fillPxUsd": "",
            "fillMarkVol": "",
            "fillFwdPx": "",
            "fillMarkPx": "",
            "fillIdxPx": "",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "lever": "0",
            "msg": "",
            "notionalUsd": "31.50818374",
            "ordId": "452197707845865472",
            "ordType": "limit",
            "pnl": "0",
            "posSide": "",
            "px": "31527.1",
            "pxUsd":"",
            "pxVol":"",
            "pxType":"",
            "rebate": "0",
            "rebateCcy": "BTC",
            "reduceOnly": "false",
            "reqId": "",
            "side": "sell",
            "attachAlgoClOrdId": "",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "last",
            "source": "",
            "state": "filled",
            "stpId": "",
            "stpMode": "",
            "sz": "0.001",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "tpTriggerPxType": "last",
            "tradeId": "242589207",
            "tradeQuoteCcy": "USDT",
            "lastPx": "38892.2",
            "quickMgnType": "",
            "algoClOrdId": "",
            "attachAlgoOrds": [],
            "algoId": "",
            "amendSource": "",
            "cancelSource": "",
            "isTpLimit": "false",
            "uTime": "1654084353264",
            "linkedAlgoOrd": {
                "algoId": ""
            }
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID来识别您的订单 | 
| > tag | String | 订单标签 | 
| > px | String | 委托价格,对于期权,以币(如BTC, ETH)为单位 | 
| > pxUsd | String | 期权价格,以USD为单位 仅适用于期权,其他业务线返回空字符串"" | 
| > pxVol | String | 期权订单的隐含波动率 仅适用于期权,其他业务线返回空字符串"" | 
| > pxType | String | 期权的价格类型 px:代表按价格下单,单位为币 (请求参数 px 的数值单位是BTC或ETH)pxVol:代表按pxVol下单pxUsd:代表按照pxUsd下单,单位为USD (请求参数px 的数值单位是USD) | 
| > sz | String | 原始委托数量, 币币/币币杠杆,以币为单位;交割/永续/期权,以张为单位 | 
| > notionalUsd | String | 委托单预估美元价值 | 
| > fillNotionalUsd | String | 委托单已成交的美元价值 | 
| > ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单fok:全部成交或立即取消单ioc:立即成交并取消剩余单optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)op_fok:期权简选(全部成交或立即取消) | 
| > side | String | 订单方向, buysell | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| > tdMode | String | 交易模式 保证金模式 isolated:逐仓cross:全仓非保证金模式 cash:现金 | 
| > tgtCcy | String | 市价单委托数量 sz的单位base_ccy: 交易货币quote_ccy:计价货币 | 
| > fillPx | String | 当前推送消息的成交价格 | 
| > tradeId | String | 当前推送消息的成交ID | 
| > fillSz | String | 当前推送消息的成交数量 对于 币币和杠杆,单位为交易货币,如 BTC-USDT, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币;对于交割、永续以及期权,单位为张。 | 
| > fillPnl | String | 当前推送消息的成交收益,适用于有成交的平仓订单。其他情况均为0。 | 
| > fillTime | String | 当前推送消息的成交时间 | 
| > fillFee | String | 当前推送消息的成交手续费金额或者返佣金额: 手续费扣除 为 ‘负数’,如 -0.01 ; 手续费返佣 为 ‘正数’,如 0.01 | 
| > fillFeeCcy | String | 当前推送消息的成交手续费币种或者返佣币种。 如果fillFee小于0,为手续费币种;如果fillFee大于等于0,为返佣币种 | 
| > fillPxVol | String | 成交时的隐含波动率仅适用于期权,其他业务线返回空字符串"" | 
| > fillPxUsd | String | 成交时的期权价格,以USD为单位仅适用于期权,其他业务线返回空字符串"" | 
| > fillMarkVol | String | 成交时的标记波动率,仅适用于期权,其他业务线返回空字符串"" | 
| > fillFwdPx | String | 成交时的远期价格,仅适用于期权,其他业务线返回空字符串"" | 
| > fillMarkPx | String | 成交时的标记价格,仅适用于 交割/永续/期权 | 
| > fillIdxPx | String | 交易执行时的指数价格 对于交叉现货币对,返回 baseCcy-USDT 的指数价格。 例如LTC-ETH,该字段返回LTC-USDT的指数价格。 | 
| > execType | String | 当前推送消息成交的流动性方向 T:taker M:maker | 
| > accFillSz | String | 累计成交数量 对于 币币和杠杆,单位为交易货币,如 BTC-USDT, 单位为 BTC;对于市价单,无论tgtCcy是base_ccy,还是quote_ccy,单位均为交易货币;对于交割、永续以及期权,单位为张。 | 
| > avgPx | String | 成交均价,如果成交数量为0,该字段也为0 | 
| > state | String | 订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交mmp_canceled:做市商保护机制导致的自动撤单 | 
| > lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价,止盈委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价,止损委托价格为 -1时,执行市价止损 | 
| > attachAlgoOrds | Array of objects | 下单附带止盈止损信息 | 
| >> attachAlgoId | String | 附带止盈止损的订单ID,改单时,可用来标识该笔附带止盈止损订单。下止盈止损委托单时,该值不会传给 algoId | 
| >> attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID | 
| >> tpOrdKind | String | 止盈订单类型 condition: 条件单limit: 限价单 | 
| >> tpTriggerPx | String | 止盈触发价 | 
| >> tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> tpOrdPx | String | 止盈委托价 | 
| >> slTriggerPx | String | 止损触发价 | 
| >> slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> slOrdPx | String | 止损委托价 | 
| >> sz | String | 张数。仅适用于“多笔止盈”的止盈订单 | 
| >> amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| > linkedAlgoOrd | Object | 止损订单信息,仅适用于包含限价止盈单的双向止盈止损订单,触发后生成的普通订单 | 
| >> algoId | Object | 策略订单唯一标识 | 
| > stpId | String | 如果自成交保护不适用则返回"" | 
| > stpMode | String | 自成交保护模式 | 
| > feeCcy | String | 手续费币种 对于币币和杠杆的挂单卖单,表示计价币种;其他情况下,表示收取手续费的币种 | 
| > fee | String | 手续费金额 对于币币和杠杆(除挂单卖单外):平台收取的累计手续费,始终为负数。 对于币币和杠杆的挂单卖单、交割、永续和期权:累计手续费和返佣(币币和杠杆挂单卖单始终以计价币种计算) | 
| > rebateCcy | String | 返佣币种 对于币币和杠杆的挂单卖单,表示交易币种;其他情况下,表示支付返佣的币种 | 
| > rebate | String | 返佣金额,仅适用于币币和杠杆 对于挂单卖单:累计手续费和返佣金额,单位为交易币种。 其他情况下,表示挂单返佣金额,始终为正数,如无返佣时返回""。 | 
| > pnl | String | 收益(不包括手续费) 适用于有成交的平仓订单,其他情况均为0 对于合约全仓爆仓,将包含相应强平惩罚金 | 
| > source | String | 订单来源 6:计划委托策略触发后的生成的普通单7:止盈止损策略触发后的生成的普通单13:策略委托单触发后的生成的普通单25:移动止盈止损策略触发后的生成的普通单34: 追逐限价委托生成的普通单 | 
| > cancelSource | String | 订单取消的来源 有效值及对应的含义是: 0: 已撤单:系统撤单1: 用户主动撤单2: 已撤单:预减仓撤单,用户保证金不足导致挂单被撤回3: 已撤单:风控撤单,用户保证金不足有爆仓风险,导致挂单被撤回4: 已撤单:币种借币量达到平台硬顶,系统已撤回该订单6: 已撤单:触发 ADL 撤单,用户维持保证金率较低且有爆仓风险,导致挂单被撤回7: 已撤单:交割合约到期9: 已撤单:扣除资金费用后可用余额不足,系统已撤回该订单10: 已撤单:期权合约到期13: 已撤单:FOK 委托订单未完全成交,导致挂单被完全撤回14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内17: 已撤单:平仓单被撤单,由于仓位已被市价全平20: 系统倒计时撤单21: 已撤单:相关仓位被完全平仓,系统已撤销该止盈止损订单22已撤单:存在更优价格的同方向订单,系统自动撤销当前操作的只减仓订单23已撤单:存在更优价格的同方向订单,系统自动撤销已存在的只减仓订单27: 成交滑点超过5%,触发成交差价保护导致系统撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护33: 当前 taker 订单匹配的订单数量超过最大限制36: 关联止损被触发,撤销限价止盈37: 关联止损被撤销,撤销限价止盈38: 您已撤销做市商保护 (MMP) 类型订单39: 因做市商保护 (MMP) 被触发,该类型订单已被撤销42: 初始下单价格与最新的买一或卖一价已达到最大追逐距离,您的订单已被自动取消43: 由于买单价格高于指数价格或卖单价格低于指数价格,导致系统撤单44:由于该币种的可用余额不足,无法在触发自动换币后进行兑换,您的订单已撤销,撤销订单后恢复的余额将用于自动换币。当该币种的总抵押借贷量达到平台抵押借贷风控上限时,则会触发自动换币。 | 
| > amendSource | String | 订单修改的来源 1: 用户主动改单,改单成功2: 用户主动改单,并且当前这笔订单被只减仓修改,改单成功3: 用户主动下单,并且当前这笔订单被只减仓修改,改单成功4: 用户当前已存在的挂单(非当前操作的订单),被只减仓修改,改单成功5:期权 px, pxVol 或 pxUsd 的跟随变动导致的改单,比如 iv=60,USD,px 锚定iv=60 时,USD, px 产生变动时的改单 | 
| > category | String | 订单种类分类 normal:普通委托订单种类twap:TWAP订单种类adl:ADL订单种类full_liquidation:爆仓订单种类partial_liquidation:减仓订单种类delivery:交割ddh:对冲减仓类型订单auto_conversion:抵押借币自动还币订单 | 
| > isTpLimit | String | 是否为限价止盈,true 或 false. | 
| > uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > reqId | String | 修改订单时使用的request ID,如果没有修改,该字段为"" | 
| > amendResult | String | 修改订单的结果 -1:失败0:成功1:自动撤单(修改请求返回成功但最终改单失败导致自动撤销)2: 自动改单成功,仅适用于期权pxUsd和pxVol订单的自动改单通过API修改订单时,如果 cxlOnFail设置为true且修改返回结果为失败时,则返回 ""通过API修改订单时,如果修改返回结果为成功但修改最终失败后,当 cxlOnFail设置为false时返回-1;当cxlOnFail设置为true时则返回1通过Web/APP修改订单时,如果修改失败后,则返回 -1 | 
| > reduceOnly | String | 是否只减仓, true或false | 
| > quickMgnType | String | 一键借币类型,仅适用于杠杆逐仓的一键借币模式 manual:手动,auto_borrow:自动借币,auto_repay:自动还币 | 
| > algoClOrdId | String | 客户自定义策略订单ID。策略订单触发,且策略单有 algoClOrdId时有值,否则为"", | 
| > algoId | String | 策略委托单ID,策略订单触发时有值,否则为"" | 
| > lastPx | String | 最新成交价 | 
| > code | String | 错误码,默认为0 | 
| > msg | String | 错误消息,默认为"" | 
| > tradeQuoteCcy | String | 用于交易的计价币种。 | 
WS / 成交频道
获取成交信息。该频道无首推,仅在订单簿成交相关事件触发时推送数据,tradeId > 0。
该频道仅适用于交易等级VIP5及以上的用户。其他用户请使用WS / 订单频道。
服务地址
/ws/v5/private (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [
        {
            "channel": "fills",
            "instId": "BTC-USDT-SWAP"
        }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
            "channel": "fills",
            "instId": "BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [
        {
            "channel": "fills"
        }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/private",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
            "channel": "fills"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 订阅的频道 | 
| > channel | String | 是 | 频道名 fills | 
| > instId | String | 否 | 产品ID | 
成功返回示例:单个
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "fills",
    "instId": "BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "fills"
  },
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 fills | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg": {
        "channel": "fills",
        "instId": "BTC-USDT-SWAP",
        "uid": "614488474791111"
    },
    "data":[
        {
            "instId": "BTC-USDT-SWAP",
            "fillSz": "100",
            "fillPx": "70000",
            "side": "buy",
            "ts": "1705449605015",
            "ordId": "680800019749904384",
            "clOrdId": "1234567890",
            "tradeId": "12345",
            "execType": "T",
            "count": "10"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID | 
| > fillSz | String | 成交数量,若这笔成交有聚合,则成交数量为聚合后的数量 | 
| > fillPx | String | 成交价格 | 
| > side | String | 订单方向 buysell | 
| > ts | String | 成交时间 | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID | 
| > tradeId | String | 成交ID 若为taker订单且有聚合,则为聚合的多笔交易中最新一笔交易的成交ID | 
| > execType | String | 流动性方向 T:takerM:maker | 
| > count | String | 聚合的订单匹配数量 | 
WS / 下单
只有当您的账户有足够的资金才能下单。一旦下单,您的账户资金将在订单生命周期内被冻结。被冻结的资金以及数量取决于订单指定的类型和参数
服务地址
/ws/v5/private (需要登录)
限速:60次/2s
跟单交易带单员带单产品的限速:4次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
请求示例
{
    "id": "1512",
    "op": "order",
    "args": [{
        "side": "buy",
        "instId": "BTC-USDT",
        "tdMode": "isolated",
        "ordType": "market",
        "sz": "100"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 order | 
| args | Array of objects | 是 | 请求参数 | 
| > instId | String | 是 | 产品ID,如 BTC-USDT | 
| > tdMode | String | 是 | 交易模式 保证金模式 isolated:逐仓cross:全仓非保证金模式 cash:现金spot_isolated:现货逐仓(仅适用于现货带单) ,现货带单时,tdMode的值需要指定为spot_isolated | 
| > ccy | String | 否 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| > clOrdId | String | 否 | 由用户设置的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| > tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 | 
| > side | String | 是 | 订单方向, buysell | 
| > posSide | String | 否 | 持仓方向 在买卖模式下,默认 net在开平仓模式下必填,且仅可选择 long或short,仅适用于交割/永续 | 
| > ordType | String | 是 | 订单类型 market:市价单,仅适用于币币/杠杆/交割/永续limit:限价单post_only:只做maker单fok:全部成交或立即取消ioc:立即成交并取消剩余optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单) | 
| > sz | String | 是 | 委托数量 | 
| > px | String | 可选 | 委托价格,仅适用于 limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单期权下单时,px/pxUsd/pxVol 只能填一个 | 
| > pxUsd | String | 可选 | 以USD价格进行期权下单 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| > pxVol | String | 可选 | 以隐含波动率进行期权下单,例如 1 代表 100% 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| > reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
| > tgtCcy | String | 否 | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| > banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 | 
| > pxAmendType | String | 否 | 订单价格修正类型 0:当px超出价格限制时,不允许系统修改订单价格1:当px超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| > stpMode | String | 否 | 自成交保护模式 cancel_maker,cancel_taker,cancel_bothCancel both不支持FOK 默认使用账户层面的acctStpMode进行下单,该字段的默认值为 cancel_maker,用户可通过母账户登录网页修改该配置;用户亦可以通过下单接口的stpMode参数指定订单的STP模式。 | 
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
成功返回示例
{
    "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 | 操作 order | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > 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
跟单交易带单员带单产品的限速:4个/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
请求示例
{
    "id": "1513",
    "op": "batch-orders",
    "args": [{
        "side": "buy",
        "instId": "BTC-USDT",
        "tdMode": "isolated",
        "ordType": "market",
        "sz": "100"
    }, {
        "side": "buy",
        "instId": "BTC-USD-200925",
        "tdMode": "isolated",
        "ordType": "limit",
        "sz": "1"
    }]
} 
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 batch-orders | 
| args | Array of objects | 是 | 请求参数 | 
| > instId | String | 是 | 产品ID,如 BTC-USDT | 
| > tdMode | String | 否 | 交易模式 保证金模式 cross:全仓isolated:逐仓非保证金模式 cash:现金spot_isolated:现货逐仓(仅适用于现货带单) ,现货带单时,tdMode的值需要指定为spot_isolated注意: isolated在跨币种保证金模式和组合保证金模式下不可用。 | 
| > ccy | String | 否 | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| > clOrdId | String | 否 | 用户提供的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| > tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 | 
| > side | String | 是 | 订单方向, buysell | 
| > posSide | String | 否 | 持仓方向 在买卖模式下,默认 net在开平仓模式下必填,且仅可选择 long或short,仅适用于交割/永续 | 
| > ordType | String | 是 | 订单类型 market:市价单,仅适用于币币/杠杆/交割/永续limit:限价单post_only:只做maker单fok:全部成交或立即取消单ioc:立即成交并取消剩余单optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续)mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单)mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单) | 
| > sz | String | 是 | 委托数量 | 
| > px | String | 可选 | 委托价格,仅适用于 limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单期权下单时,px/pxUsd/pxVol 只能填一个 | 
| > pxUsd | String | 可选 | 以USD价格进行期权下单 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| > pxVol | String | 可选 | 以隐含波动率进行期权下单,例如 1 代表 100% 仅适用于期权 期权下单时 px/pxUsd/pxVol 必填一个,且只能填一个 | 
| > reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
| > tgtCcy | String | 否 | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| > banAmend | Boolean | 否 | 是否禁止币币市价改单,true 或 false,默认false 为true时,余额不足时,系统不会改单,下单会失败,仅适用于币币市价单 | 
| > pxAmendType | String | 否 | 订单价格修正类型 0:当px超出价格限制时,不允许系统修改订单价格1:当px超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| > stpMode | String | 否 | 自成交保护模式 cancel_maker,cancel_taker,cancel_bothCancel both不支持FOK 默认使用账户层面的acctStpMode进行下单,该字段的默认值为 cancel_maker,用户可通过母账户登录网页修改该配置;用户亦可以通过下单接口的stpMode参数指定订单的STP模式。 | 
| expTime | String | 否 | 请求有效截止时间。Unix时间戳的毫秒数格式,如 1597026383085 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
全部成功返回示例
{
    "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 of objects | 请求成功后返回的数据 | 
| > 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
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
请求示例
{
    "id": "1514",
    "op": "cancel-order",
    "args": [{
        "instId": "BTC-USDT",
        "ordId": "2510789768709120"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 cancel-order | 
| args | Array of objects | 是 | 请求参数 | 
| > 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 of objects | 请求成功后返回的数据 | 
| > 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
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
请求示例
{
    "id": "1515",
    "op": "batch-cancel-orders",
    "args": [{
        "instId": "BTC-USDT",
        "ordId": "2517748157541376"
    }, {
        "instId": "LTC-USDT",
        "ordId": "2517748155771904"
    }]
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 batch-cancel-orders | 
| args | Array of objects | 是 | 请求参数 | 
| > 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 of objects | 请求成功后返回的数据 | 
| > 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
跟单交易带单员带单产品的限速:4次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
请求示例
{
    "id": "1512",
    "op": "amend-order",
    "args": [{
        "instId": "BTC-USDT",
        "ordId": "2510789768709120",
        "newSz": "2"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 amend-order | 
| args | Array of objects | 是 | 请求参数 | 
| > 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 | 可选 | 修改后的新价格 修改的新价格期权改单时,newPx/newPxUsd/newPxVol 只能填一个,且必须与下单参数保持一致,如下单用px,改单时需使用newPx | 
| > newPxUsd | String | 可选 | 以USD价格进行期权改单 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| > newPxVol | String | 可选 | 以隐含波动率进行期权改单,例如 1 代表 100% 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| > pxAmendType | String | 否 | 订单价格修正类型 0:当newPx超出价格限制时,不允许系统修改订单价格1:当newPx超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| 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 of objects | 请求成功后返回的数据 | 
| > 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
跟单交易带单员带单产品的限速:4个/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
该接口限速同时受到 子账户限速 及 基于成交比率的子账户限速 限速规则的影响。
请求示例
{
    "id": "1513",
    "op": "batch-amend-orders",
    "args": [{
        "instId": "BTC-USDT",
        "ordId": "12345689",
        "newSz": "2"
    }, {
        "instId": "BTC-USDT",
        "ordId": "12344",
        "newSz": "2"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 batch-amend-orders | 
| args | Array of objects | 是 | 请求参数 | 
| > 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 | 可选 | 修改后的新价格 修改的新价格期权改单时,newPx/newPxUsd/newPxVol 只能填一个,且必须与下单参数保持一致,如下单用px,改单时需使用newPx | 
| > newPxUsd | String | 可选 | 以USD价格进行期权改单 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| > newPxVol | String | 可选 | 以隐含波动率进行期权改单,例如 1 代表 100% 仅适用于期权,期权改单时,newPx/newPxUsd/newPxVol 只能填一个 | 
| > pxAmendType | String | 否 | 订单价格修正类型 0:当newPx超出价格限制时,不允许系统修改订单价格1:当newPx超出价格限制时,允许系统将价格修改为限制范围内的最优值默认值为 0 | 
| 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 of objects | 请求成功后返回的数据 | 
| > 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 | 
WS / 撤销 MMP 订单
撤销同一交易品种下用户所有的 MMP 挂单
仅适用于组合保证金账户模式下的期权订单,且有 MMP 权限。
服务地址
/ws/v5/private (需要登录)
限速:5次/2s
限速规则:User ID
请求示例
{
    "id": "1512",
    "op": "mass-cancel",
    "args": [{
        "instType":"OPTION",
        "instFamily":"BTC-USD"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作,如 mass-cancel | 
| args | Array of objects | 是 | 请求参数 | 
| > instType | String | 是 | 交易产品类型 OPTION:期权 | 
| > instFamily | String | 是 | 交易品种 | 
| > lockInterval | String | 否 | 锁定时长(毫秒) 范围应为[0, 10 000] 默认为 0. 如果想要立即解锁,您可以设置为 "0" 下单时,如果在该锁定期间,会报错 54008,如果在 MMP 触发期间,会报错 51034 | 
成功返回示例
{
    "id": "1512",
    "op": "mass-cancel",
    "data": [
        {
            "result": true
        }
    ],
    "code": "0",
    "msg": ""
} 
格式错误返回示例
{
    "id": "1512",
    "op": "mass-cancel",
    "data": [],
    "code": "60013",
    "msg": "Invalid args"
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| op | String | 业务操作 | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > result | Boolean | 撤单结果 true:全部撤单成功false:全部撤单失败 | 
策略交易
POST / 策略委托下单
提供单向止盈止损委托、双向止盈止损委托、追逐限价委托、计划委托、时间加权委托、移动止盈止损委托
限速:20次/2s
跟单交易带单员带单产品的限速:1次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
HTTP请求
POST /api/v5/trade/order-algo
请求示例
# 止盈止损策略下单
POST /api/v5/trade/order-algo
body
{
    "instId":"BTC-USDT",
    "tdMode":"cross",
    "side":"buy",
    "ordType":"conditional",
    "sz":"2",
    "tpTriggerPx":"15",
    "tpOrdPx":"18"
}
# 计划委托策略下单
POST /api/v5/trade/order-algo
body
{
    "instId": "BTC-USDT-SWAP",
    "side": "buy",
    "tdMode": "cross",
    "posSide": "net",
    "sz": "1",
    "ordType": "trigger",
    "triggerPx": "25920",
    "triggerPxType": "last",
    "orderPx": "-1",
    "attachAlgoOrds": [{
        "attachAlgoClOrdId": "",
        "slTriggerPx": "100",
        "slOrdPx": "600",
        "tpTriggerPx": "25921",
        "tpOrdPx": "2001"
    }]
}
# 移动止盈止损策略下单
POST /api/v5/trade/order-algo
body
{
    "instId": "BTC-USDT-SWAP",
    "tdMode": "cross",
    "side": "buy",
    "ordType": "move_order_stop",
    "sz": "10",
    "posSide": "net",
    "callbackRatio": "0.05",
    "reduceOnly": true
}
# 时间加权策略下单
POST /api/v5/trade/order-algo
body
{
    "instId": "BTC-USDT-SWAP",
    "tdMode": "cross",
    "side": "buy",
    "ordType": "twap",
    "sz": "10",
    "posSide": "net",
    "szLimit": "10",
    "pxLimit": "100",
    "timeInterval": "10",
    "pxSpread": "10"
}
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.place_algo_order(
    instId="BTC-USDT",
    tdMode="cross",
    side="buy",
    ordType="conditional",
    sz="2",
    tpTriggerPx="15",
    tpOrdPx="18"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| tdMode | String | 是 | 交易模式 保证金模式 isolated:逐仓,cross:全仓非保证金模式 cash:非保证金spot_isolated:现货逐仓(仅适用于现货带单)注意: isolated在跨币种保证金模式和组合保证金模式下不可用。 | 
| ccy | String | 否 | 保证金币种 适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| side | String | 是 | 订单方向 buy:买sell:卖 | 
| posSide | String | 可选 | 持仓方向 在开平仓模式下必填,且仅可选择 long或short | 
| ordType | String | 是 | 订单类型 conditional:单向止盈止损oco:双向止盈止损chase: 追逐限价委托,仅适用于交割和永续trigger:计划委托move_order_stop:移动止盈止损twap:时间加权委托 | 
| sz | String | 可选 | 委托数量 sz和closeFraction必填且只能填其一 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间 | 
| tgtCcy | String | 否 | 委托数量的类型 base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币单向止盈止损市价买单默认买为 计价货币,卖为交易货币 | 
| algoClOrdId | String | 否 | 客户自定义策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| closeFraction | String | 可选 | 策略委托触发时,平仓的百分比。1 代表100% 现在系统只支持全部平仓,唯一接受参数为 1对于同一个仓位,仅支持一笔全部平仓的止盈止损挂单 仅适用于 交割或永续当 posSide=net时,reduceOnly必须为true仅适用于止盈止损 ordType=conditional或oco仅适用于止盈止损市价订单 不支持组合保证金模式 sz和closeFraction必填且只能填其一 | 
| tradeQuoteCcy | String | 否 | 用于交易的计价币种。仅适用于 币币。默认值为 instId的计价币种,比如:对于BTC-USD,默认取USD。 | 
止盈止损
了解更多 止盈止损
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| tpTriggerPx | String | 否 | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| tpOrdPx | String | 否 | 止盈委托价 对于条件止盈单,如果填写此参数,必须填写 止盈触发价对于限价止盈单,需填写此参数,不需要填写 止盈触发价委托价格为-1时,执行市价止盈 | 
| tpOrdKind | String | 否 | 止盈订单类型 condition: 条件单limit: 限价单默认为 condition | 
| slTriggerPx | String | 否 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| slOrdPx | String | 否 | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
| cxlOnClosePos | Boolean | 否 | 决定用户所下的止盈止损订单是否与该交易产品对应的仓位关联。若关联,仓位被全平时,该止盈止损订单会被同时撤销;若不关联,仓位被撤销时,该止盈止损订单不受影响。 有效值: true:下单与仓位关联的止盈止损订单false:下单与仓位不关联的止盈止损订单默认值为 false。若传入true,用户必须同时传入 reduceOnly = true,说明当下单与仓位关联的止盈止损订单时,必须为只减仓。适用于 合约模式/跨币种保证金模式。 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
追逐限价委托
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| chaseType | String | 否 | 追逐类型。 distance: 买一/卖一价的距离,默认值。ratio: 比例。 | 
| chaseVal | String | 否 | 追逐值。 当 chaseType为distance时,是到买一/卖一价的距离。对于 USDT 本位合约,单位为 USDT; 对于 USDC 合约,单位为 USDC; 对于币本位合约,单位为 USD 。 当 chaseType为ratio时,为比率,0.1 代表 10%。默认值为 0。 | 
| maxChaseType | String | 可选 | 最大追逐值的类型。 distance: 买一/卖一价的距离ratio: 比例。0.1 代表 10%。maxChaseTyep 和 maxChaseVal 需要同时填写或者不填写。 | 
| maxChaseVal | String | 可选 | 最大追逐值。 当 chaseType为distance时,是到买一/卖一价的的最大距离当 chaseType为ratio时,指的比率,0.1 代表 10%。 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 币币杠杆,以及买卖模式下的交割/永续仅适用于 合约模式和跨币种保证金模式 | 
计划委托
了解更多 计划委托
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| triggerPx | String | 是 | 计划委托触发价格 | 
| orderPx | String | 是 | 委托价格 委托价格为 -1时,执行市价委托 | 
| triggerPxType | String | 否 | 计划委托触发价格类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| attachAlgoOrds | Array of objects | 否 | 附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > attachAlgoClOrdId | String | 否 | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 | 
| > tpTriggerPx | String | 否 | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| > tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > tpOrdPx | String | 否 | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 否 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > slOrdPx | String | 否 | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
移动止盈止损
了解更多 移动止盈止损
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| callbackRatio | String | 可选 | 回调幅度的比例,如 "0.05"代表"5%" callbackRatio和callbackSpread只能传入一个 | 
| callbackSpread | String | 可选 | 回调幅度的价距 | 
| activePx | String | 否 | 激活价格 激活价格是移动止盈止损的激活条件,当市场最新成交价达到或超过激活价格,委托被激活。激活后系统开始计算止盈止损的实际触发价格。如果不填写激活价格,即下单后就被激活。 | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false该参数仅在 交割/永续的买卖模式下有效,开平模式忽略此参数 | 
时间加权
了解更多 时间加权委托
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| pxVar | String | 可选 | 吃单价优于盘口的比例,取值范围在 [0.0001,0.01] 之间,如 "0.01"代表"1%" 以买入为例,市价低于限制价时,策略开始用买一价向上取一定比例的委托价来委托小额买单。当前这个参数就用来确定向上的比例。 pxVar和pxSpread只能传入一个 | 
| pxSpread | String | 可选 | 吃单单价优于盘口的价距,取值范围不小于0(无上限) 以买入为例,市价低于限制价时,策略开始用买一价向上取一定价距的委托价来委托小额买单。当前这个参数就用来确定向上的价距。 | 
| szLimit | String | 是 | 单笔数量 以买入为例,市价低于 “限制价” 时,策略开始用买一价向上取一定价距 / 比例的委托价来委托 “一定数量” 的买单。当前这个参数用来确定其中的 “一定数量”。 | 
| pxLimit | String | 是 | 吃单限制价,取值范围不小于0(无上限) 以买入为例,市价低于 “限制价” 时,策略开始用买一价向上取一定价距 / 比例的委托价来委托小额买单。当前这个参数就是其中的 “限制价”。 | 
| timeInterval | String | 是 | 下单间隔,单位为秒。 以买入为例,市价低于 “限制价” 时,策略开始按 “时间周期” 用买一价向上取一定价距 / 比例的委托价来委托小额买单。当前这个参数就是其中的 “时间周期”。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoId":"12345689",
            "clOrdId": "",
            "algoClOrdId": "",
            "sCode":"0",
            "sMsg":"",
            "tag":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略委托单ID | 
| clOrdId | String | |
| algoClOrdId | String | 客户自定义策略订单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 订单标签 | 
POST / 撤销策略委托订单
撤销策略委托订单,每次最多可以撤销10个策略委托单
限速:20次/2s
限速规则(期权以外):User ID + Instrument ID
限速规则(只限期权):User ID + Instrument Family
权限:交易
HTTP请求
POST /api/v5/trade/cancel-algos
请求示例
POST /api/v5/trade/cancel-algos
body
[
    {
        "algoId":"590919993110396111",
        "instId":"BTC-USDT"
    },
    {
        "algoId":"590920138287841222",
        "instId":"BTC-USDT"
    }
]
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)
# 支持止盈止损,计划委托 类型的策略撤单
algo_orders = [
    {"instId": "BTC-USDT", "algoId": "590919993110396111"},
    {"instId": "BTC-USDT", "algoId": "590920138287841222"}
]
result = tradeAPI.cancel_algo_order(algo_orders)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID 如 BTC-USDT | 
| algoId | String | 可选 | 策略委托单ID algoId和algoClOrdId必须传一个,若传两个,以algoId为主 | 
| algoClOrdId | String | 可选 | 客户自定义策略订单ID algoId和algoClOrdId必须传一个,若传两个,以algoId为主 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "1836489397437468672",
            "clOrdId": "",
            "sCode": "0",
            "sMsg": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略委托单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| clOrdId | String | |
| algoClOrdId | String | |
| tag | String | 
POST / 修改策略委托订单
修改策略委托订单(仅支持止盈止损和计划委托订单,不包含、冰山委托、时间加权、移动止盈止损等订单)
限速:20次/2s
限速规则:User ID + Instrument ID
权限:交易
HTTP请求
POST /api/v5/trade/amend-algos
请求示例
POST /api/v5/trade/amend-algos
body
{
    "algoId":"2510789768709120",
    "newSz":"2",
    "instId":"BTC-USDT"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID | 
| algoId | String | 可选 | 策略委托单ID algoId和algoClOrdId必须传一个,若传两个,以algoId为主 | 
| algoClOrdId | String | 可选 | 客户自定义策略订单ID algoId和algoClOrdId必须传一个,若传两个,以algoId为主 | 
| cxlOnFail | Boolean | 否 | 当订单修改失败时,该订单是否需要自动撤销。默认为 falsefalse:不自动撤单true:自动撤单 | 
| reqId | String | 否 | 用户自定义修改事件ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 | 
| newSz | String | 可选 | 修改的新数量,必须大于0。 | 
止盈止损
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| newTpTriggerPx | String | 可选 | 止盈触发价 如果止盈触发价或者委托价为0,那代表删除止盈 | 
| newTpOrdPx | String | 可选 | 止盈委托价 委托价格为-1时,执行市价止盈 | 
| newSlTriggerPx | String | 可选 | 止损触发价 如果止损触发价或者委托价为0,那代表删除止损 | 
| newSlOrdPx | String | 可选 | 止损委托价 委托价格为-1时,执行市价止损 | 
| newTpTriggerPxType | String | 可选 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| newSlTriggerPxType | String | 可选 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
计划委托
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| newTriggerPx | String | 是 | 修改后的触发价格 | 
| newOrdPx | String | 是 | 修改后的委托价格 委托价格为 -1时,执行市价委托 | 
| newTriggerPxType | String | 否 | 修改后的计划委托触发价格类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| attachAlgoOrds | Array of objects | 否 | 修改附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > newTpTriggerPx | String | 否 | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| > newTpTriggerPxType | String | 否 | 修改后的止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > newTpOrdPx | String | 否 | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| > newSlTriggerPx | String | 否 | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > newSlTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为 last | 
| > newSlOrdPx | String | 否 | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
返回结果
{
    "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
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/trade/order-algo
请求示例
GET /api/v5/trade/order-algo?algoId=1753184812254216192
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 可选 | 策略委托单ID algoId和algoClOrdId必须传一个,若传两个,以algoId为主 | 
| algoClOrdId | String | 可选 | 客户自定义策略订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "activePx": "",
            "actualPx": "",
            "actualSide": "",
            "actualSz": "0",
            "algoClOrdId": "",
            "algoId": "1753184812254216192",
            "amendPxOnTriggerType": "0",
            "attachAlgoOrds": [],
            "cTime": "1724751378980",
            "callbackRatio": "",
            "callbackSpread": "",
            "ccy": "",
            "chaseType": "",
            "chaseVal": "",
            "clOrdId": "",
            "closeFraction": "",
            "failCode": "0",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "isTradeBorrowMode": "",
            "last": "62916.5",
            "lever": "",
            "linkedOrd": {
                "ordId": ""
            },
            "maxChaseType": "",
            "maxChaseVal": "",
            "moveTriggerPx": "",
            "ordId": "",
            "ordIdList": [],
            "ordPx": "",
            "ordType": "conditional",
            "posSide": "net",
            "pxLimit": "",
            "pxSpread": "",
            "pxVar": "",
            "quickMgnType": "",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "state": "live",
            "sz": "10",
            "szLimit": "",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "quote_ccy",
            "timeInterval": "",
            "tpOrdPx": "-1",
            "tpTriggerPx": "10000",
            "tpTriggerPxType": "last",
            "triggerPx": "",
            "triggerPxType": "",
            "triggerTime": "",
            "tradeQuoteCcy": "USDT",
            "uTime": "1724751378980"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 最新一笔订单ID,即将废弃。 | 
| ordIdList | Array of strings | 订单ID列表,当止盈止损存在市价拆单时,会有多个。 | 
| algoId | String | 策略委托单ID | 
| clOrdId | String | 客户自定义订单ID | 
| sz | String | 委托数量 | 
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% | 
| ordType | String | 订单类型 | 
| side | String | 订单方向 | 
| posSide | 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:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| 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 objects | 附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 | 
| > tpTriggerPx | String | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 | 
| > ordId | String | 订单 ID | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| isTradeBorrowMode | String | 是否自动借币 true:自动借币 false:不自动借币 仅适用于计划委托、移动止盈止损和 时间加权策略 | 
| chaseType | String | 追逐类型。仅适用于 追逐限价委托。 | 
| chaseVal | String | 追逐值。仅适用于 追逐限价委托。 | 
| maxChaseType | String | 最大追逐值的类型。仅适用于 追逐限价委托。 | 
| maxChaseVal | String | 最大追逐值。仅适用于 追逐限价委托。 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取未完成策略委托单列表
获取当前账户下未触发的策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
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"
flag = "1"  # 实盘: 0, 模拟盘: 1
tradeAPI = Trade.TradeAPI(apikey, secretkey, passphrase, False, flag)
# 查询所有未触发的单向止盈止损策略订单
result = tradeAPI.order_algos_list(
    ordType="conditional"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 否 | 策略委托单ID | 
| instType | String | 否 | 产品类型 SPOT:币币SWAP:永续合约FUTURES:交割合约MARGIN:杠杆 | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| ordType | String | 是 | 订单类型 conditional:单向止盈止损oco:双向止盈止损chase: 追逐限价委托,仅适用于交割和永续trigger:计划委托move_order_stop:移动止盈止损twap:时间加权委托支持 conditional和oco同时查询,半角逗号分隔,对于其他类型,一次请求仅支持查询一个 | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "activePx": "",
            "actualPx": "",
            "actualSide": "",
            "actualSz": "0",
            "algoClOrdId": "",
            "algoId": "1753184812254216192",
            "amendPxOnTriggerType": "0",
            "attachAlgoOrds": [],
            "cTime": "1724751378980",
            "callbackRatio": "",
            "callbackSpread": "",
            "ccy": "",
            "chaseType": "",
            "chaseVal": "",
            "clOrdId": "",
            "closeFraction": "",
            "failCode": "0",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "isTradeBorrowMode": "",
            "last": "62916.5",
            "lever": "",
            "linkedOrd": {
                "ordId": ""
            },
            "maxChaseType": "",
            "maxChaseVal": "",
            "moveTriggerPx": "",
            "ordId": "",
            "ordIdList": [],
            "ordPx": "",
            "ordType": "conditional",
            "posSide": "net",
            "pxLimit": "",
            "pxSpread": "",
            "pxVar": "",
            "quickMgnType": "",
            "reduceOnly": "false",
            "side": "buy",
            "slOrdPx": "",
            "slTriggerPx": "",
            "slTriggerPxType": "",
            "state": "live",
            "sz": "10",
            "szLimit": "",
            "tag": "",
            "tdMode": "cash",
            "tgtCcy": "quote_ccy",
            "timeInterval": "",
            "tpOrdPx": "-1",
            "tpTriggerPx": "10000",
            "tpTriggerPxType": "last",
            "triggerPx": "",
            "triggerPxType": "",
            "triggerTime": "",
            ”tradeQuoteCcy“: "USDT",
            "uTime": "1724751378980"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| ordId | String | 最新一笔订单ID,即将废弃。 | 
| ordIdList | Array of strings | 订单ID列表,当止盈止损存在市价拆单时,会有多个。 | 
| algoId | String | 策略委托单ID | 
| clOrdId | String | 客户自定义订单ID | 
| sz | String | 委托数量 | 
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% | 
| ordType | String | 订单类型 | 
| side | String | 订单方向 | 
| posSide | 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:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| 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 | 单笔数量 仅适用于 冰山委托和时间加权委托 | 
| tag | String | 订单标签 | 
| pxLimit | 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 objects | 附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 | 
| > tpTriggerPx | String | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 | 
| > ordId | String | 订单 ID | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| isTradeBorrowMode | String | 是否自动借币 true:自动借币 false:不自动借币 仅适用于计划委托、移动止盈止损和 时间加权策略 | 
| chaseType | String | 追逐类型。仅适用于 追逐限价委托。 | 
| chaseVal | String | 追逐值。仅适用于 追逐限价委托。 | 
| maxChaseType | String | 最大追逐值的类型。仅适用于 追逐限价委托。 | 
| maxChaseVal | String | 最大追逐值。仅适用于 追逐限价委托。 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取历史策略委托单列表
获取最近3个月当前账户下所有策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
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:双向止盈止损chase: 追逐限价委托,仅适用于交割和永续trigger:计划委托move_order_stop:移动止盈止损twap:时间加权委托支持 conditional和oco同时查询,半角逗号分隔,对于其他类型,一次请求仅支持查询一个 | 
| state | String | 可选 | 订单状态 effective:已生效canceled:已经撤销order_failed:委托失败state和algoId必填且只能填其一 | 
| algoId | String | 可选 | 策略委托单ID | 
| instType | String | 否 | 产品类型 SPOT:币币SWAP:永续合约FUTURES:交割合约MARGIN:杠杆 | 
| instId | String | 否 | 产品ID, BTC-USDT | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "activePx": "",
            "actualPx": "",
            "actualSide": "tp",
            "actualSz": "100",
            "algoClOrdId": "",
            "algoId": "1880721064716505088",
            "amendPxOnTriggerType": "0",
            "attachAlgoOrds": [],
            "cTime": "1728552255493",
            "callbackRatio": "",
            "callbackSpread": "",
            "ccy": "",
            "chaseType": "",
            "chaseVal": "",
            "clOrdId": "",
            "closeFraction": "1",
            "failCode": "1",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "isTradeBorrowMode": "",
            "last": "60777.5",
            "lever": "10",
            "linkedOrd": {
                "ordId": ""
            },
            "maxChaseType": "",
            "maxChaseVal": "",
            "moveTriggerPx": "",
            "ordId": "1884789786215137280",
            "ordIdList": [
                "1884789786215137280"
            ],
            "ordPx": "",
            "ordType": "oco",
            "posSide": "long",
            "pxLimit": "",
            "pxSpread": "",
            "pxVar": "",
            "quickMgnType": "",
            "reduceOnly": "true",
            "side": "sell",
            "slOrdPx": "-1",
            "slTriggerPx": "57000",
            "slTriggerPxType": "mark",
            "state": "effective",
            "sz": "100",
            "szLimit": "",
            "tag": "",
            "tdMode": "isolated",
            "tgtCcy": "",
            "timeInterval": "",
            "tpOrdPx": "-1",
            "tpTriggerPx": "63000",
            "tpTriggerPxType": "last",
            "triggerPx": "",
            "triggerPxType": "",
            "triggerTime": "1728673513447",
            "tradeQuoteCcy": "",
            "uTime": "1728673513447"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| ordId | String | 最新一笔订单ID,即将废弃。 | 
| ordIdList | Array of strings | 订单ID列表,当止盈止损存在市价拆单时,会有多个。 | 
| algoId | String | 策略委托单ID | 
| clOrdId | String | 客户自定义订单ID | 
| sz | String | 委托数量 | 
| closeFraction | String | 策略委托触发时,平仓的百分比。1 代表100% | 
| ordType | String | 订单类型 | 
| side | String | 订单方向 | 
| posSide | 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:最新价格index:指数价格mark:标记价格 | 
| tpOrdPx | String | 止盈委托价 | 
| slTriggerPx | String | 止损触发价 | 
| slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| 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 objects | 附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 | 
| > tpTriggerPx | String | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
| linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 | 
| > ordId | String | 订单 ID | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| isTradeBorrowMode | String | 是否自动借币 true:自动借币 false:不自动借币 仅适用于计划委托、移动止盈止损和 时间加权策略 | 
| chaseType | String | 追逐类型。仅适用于 追逐限价委托。 | 
| chaseVal | String | 追逐值。仅适用于 追逐限价委托。 | 
| maxChaseType | String | 最大追逐值的类型。仅适用于 追逐限价委托。 | 
| maxChaseVal | String | 最大追逐值。仅适用于 追逐限价委托。 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
WS / 策略委托订单频道
获取策略委托订单,首次订阅不推送,只有当下单、撤单等事件触发时,推送数据
服务地址
/ws/v5/business (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD",
        "instId": "BTC-USD-200329"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD",
        "instId": "BTC-USD-200329"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 orders-algo | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
成功返回示例:单个
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD",
        "instId": "BTC-USD-200329"
    },
    "connId": "a4d3ae55"
}
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "orders-algo",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders-algo\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约ANY:全部 | 
| > instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg": {
        "channel": "orders-algo",
        "uid": "77982378738415879",
        "instType": "FUTURES",
        "instId": "BTC-USD-200329"
    },
    "data": [{
        "actualPx": "0",
        "actualSide": "",
        "actualSz": "0",
        "algoClOrdId": "",
        "algoId": "581878926302093312",
        "attachAlgoOrds": [],
        "amendResult": "",
        "cTime": "1685002746818",
        "uTime": "1708679675245",
        "ccy": "",
        "clOrdId": "",
        "closeFraction": "",
        "failCode": "",
        "instId": "BTC-USDC",
        "instType": "SPOT",
        "last": "26174.8",
        "lever": "0",
        "notionalUsd": "11.0",
        "ordId": "",
        "ordIdList": [],
        "ordPx": "",
        "ordType": "conditional",
        "posSide": "",
        "quickMgnType": "",
        "reduceOnly": "false",
        "reqId": "",
        "side": "buy",
        "slOrdPx": "",
        "slTriggerPx": "",
        "slTriggerPxType": "",
        "state": "live",
        "sz": "11",
        "tag": "",
        "tdMode": "cross",
        "tgtCcy": "quote_ccy",
        "tpOrdPx": "-1",
        "tpTriggerPx": "1",
        "tpTriggerPxType": "last",
        "triggerPx": "",
        "triggerTime": "",
        "tradeQuoteCcy": "USDC",
        "amendPxOnTriggerType": "0",
        "linkedOrd":{
            "ordId":"98192973880283"
        },
        "isTradeBorrowMode": ""
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 适用于 交割/永续/期权 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单以及交割、永续和期权合约订单。 | 
| > ordId | String | 最新一笔订单ID,与策略委托订单关联的订单ID,即将废弃。 | 
| > ordIdList | Array of strings | 订单ID列表,当止盈止损存在市价拆单时,会有多个。 | 
| > algoId | String | 策略委托单ID | 
| > clOrdId | String | 客户自定义订单ID | 
| > sz | String | 委托数量, 币币/币币杠杆以币为单位;交割/永续/期权以张为单位 | 
| > ordType | String | 订单类型 conditional:单向止盈止损oco:双向止盈止损trigger:计划委托chase:追逐限价委托 | 
| > side | String | 订单方向, buysell | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| > tdMode | String | 交易模式 保证金模式 cross:全仓isolated:逐仓非保证金模式 cash:现金 | 
| > tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy:交易货币quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| > lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| > state | String | 订单状态 live:待生效effective:已生效canceled:已撤销order_failed:委托失败partially_failed:部分委托失败partially_effective: 部分生效 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > tpOrdPx | String | 止盈委托价,委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价 | 
| > slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > slOrdPx | String | 止损委托价委托价格为 -1时,执行市价止损 | 
| > triggerPx | String | 计划委托单的触发价格 | 
| > triggerPxType | String | 计划委托单的触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| > ordPx | String | 计划委托单的委托价格 | 
| > last | String | 下单时的最新成交价 | 
| > actualSz | String | 实际委托量 | 
| > actualPx | String | 实际委价 | 
| > tag | String | 订单标签 | 
| > notionalUsd | String | 委托单预估美元价值 | 
| > actualSide | String | 实际触发方向 sl:止损tp:止盈仅适用于 单向止盈止损委托和双向止盈止损委托 | 
| > triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > reduceOnly | String | 是否只减仓, true或false | 
| > failCode | String | 代表策略触发失败的原因,已撤销和已生效时为"",委托失败时有值,如 51008; 仅适用于单向止盈止损委托、双向止盈止损委托、移动止盈止损委托、计划委托。 | 
| > algoClOrdId | String | 客户自定义策略订单ID | 
| > reqId | String | 修改订单时使用的request ID,如果没有修改,该字段为"" | 
| > amendResult | String | 修改订单的结果 -1:失败0:成功 | 
| > amendPxOnTriggerType | String | 是否启用开仓价止损,仅适用于分批止盈的止损订单 0:不开启,默认值1:开启 | 
| > attachAlgoOrds | Array of objects | 附带止盈止损信息 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| >> attachAlgoClOrdId | String | 下单附带止盈止损时,客户自定义的策略订单ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 订单完全成交,下止盈止损委托单时,该值会传给algoClOrdId。 | 
| >> tpTriggerPx | String | 止盈触发价,如果填写此参数,必须填写 止盈委托价 | 
| >> tpTriggerPxType | String | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> tpOrdPx | String | 止盈委托价,如果填写此参数,必须填写 止盈触发价委托价格为 -1时,执行市价止盈 | 
| >> slTriggerPx | String | 止损触发价,如果填写此参数,必须填写 止损委托价 | 
| >> slTriggerPxType | String | 止损触发价类型 last:最新价格index:指数价格mark:标记价格 | 
| >> slOrdPx | String | 止损委托价,如果填写此参数,必须填写 止损触发价委托价格为 -1时,执行市价止损 | 
| > linkedOrd | Object | 止盈订单信息,仅适用于止损单,且该止损订单来自包含限价止盈单的双向止盈止损订单 | 
| >> ordId | String | 订单 ID | 
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > isTradeBorrowMode | String | 是否自动借币 true:自动借币 false:不自动借币 仅适用于计划委托、移动止盈止损和 时间加权策略 | 
| > chaseType | String | 追逐类型。仅适用于 追逐限价委托。 | 
| > chaseVal | String | 追逐值。仅适用于 追逐限价委托。 | 
| > maxChaseType | String | 最大追逐值的类型。仅适用于 追逐限价委托。 | 
| > maxChaseVal | String | 最大追逐值。仅适用于 追逐限价委托。 | 
| > tradeQuoteCcy | String | 用于交易的计价币种。 | 
WS / 高级策略委托订单频道
获取高级策略委托订单(冰山、时间加权、移动止盈止损),首次订阅推送,当下单、撤单等事件触发时,推送数据
服务地址
/ws/v5/business (需要登录)
请求示例:单个
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "algo-advance",
        "instType": "SPOT",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "algo-advance",
          "instType": "SPOT",
          "instId": "BTC-USDT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "algo-advance",
        "instType": "SPOT",
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "algo-advance",
        "instType": "SPOT",
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 algo-advance | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约ANY:全部 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
成功返回示例:单个
{
    "event": "subscribe",
    "arg": {
        "channel": "algo-advance",
        "instType": "SPOT",
        "instId": "BTC-USDT"
    },
    "connId": "a4d3ae55"
}
成功返回示例
{
    "event": "subscribe",
    "arg": {
        "channel": "algo-advance",
        "instType": "SPOT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"algo-advance\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约ANY:全部 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
    "arg":{
        "channel":"algo-advance",
        "uid": "77982378738415879",
        "instType":"SPOT",
        "instId":"BTC-USDT"
    },
    "data":[
        {
            "actualPx":"",
            "actualSide":"",
            "actualSz":"0",
            "algoId":"355056228680335360",
            "cTime":"1630924001545",
            "ccy":"",
            "clOrdId": "",
            "count":"1",
            "instId":"BTC-USDT",
            "instType":"SPOT",
            "lever":"0",
            "notionalUsd":"",
            "ordPx":"",
            "ordType":"iceberg",
            "pTime":"1630924295204",
            "posSide":"net",
            "pxLimit":"10",
            "pxSpread":"1",
            "pxVar":"",
            "side":"buy",
            "slOrdPx":"",
            "slTriggerPx":"",
            "state":"pause",
            "sz":"0.1",
            "szLimit":"0.1",
            "tag": "adadadadad",
            "tdMode":"cash",
            "timeInterval":"",
            "tpOrdPx":"",
            "tpTriggerPx":"",
            "triggerPx":"",
            "triggerTime":"",
            "tradeQuoteCcy": "USDT",
            "callbackRatio":"",
            "callbackSpread":"",
            "activePx":"",
            "moveTriggerPx":"",
            "failCode": "",
            "algoClOrdId": "",
            "reduceOnly": "",
            "isTradeBorrowMode": true
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > algoId | String | 策略ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > ccy | String | 保证金币种,适用于 逐仓杠杆及合约模式下的全仓杠杆订单 | 
| > ordId | String | 订单ID,与策略委托订单关联的订单ID | 
| > algoId | String | 策略委托单ID | 
| > clOrdId | String | 客户自定义订单ID | 
| > sz | String | 委托数量, 币币/币币杠杆以币为单位;交割/永续/期权以张为单位 | 
| > ordType | String | 订单类型 iceberg:冰山委托twap:时间加权委托move_order_stop:移动止盈止损 | 
| > side | String | 订单方向, buysell | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| > tdMode | String | 交易模式 保证金模式 cross:全仓isolated:逐仓非保证金模式 cash:现金 | 
| > tgtCcy | String | 币币市价单委托数量 sz的单位base_ccy: 交易货币 ;quote_ccy:计价货币仅适用于 币币市价订单默认买单为 quote_ccy,卖单为base_ccy | 
| > lever | String | 杠杆倍数,0.01到125之间的数值,仅适用于 币币杠杆/交割/永续 | 
| > state | String | 订单状态 live:待生效effective:已生效partially_effective:部分生效canceled:已撤销order_failed:委托失败pause: 暂停生效 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > tpOrdPx | String | 止盈委托价,委托价格为 -1时,执行市价止盈 | 
| > slTriggerPx | String | 止损触发价 | 
| > slOrdPx | String | 止损委托价委托价格为 -1时,执行市价止损 | 
| > triggerPx | String | 计划委托单的触发价格 | 
| > ordPx | String | 计划委托单的委托价格 | 
| > actualSz | String | 实际委托量 | 
| > actualPx | String | 实际委价 | 
| > tag | String | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| > notionalUsd | String | 委托单预估美元价值 | 
| > actualSide | String | 实际触发方向, sl:止损tp:止盈 | 
| > triggerTime | String | 策略委托触发时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > pxVar | String | 价格比例 仅适用于 冰山委托和时间加权委托 | 
| > pxSpread | String | 价距 仅适用于 冰山委托和时间加权委托 | 
| > szLimit | String | 单笔数量 仅适用于 冰山委托和时间加权委托 | 
| > pxLimit | String | 挂单限制价 仅适用于 冰山委托和时间加权委托 | 
| > timeInterval | String | 下单间隔 仅适用于 时间加权委托 | 
| > count | String | 策略订单计数 仅适用于 冰山委托和时间加权委托 | 
| > callbackRatio | String | 回调幅度的比例 仅适用于 移动止盈止损 | 
| > callbackSpread | String | 回调幅度的价距 仅适用于 移动止盈止损 | 
| > activePx | String | 移动止盈止损激活价格 仅适用于 移动止盈止损 | 
| > failCode | String | 代表策略触发失败的原因,已撤销和已生效时为"",委托失败时有值,如 51008; 仅适用于单向止盈止损委托、双向止盈止损委托、移动止盈止损委托、计划委托。 | 
| > algoClOrdId | String | 客户自定义策略订单ID | 
| > moveTriggerPx | String | 移动止盈止损触发价格 仅适用于 移动止盈止损 | 
| > reduceOnly | String | 是否只减仓, true或false | 
| > pTime | String | 订单信息的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > isTradeBorrowMode | Boolean | 是否自动借币 true:自动借币 false:不自动借币 仅适用于计划委托、移动止盈止损和 时间加权策略 | 
| > tradeQuoteCcy | String | 用于交易的计价币种。 | 
网格交易
网格是一种在指定价格区间自动进行低买高卖的交易策略。用户设定参数后,系统分割小网格自动挂单,随着市场波动,策略低买高卖赚取波段收益。
网格交易功能模块下的API接口需要身份验证。
POST / 网格策略委托下单
限速:20次/2s
限速规则:User ID + Instrument ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/order-algo
请求示例
# 现货网格下单
POST /api/v5/tradingBot/grid/order-algo
body
{
    "instId": "BTC-USDT",
    "algoOrdType": "grid",
    "maxPx": "5000",
    "minPx": "400",
    "gridNum": "10",
    "runType": "1",
    "quoteSz": "25",
    "triggerParams":[
      {
         "triggerAction":"stop",
         "triggerStrategy":"price",  
         "triggerPx":"1000"
      }
    ]
}
# 合约网格下单
POST /api/v5/tradingBot/grid/order-algo
body
{
    "instId": "BTC-USDT-SWAP",
    "algoOrdType": "contract_grid",
    "maxPx": "5000",
    "minPx": "400",
    "gridNum": "10",
    "runType": "1",
    "sz": "200", 
    "direction": "long",
    "lever": "2",
    "triggerParams":[
      {
         "triggerAction":"start", 
         "triggerStrategy":"rsi", 
         "timeframe":"30m",
         "thold":"10",
         "triggerCond":"cross",
         "timePeriod":"14"
      },
      {
         "triggerAction":"stop",
         "triggerStrategy":"price",
         "triggerPx":"1000",
         "stopType":"2"
      }
   ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| maxPx | String | 是 | 区间最高价格 | 
| minPx | String | 是 | 区间最低价格 | 
| gridNum | String | 是 | 网格数量 | 
| runType | String | 否 | 网格类型 1:等差,2:等比默认为等差 | 
| tpTriggerPx | String | 否 | 止盈触发价 适用于 现货网格/合约网格 | 
| slTriggerPx | String | 否 | 止损触发价 适用于 现货网格/合约网格 | 
| algoClOrdId | String | 否 | 用户自定义策略ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 | 
| profitSharingRatio | String | 否 | 带单员分润比例,仅支持固定比例分润 0,0.1,0.2,0.3 | 
| triggerParams | Array of objects | 否 | 信号触发参数 适用于 现货网格/合约网格 | 
| > triggerAction | String | 是 | 触发行为 start:网格启动stop:网格停止 | 
| > triggerStrategy | String | 是 | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发默认为 instant | 
| > delaySeconds | String | 否 | 延迟触发时间,单位为秒,默认为 0 | 
| > timeframe | String | 否 | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| > thold | String | 否 | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| > triggerCond | String | 否 | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| > timePeriod | String | 否 | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| > triggerPx | String | 否 | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| > stopType | String | 否 | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
现货网格
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteSz | String | 可选 | 计价币投入数量 quoteSz和baseSz至少指定一个 | 
| baseSz | String | 可选 | 交易币投入数量 quoteSz和baseSz至少指定一个 | 
| tradeQuoteCcy | String | No | 用于交易的计价币种。仅适用于现货网格。 默认值为 instId 的计价币种,例如 BTC-USD 的计价币种为 USD。 | 
合约网格
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sz | String | 是 | 投入保证金,单位为 USDT | 
| direction | String | 是 | 合约网格类型 long:做多,short:做空,neutral:中性 | 
| lever | String | 是 | 杠杆倍数 | 
| basePos | Boolean | 否 | 是否开底仓 默认为 false中性合约网格忽略该参数 | 
| tpRatio | String | 否 | 止盈比率,0.1 代表 10% | 
| slRatio | String | 否 | 止损比率,0.1 代表 10% | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "447053782921515008",
            "sCode": "0",
            "sMsg": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 订单标签 | 
POST / 修改网格策略基本参数
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/amend-algo-basic-param
请求示例
POST /api/v5/tradingBot/grid/amend-algo-basic-param
body
    {
        "algoId":"448965992920907776",
        "maxPx": "100",
        "minPx": "10",
        "gridNum": "5"
    }
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| minPx | String | 是 | 最小价格 | 
| maxPx | String | 是 | 最大价格 | 
| gridNum | Int | 是 | 网格数 | 
返回结果
{
  "code": 55123,
  "msg": "100",
  "data": {
    "algoId": "448965992920907776",
    "requiredTopupAmount": "1.235"
  }
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| requiredTopupAmount | String | 修改网格参数所需补充金额 | 
POST / 修改网格策略订单
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/amend-order-algo
请求示例
POST /api/v5/tradingBot/grid/amend-order-algo
body
{
    "algoId":"448965992920907776",
    "instId":"BTC-USDT-SWAP",
    "slTriggerPx":"1200",
    "tpTriggerPx":""
}
POST /api/v5/tradingBot/grid/amend-order-algo
body 
{
   "algoId":"578963447615062016",
   "instId":"BTC-USDT",
   "triggerParams":[
       {
           "triggerAction":"stop",  
           "triggerStrategy":"price",   
           "triggerPx":"1000"
       }
   ]
}
POST /api/v5/tradingBot/grid/amend-order-algo
body 
{
   "algoId":"578963447615062016",
   "instId":"BTC-USDT-SWAP",
   "triggerParams":[
       {
           "triggerAction":"stop",  
           "triggerStrategy":"instant",   
           "stopType":"1"
       }
   ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP | 
| slTriggerPx | String | 可选 | 新的止损触发价 当值为""则代表取消止损触发价 slTriggerPx、tpTriggerPx至少要传一个值 | 
| tpTriggerPx | String | 可选 | 新的止盈触发价 当值为""则代表取消止盈触发价 | 
| tpRatio | String | 否 | 止盈比率,0.1 代表 10%,仅适用于合约网格 当值为""则代表取消止盈比率 | 
| slRatio | String | 否 | 止损比率,0.1 代表 10%,仅适用于合约网格 当值为""则代表取消止损比率 | 
| topUpAmt | String | 否 | 增加的投资额,仅适用于现货网格 | 
| triggerParams | Array of objects | 否 | 信号触发参数 | 
| > triggerAction | String | 是 | 触发行为 start:网格启动stop:网格停止 | 
| > triggerStrategy | String | 是 | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| > triggerPx | String | 否 | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| > stopType | String | 否 | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "448965992920907776",
            "sCode": "0",
            "sMsg": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 订单标签 | 
POST / 网格策略停止
每次最多可以撤销10个网格策略。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/stop-order-algo
请求示例
POST /api/v5/tradingBot/grid/stop-order-algo
body
[
    {
        "algoId":"448965992920907776",
        "instId":"BTC-USDT",
        "stopType":"1",
        "algoOrdType":"grid"
    }
]
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| stopType | String | 是 | 网格策略停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:市价全平2:停止不平仓 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "448965992920907776",
            "sCode": "0",
            "sMsg": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 订单标签 | 
POST / 合约网格平仓
只有处于已停止未平仓状态合约网格可使用该接口
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/close-position
请求示例
POST /api/v5/tradingBot/grid/close-position
body
{
    "algoId":"448965992920907776",
    "mktClose":true
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| mktClose | Boolean | 是 | 是否市价全平 true:市价全平,false:部分平仓 | 
| sz | String | 可选 | 平仓数量,单位为张 部分平仓时必传 | 
| px | String | 可选 | 平仓价格 部分平仓时必传 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoClOrdId": "",
            "algoId":"448965992920907776",
            "ordId":"",
            "tag": ""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| ordId | String | 平仓单ID 市价全平时,该字段为"" | 
| algoClOrdId | String | 用户自定义策略ID | 
| tag | String | 订单标签 | 
POST / 撤销合约网格平仓单
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/cancel-close-order
请求示例
POST /api/v5/tradingBot/grid/cancel-close-order
body
{
    "algoId":"448965992920907776",
    "ordId":"570627699870375936"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| ordId | String | 是 | 平仓单ID | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoClOrdId": "",
            "algoId": "448965992920907776",
            "ordId": "570627699870375936",
            "tag": ""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| ordId | String | 平仓单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| tag | String | 订单标签 | 
POST / 网格策略立即触发
限速:20次/2s
限速规则:User ID + Instrument ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/order-instant-trigger
请求示例
POST /api/v5/tradingBot/grid/order-instant-trigger
body
{
    "algoId":"561564133246894080"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| topUpAmt | String | 否 | 增加的投资额,仅适用于现货网格 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "561564133246894080"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
GET / 获取未完成网格策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/orders-algo-pending
请求示例
GET /api/v5/tradingBot/grid/orders-algo-pending?algoOrdType=grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| algoId | String | 否 | 策略订单ID | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:杠杆FUTURES:交割合约SWAP:永续合约 | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "actualLever": "",
            "algoClOrdId": "",
            "algoId": "56802********64032",
            "algoOrdType": "grid",
            "arbitrageNum": "0",
            "availEq": "",
            "basePos": false,
            "baseSz": "0",
            "cTime": "1681700496249",
            "cancelType": "0",
            "direction": "",
            "floatProfit": "0",
            "gridNum": "10",
            "gridProfit": "0",
            "instFamily": "",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "investment": "25",
            "lever": "",
            "liqPx": "",
            "maxPx": "5000",
            "minPx": "400",
            "ordFrozen": "",
            "pnlRatio": "0",
            "quoteSz": "25",
            "rebateTrans": [
                {
                    "rebate": "0",
                    "rebateCcy": "BTC"
                },
                {
                    "rebate": "0",
                    "rebateCcy": "USDT"
                }
            ],
            "runType": "1",
            "slTriggerPx": "",
            "state": "running",
            "stopType": "",
            "sz": "",
            "tag": "",
            "totalPnl": "0",
            "tpTriggerPx": "",
            "triggerParams": [
                {
                    "triggerAction": "start",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "triggerType": "auto",
                    "triggerTime": ""
                },
                {
                    "triggerAction": "stop",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "stopType": "1",
                    "triggerPx": "1000",
                    "triggerType": "manual",
                    "triggerTime": ""
                }
            ],
            "uTime": "1682062564350",
            "uly": "BTC-USDT",
            "profitSharingRatio": "",
            "copyType": "0",
            "fee": "",
            "fundingFee": "",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| state | String | 订单状态 starting:启动中running:运行中stopping:终止中pending_signal:等待触发no_close_position:已停止未平仓(仅适用于合约网格) | 
| rebateTrans | Array of objects | 返佣划转信息 | 
| > rebate | String | 返佣数量 | 
| > rebateCcy | String | 返佣币种 | 
| triggerParams | Array of objects | 信号触发参数 | 
| > triggerAction | String | 触发行为 start:网格启动stop:网格停止 | 
| > triggerStrategy | String | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| > delaySeconds | String | 延迟触发时间,单位为秒 | 
| > triggerTime | String | triggerAction实际触发时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| > triggerType | String | triggerAction的实际触发类型 manual:手动触发auto: 自动触发 | 
| > timeframe | String | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| > thold | String | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| > triggerCond | String | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| > timePeriod | String | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| > triggerPx | String | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| > stopType | String | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
| maxPx | String | 区间最高价格 | 
| minPx | String | 区间最低价格 | 
| gridNum | String | 网格数量 | 
| runType | String | 网格类型 1:等差,2:等比 | 
| tpTriggerPx | String | 止盈触发价 | 
| slTriggerPx | String | 止损触发价 | 
| arbitrageNum | String | 网格套利次数 | 
| totalPnl | String | 总收益 | 
| pnlRatio | String | 收益率 | 
| investment | String | 累计投入金额 现货网格如果投入了交易币则折算为计价币 | 
| gridProfit | String | 网格利润 | 
| floatProfit | String | 浮动盈亏 | 
| cancelType | String | 网格策略停止原因 0:无1:手动停止2:止盈停止3:止损停止4:风控停止5:交割停止6: 信号停止 | 
| stopType | String | 网格策略实际停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓 | 
| quoteSz | String | 计价币投入数量 适用于`现货网格 | 
| baseSz | String | 交易币投入数量 适用于 现货网格 | 
| direction | String | 合约网格类型 long:做多,short:做空,neutral:中性仅适用于 合约网格 | 
| basePos | Boolean | 是否开底仓 适用于 合约网格 | 
| sz | String | 投入保证金,单位为 USDT适用于 合约网格 | 
| lever | String | 杠杆倍数 适用于 合约网格 | 
| actualLever | String | 实际杠杆倍数 适用于 合约网格 | 
| liqPx | String | 预估强平价格 适用于 合约网格 | 
| uly | String | 标的指数 适用于 合约网格 | 
| instFamily | String | 交易品种 适用于 交割/永续/期权,如BTC-USD适用于 合约网格 | 
| ordFrozen | String | 挂单占用 适用于 合约网格 | 
| availEq | String | 可用保证金 适用于 合约网格 | 
| tag | String | 订单标签 | 
| profitSharingRatio | String | 分润比例 取值范围[0,0.3] 如果是普通订单(既不是带单也不是跟单),该字段返回"" | 
| copyType | String | 分润订单类型 0:普通订单1:普通跟单2:分润跟单3:带单 | 
| fee | String | 累计手续费金额,仅适用于合约网格,其他网格策略为"" | 
| fundingFee | String | 累计资金费用,仅适用于合约网格,其他网格策略为"" | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取历史网格策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/orders-algo-history
请求示例
GET /api/v5/tradingBot/grid/orders-algo-history?algoOrdType=grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| algoId | String | 否 | 策略订单ID | 
| instId | String | 否 | 产品ID,如 BTC-USDT | 
| instType | String | 否 | 产品类型 SPOT:币币MARGIN:杠杆FUTURES:交割合约SWAP:永续合约 | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "actualLever": "",
            "algoClOrdId": "",
            "algoId": "565849588675117056",
            "algoOrdType": "grid",
            "arbitrageNum": "0",
            "availEq": "",
            "basePos": false,
            "baseSz": "0",
            "cTime": "1681181054927",
            "cancelType": "1",
            "direction": "",
            "floatProfit": "0",
            "gridNum": "10",
            "gridProfit": "0",
            "instFamily": "",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "investment": "25",
            "lever": "0",
            "liqPx": "",
            "maxPx": "5000",
            "minPx": "400",
            "ordFrozen": "",
            "pnlRatio": "0",
            "quoteSz": "25",
            "rebateTrans": [
                {
                    "rebate": "0",
                    "rebateCcy": "BTC"
                },
                {
                    "rebate": "0",
                    "rebateCcy": "USDT"
                }
            ],
            "runType": "1",
            "slTriggerPx": "0",
            "state": "stopped",
            "stopResult": "0",
            "stopType": "1",
            "sz": "",
            "tag": "",
            "totalPnl": "0",
            "tpTriggerPx": "0",
            "triggerParams": [
                {
                    "triggerAction": "start",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "triggerType": "auto",
                    "triggerTime": ""
                },
                {
                    "triggerAction": "stop",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "stopType": "1",
                    "triggerPx": "1000",
                    "triggerType": "manual",
                    "triggerTime": "1681181186484"
                }
            ],
            "uTime": "1681181186496",
            "uly": "BTC-USDT",
            "profitSharingRatio": "",
            "copyType": "0",
            "fee": "",
            "fundingFee": "",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| state | String | 订单状态 stopped:已停止 | 
| rebateTrans | Array of objects | 返佣划转信息 | 
| > rebate | String | 返佣数量 | 
| > rebateCcy | String | 返佣币种 | 
| triggerParams | Array of objects | 信号触发参数 | 
| > triggerAction | String | 触发行为 start:网格启动stop:网格停止 | 
| > triggerStrategy | String | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| > delaySeconds | String | 延迟触发时间,单位为秒 | 
| > triggerTime | String | triggerAction实际触发时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| > triggerType | String | triggerAction的实际触发类型 manual:手动触发auto: 自动触发 | 
| > timeframe | String | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| > thold | String | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| > triggerCond | String | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| > timePeriod | String | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| > triggerPx | String | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| > stopType | String | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
| maxPx | String | 区间最高价格 | 
| minPx | String | 区间最低价格 | 
| gridNum | String | 网格数量 | 
| runType | String | 网格类型 1:等差,2:等比 | 
| tpTriggerPx | String | 止盈触发价 | 
| slTriggerPx | String | 止损触发价 | 
| arbitrageNum | String | 网格套利次数 | 
| totalPnl | String | 总收益 | 
| pnlRatio | String | 收益率 | 
| investment | String | 累计投入金额 现货网格如果投入了交易币则折算为计价币 | 
| gridProfit | String | 网格利润 | 
| floatProfit | String | 浮动盈亏 | 
| cancelType | String | 网格策略停止原因 0:无1:手动停止2:止盈停止3:止损停止4:风控停止5:交割停止6: 信号停止 | 
| stopType | String | 网格策略实际停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓 | 
| quoteSz | String | 计价币投入数量 适用于 现货网格 | 
| baseSz | String | 交易币投入数量 适用于 现货网格 | 
| direction | String | 合约网格类型 long:做多,short:做空,neutral:中性仅适用于 合约网格 | 
| basePos | Boolean | 是否开底仓 适用于 合约网格 | 
| sz | String | 投入保证金,单位为 USDT适用于 合约网格 | 
| lever | String | 杠杆倍数 适用于 合约网格 | 
| actualLever | String | 实际杠杆倍数 适用于 合约网格 | 
| liqPx | String | 预估强平价格 适用于 合约网格 | 
| uly | String | 标的指数 适用于 合约网格 | 
| instFamily | String | 交易品种 适用于 交割/永续/期权,如BTC-USD适用于 合约网格 | 
| ordFrozen | String | 挂单占用 适用于 合约网格 | 
| availEq | String | 可用保证金 适用于 合约网格 | 
| tag | String | 订单标签 | 
| profitSharingRatio | String | 分润比例 取值范围[0,0.3] 如果是普通订单(既不是带单也不是跟单),该字段返回"" | 
| copyType | String | 分润订单类型 0:普通订单1:普通跟单2:分润跟单3:带单 | 
| fee | String | 累计手续费金额,仅适用于合约网格,其他网格策略为"" | 
| fundingFee | String | 累计资金费用,仅适用于合约网格,其他网格策略为"" | 
| stopResult | String | 策略停止结果 0:默认,1:市价卖币成功-1:市价卖币失败仅适用于 现货网格 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取网格策略委托订单详情
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/orders-algo-details
请求示例
GET /api/v5/tradingBot/grid/orders-algo-details?algoId=448965992920907776&algoOrdType=grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| algoId | String | 是 | 策略订单ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "actualLever": "",
            "activeOrdNum": "0",
            "algoClOrdId": "",
            "algoId": "448965992920907776",
            "algoOrdType": "grid",
            "annualizedRate": "0",
            "arbitrageNum": "0",
            "availEq": "",
            "basePos": false,
            "baseSz": "0",
            "cTime": "1681181054927",
            "cancelType": "1",
            "curBaseSz": "0",
            "curQuoteSz": "0",
            "direction": "",
            "eq": "",
            "floatProfit": "0",
            "gridNum": "10",
            "gridProfit": "0",
            "instFamily": "",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "investment": "25",
            "lever": "0",
            "liqPx": "",
            "maxPx": "5000",
            "minPx": "400",
            "ordFrozen": "",
            "perMaxProfitRate": "1.14570215",
            "perMinProfitRate": "0.0991200440528634356837",
            "pnlRatio": "0",
            "profit": "0.00000000",
            "quoteSz": "25",
            "rebateTrans": [
                {
                    "rebate": "0",
                    "rebateCcy": "BTC"
                },
                {
                    "rebate": "0",
                    "rebateCcy": "USDT"
                }
            ],
            "runType": "1",
            "runPx": "30089.7",
            "singleAmt": "0.00101214",
            "slTriggerPx": "0",
            "state": "stopped",
            "stopResult": "0",
            "stopType": "1",
            "sz": "",
            "tag": "",
            "totalAnnualizedRate": "0",
            "totalPnl": "0",
            "tpTriggerPx": "0",
            "tradeNum": "0",
            "triggerParams": [
                {
                    "triggerAction": "start",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "triggerType": "auto",
                    "triggerTime": ""
                },
                {
                    "triggerAction": "stop",
                    "delaySeconds": "0",
                    "triggerStrategy": "instant",
                    "stopType": "1",
                    "triggerType": "manual",
                    "triggerTime": "1681181186484"
                }
            ],
            "uTime": "1681181186496",
            "uly": "",
            "profitSharingRatio": "",
            "copyType": "0",
            "tpRatio": "",
            "slRatio": "",
            "fee": "",
            "fundingFee": "",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| state | String | 订单状态 starting:启动中running:运行中stopping:终止中no_close_position:已停止未平仓(仅适用于合约网格)stopped:已停止 | 
| rebateTrans | Array of objects | 返佣划转信息 | 
| > rebate | String | 返佣数量 | 
| > rebateCcy | String | 返佣币种 | 
| triggerParams | Array of objects | 信号触发参数 | 
| > triggerAction | String | 触发行为 start:网格启动stop:网格停止 | 
| > triggerStrategy | String | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| > delaySeconds | String | 延迟触发时间,单位为秒 | 
| > triggerTime | String | triggerAction实际触发时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| > triggerType | String | triggerAction的实际触发类型 manual:手动触发auto: 自动触发 | 
| > timeframe | String | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| > thold | String | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| > triggerCond | String | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| > timePeriod | String | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| > triggerPx | String | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| > stopType | String | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
| maxPx | String | 区间最高价格 | 
| minPx | String | 区间最低价格 | 
| gridNum | String | 网格数量 | 
| runType | String | 网格类型 1:等差,2:等比 | 
| tpTriggerPx | String | 止盈触发价 | 
| slTriggerPx | String | 止损触发价 | 
| tradeNum | String | 挂单成交次数 | 
| arbitrageNum | String | 网格套利次数 | 
| singleAmt | String | 单网格买卖量 | 
| perMinProfitRate | String | 预期单网格最低利润率 | 
| perMaxProfitRate | String | 预期单网格最高利润率 | 
| runPx | String | 启动时价格 | 
| totalPnl | String | 总收益 | 
| pnlRatio | String | 收益率 | 
| investment | String | 累计投入金额 现货网格如果投入了交易币则折算为计价币 | 
| gridProfit | String | 网格利润 | 
| floatProfit | String | 浮动盈亏 | 
| totalAnnualizedRate | String | 总年化 | 
| annualizedRate | String | 网格年化 | 
| cancelType | String | 网格策略停止原因 0:无1:手动停止2:止盈停止3:止损停止4:风控停止5:交割停止6: 信号停止 | 
| stopType | String | 网格策略停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:市价全平,2:停止不平仓 | 
| activeOrdNum | String | 子订单挂单数量 | 
| quoteSz | String | 计价币投入数量 仅适用于 现货网格 | 
| baseSz | String | 交易币投入数量 仅适用于 现货网格 | 
| curQuoteSz | String | 当前持有的计价币资产 仅适用于 现货网格 | 
| curBaseSz | String | 当前持有的交易币资产 仅适用于 现货网格 | 
| profit | String | 当前可提取利润,单位是计价币 仅适用于 现货网格 | 
| stopResult | String | 策略停止结果 0:默认,1:市价卖币成功-1:市价卖币失败仅适用于 现货网格 | 
| direction | String | 合约网格类型 long:做多,short:做空,neutral:中性仅适用于 合约网格 | 
| basePos | Boolean | 是否开底仓 仅适用于 合约网格 | 
| sz | String | 投入保证金,单位为 USDT仅适用于 合约网格 | 
| lever | String | 杠杆倍数 仅适用于 合约网格 | 
| actualLever | String | 实际杠杆倍数 仅适用于 合约网格 | 
| liqPx | String | 预估强平价格 仅适用于 合约网格 | 
| uly | String | 标的指数 仅适用于 合约网格 | 
| instFamily | String | 交易品种 适用于 交割/永续/期权,如BTC-USD适用于 合约网格 | 
| ordFrozen | String | 挂单占用 适用于 合约网格 | 
| availEq | String | 可用保证金 适用于 合约网格 | 
| eq | String | 策略账户总权益 仅适用于 合约网格 | 
| tag | String | 订单标签 | 
| profitSharingRatio | String | 分润比例 取值范围[0,0.3] 如果是普通订单(既不是带单也不是跟单),该字段返回"" | 
| copyType | String | 分润订单类型 0:普通订单1:普通跟单2:分润跟单3:带单 | 
| tpRatio | String | 止盈比率,0.1 代表 10% | 
| slRatio | String | 止损比率,0.1 代表 10% | 
| fee | String | 累计手续费金额,仅适用于合约网格,其他网格策略为"" | 
| fundingFee | String | 累计资金费用,仅适用于合约网格,其他网格策略为"" | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取网格策略委托子订单信息
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/sub-orders
请求示例
GET /api/v5/tradingBot/grid/sub-orders?algoId=123456&type=live&algoOrdType=grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| type | String | 是 | 子订单状态 live:未成交filled:已成交 | 
| groupId | String | 否 | 组ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 ordId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 ordId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "accFillSz": "0",
            "algoClOrdId": "",
            "algoId": "448965992920907776",
            "algoOrdType": "grid",
            "avgPx": "0",
            "cTime": "1653347949771",
            "ccy": "",
            "ctVal": "",
            "fee": "0",
            "feeCcy": "USDC",
            "groupId": "3",
            "instId": "BTC-USDC",
            "instType": "SPOT",
            "lever": "0",
            "ordId": "449109084439187456",
            "ordType": "limit",
            "pnl": "0",
            "posSide": "net",
            "px": "30404.3",
            "rebate": "0",
            "rebateCcy": "USDT",
            "side": "sell",
            "state": "live",    
            "sz": "0.00059213",
            "tag": "",
            "tdMode": "cash",
            "uTime": "1653347949831"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| groupId | String | 组ID | 
| ordId | String | 子订单ID | 
| cTime | String | 子订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 子订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| tdMode | String | 子订单交易模式 cross:全仓isolated:逐仓cash:非保证金 | 
| ccy | String | 保证金币种 仅适用于 合约模式模式下的全仓杠杆订单 | 
| ordType | String | 子订单类型 market:市价单limit:限价单ioc:立即成交并取消剩余 | 
| sz | String | 子订单委托数量 | 
| state | String | 子订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交cancelling:撤单中 | 
| side | String | 子订单订单方向 buy:买sell:卖 | 
| px | String | 子订单委托价格 | 
| fee | String | 子订单手续费数量 | 
| feeCcy | String | 子订单手续费币种 | 
| rebate | String | 子订单返佣数量 | 
| rebateCcy | String | 子订单返佣币种 | 
| avgPx | String | 子订单平均成交价格 | 
| accFillSz | String | 子订单累计成交数量 | 
| posSide | String | 子订单持仓方向 net:买卖模式 | 
| pnl | String | 子订单收益 | 
| ctVal | String | 合约面值 仅支持 FUTURES/SWAP | 
| lever | String | 杠杆倍数 | 
| tag | String | 订单标签 | 
GET / 获取网格策略委托持仓
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/positions
请求示例
GET /api/v5/tradingBot/grid/positions?algoId=448965992920907776&algoOrdType=contract_grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 订单类型 contract_grid:合约网格委托 | 
| algoId | String | 是 | 策略订单ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adl": "1",
            "algoClOrdId": "",
            "algoId": "449327675342323712",
            "avgPx": "29215.0142857142857149",
            "cTime": "1653400065917",
            "ccy": "USDT",
            "imr": "2045.386",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "last": "29206.7",
            "lever": "5",
            "liqPx": "661.1684795867162",
            "markPx": "29213.9",
            "mgnMode": "cross",
            "mgnRatio": "217.19370606167573",
            "mmr": "40.907720000000005",
            "notionalUsd": "10216.70307",
            "pos": "35",
            "posSide": "net",
            "uTime": "1653400066938",
            "upl": "1.674999999999818",
            "uplRatio": "0.0008190504784478"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID,如 BTC-USDT-SWAP | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| avgPx | String | 开仓均价 | 
| ccy | String | 保证金币种 | 
| lever | String | 杠杆倍数 | 
| liqPx | String | 预估强平价 | 
| posSide | String | 持仓方向 net:买卖模式 | 
| pos | String | 持仓数量 | 
| mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| mgnRatio | String | 维持保证金率 | 
| imr | String | 初始保证金 | 
| mmr | String | 维持保证金 | 
| upl | String | 未实现收益 | 
| uplRatio | String | 未实现收益率 | 
| last | String | 最新成交价 | 
| notionalUsd | String | 仓位美金价值 | 
| adl | String | 自动减仓信号区 分为5档,从1到5,数字越小代表adl强度越弱 | 
| markPx | String | 标记价格 | 
POST / 现货网格提取利润
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/withdraw-income
请求示例
POST /api/v5/tradingBot/grid/withdraw-income
body
{
    "algoId":"448965992920907776"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoClOrdId": "",
            "algoId":"448965992920907776",
            "profit":"100"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| profit | String | 提取的利润 | 
POST / 调整保证金计算
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/compute-margin-balance
请求示例
POST /api/v5/tradingBot/grid/compute-margin-balance
body {
   "algoId":"123456",
   "type":"add",
   "amt":"10"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| type | String | 是 | 调整保证金类型 add:增加,reduce:减少 | 
| amt | String | 否 | 调整保证金数量 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "lever": "0.3877200981166066",
            "maxAmt": "1.8309562403342999"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| maxAmt | String | 最多可调整的保证金数量 | 
| lever | String | 调整保证金后的杠杠倍数 | 
POST / 调整保证金
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/margin-balance
请求示例
POST /api/v5/tradingBot/grid/margin-balance
body {
   "algoId":"123456",
   "type":"add",
   "amt":"10"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| type | String | 是 | 调整保证金类型 add:增加,reduce:减少 | 
| amt | String | 可选 | 调整保证金数量 amt和percent必须传一个 | 
| percent | String | 可选 | 调整保证金百分比 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "123456"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 用户自定义策略ID | 
POST / 加仓
该接口用于加仓,仅适用于合约网格。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/grid/adjust-investment
请求示例
POST /api/v5/tradingBot/grid/adjust-investment
body
{
    "algoId":"448965992920907776",
    "amt":"12"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| amt | String | 是 | 加仓数量 | 
| allowReinvestProfit | String | 否 | 是否复投利润,仅适用于现货网格。 true或者false。默认为 true。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoId":"448965992920907776"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
GET / 网格策略智能回测(公共)
公共接口无须鉴权
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/ai-param
请求示例
GET /api/v5/tradingBot/grid/ai-param?instId=BTC-USDT&algoOrdType=grid
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| direction | String | 可选 | 合约网格类型 long:做多,short:做空,neutral:中性合约网格必填 | 
| duration | String | 否 | 回测周期 7D:7天,30D:30天,180D:180天默认 现货网格为7D合约网格只支持 7D | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoOrdType": "grid",
            "annualizedRate": "1.5849",
            "ccy": "USDT",
            "direction": "",
            "duration": "7D",
            "gridNum": "5",
            "instId": "BTC-USDT",
            "lever": "0",
            "maxPx": "21373.3",
            "minInvestment": "0.89557758",
            "minPx": "15544.2",
            "perGridProfitRatio": "4.566226200302574",
            "perMaxProfitRate": "0.0733865364573281",
            "perMinProfitRate": "0.0561101403446263",
            "runType": "1",
            "sourceCcy": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| duration | String | 回测周期 7D:7天,30D:30天,180D:180天 | 
| gridNum | String | 网格数量 | 
| maxPx | String | 区间最高价格 | 
| minPx | String | 区间最低价格 | 
| perMaxProfitRate | String | 单网格最高利润率 | 
| perMinProfitRate | String | 单网格最低利润率 | 
| perGridProfitRatio | String | 单网格利润率 | 
| annualizedRate | String | 网格年化收益率 | 
| minInvestment | String | 最小投资数量 | 
| ccy | String | 投资币种 | 
| runType | String | 网格类型 1:等差,2:等比 | 
| direction | String | 合约网格类型 仅适用于 合约网格 | 
| lever | String | 杠杆倍数 仅适用于 合约网格 | 
| sourceCcy | String | 来源币种 | 
POST / 计算最小投资数量(公共)
公共接口无须鉴权
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
POST /api/v5/tradingBot/grid/min-investment
请求示例
POST /api/v5/tradingBot/grid/min-investment
body
{
    "instId": "ETH-USDT",
    "algoOrdType":"grid",
    "gridNum": "50",
    "maxPx":"5000",
    "minPx":"3000",
    "runType":"1",
    "investmentData":[
        {
            "amt":"0.01",
            "ccy":"ETH"
        },
        {
            "amt":"100",
            "ccy":"USDT"
        }
    ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| gridNum | String | 是 | 网格数量 | 
| maxPx | String | 是 | 区间最高价格 | 
| minPx | String | 是 | 区间最低价格 | 
| runType | String | 是 | 网格类型 1:等差,2:等比 | 
| direction | String | 可选 | 合约网格类型 long:做多,short:做空,neutral:中性适用于合约网格 | 
| lever | String | 可选 | 杠杆倍数 适用于合约网格 | 
| basePos | Boolean | 否 | 是否开底仓 默认为 false | 
| investmentType | String | 否 | 投资类型, 仅适用于现货网格 quote: 计价货币base: 交易货币dual: 计价货币和交易货币 | 
| triggerStrategy | String | 否 | 触发策略, instant: 立即触发price: 价格触发rsi: rsi 触发 | 
| topUpAmt | String | 否 | 增加的投资额,仅适用于现货网格 | 
| investmentData | Array of objects | 否 | 投资信息 | 
| > amt | String | 是 | 投资数量 | 
| > ccy | String | 是 | 投资币种 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
           "minInvestmentData": [  
               {
                   "amt":"0.1",
                   "ccy":"ETH"
               },
               {
                   "amt":"100",
                   "ccy":"USDT"
               }
           ],
           "singleAmt":"10"
       }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| minInvestmentData | Array of objects | 最小投入信息 | 
| > amt | String | 最小投入数量 | 
| > ccy | String | 最小投入币种 | 
| singleAmt | String | 单网格买卖量 现货网格单位为计价币 合约网格单位为张 | 
GET / RSI回测(公共)
公共接口无须鉴权
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/tradingBot/public/rsi-back-testing
请求示例
GET /api/v5/tradingBot/public/rsi-back-testing?instId=BTC-USDT&thold=30&timeframe=3m&timePeriod=14
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT适用于 币币 | 
| timeframe | String | 是 | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天) | 
| thold | String | 是 | 阈值 取值[1,100]的整数 | 
| timePeriod | String | 是 | 周期 14 | 
| triggerCond | String | 否 | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉默认是 cross_down | 
| duration | String | 否 | 回测周期 1M:1个月默认 1M | 
返回结果
{
    "code": "0",
    "data": [
        {
            "triggerNum": "164"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| triggerNum | String | 触发次数 | 
GET / 最大网格数量(公共)
公共接口无须鉴权
可通过该接口获取最大网格数量,最小网格数量总是 2。
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/tradingBot/grid/grid-quantity
请求示例
GET /api/v5/tradingBot/grid/grid-quantity?instId=BTC-USDT-SWAP&runType=1&algoOrdType=contract_grid&maxPx=70000&minPx=50000&lever=5
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| runType | String | 是 | 网格类型 1: 等差2: 等比 | 
| algoOrdType | String | 是 | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| maxPx | String | 是 | 区间最高价格 | 
| minPx | String | 是 | 区间最低价格 | 
| lever | String | 可选 | 杠杆倍数, 合约网格时必填 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "maxGridQty": "285"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| maxGridQty | String | 最大网格数量 | 
WS / 现货网格策略委托订单频道
支持现货网格策略订单的定时推送和事件推送
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "grid-orders-spot",
        "instType": "SPOT"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "grid-orders-spot",
        "instType": "SPOT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 grid-orders-spot | 
| > instType | String | 是 | 产品类型 SPOT:币币ANY:全部 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "grid-orders-spot",
        "instType": "ANY"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"grid-orders-spot\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "grid-orders-spot",
        "instType": "ANY",
        "uid": "4470****9584"
    },
    "data": [{
        "algoClOrdId": "",
        "algoId": "568028283477164032",
        "activeOrdNum":"10",
        "algoOrdType": "grid",
        "annualizedRate": "0",
        "arbitrageNum": "0",
        "baseSz": "0",
        "cTime": "1681700496249",
        "cancelType": "0",
        "curBaseSz": "0",
        "curQuoteSz": "25",
        "floatProfit": "0",
        "gridNum": "10",
        "gridProfit": "0",
        "instId": "BTC-USDT",
        "instType": "SPOT",
        "investment": "25",
        "maxPx": "5000",
        "minPx": "400",
        "pTime": "1682416738467",
        "perMaxProfitRate": "1.14570215",
        "perMinProfitRate": "0.0991200440528634356837",
        "pnlRatio": "0",
        "profit": "0",
        "quoteSz": "25",
        "rebateTrans": [{
            "rebate": "0",
            "rebateCcy": "BTC"
        }, {
            "rebate": "0",
            "rebateCcy": "USDT"
        }],
        "runPx": "30031.7",
        "runType": "1",
        "triggerParams": [{
            "triggerAction": "start",
            "triggerStrategy": "instant",
            "delaySeconds": "0",
            "triggerType": "auto",
            "triggerTime": ""
        }, {
            "triggerAction": "stop",
            "triggerStrategy": "instant",
            "delaySeconds": "0",
            "stopType": "1",
            "triggerType": "manual",
            "triggerTime": ""
        }],
        "singleAmt": "0.00101214",
        "slTriggerPx": "",
        "state": "running",
        "stopResult": "0",
        "stopType": "2",
        "tag": "",
        "totalAnnualizedRate": "0",
        "totalPnl": "0",
        "tpTriggerPx": "",
        "tradeNum": "0",
        "uTime": "1682406665527",
        "profitSharingRatio": "",
        "copyType": "0",
        "tradeQuoteCcy": "USDT"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 | 
| > uid | String | 用户ID | 
| data | Array of objects | 订阅的数据 | 
| > algoId | String | 策略订单ID | 
| > algoClOrdId | String | 用户自定义策略ID | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > algoOrdType | String | 策略订单类型 grid:现货网格 | 
| > state | String | 订单状态 starting:启动中running:运行中stopping:终止中stopped:已停止 | 
| > rebateTrans | Array of objects | 返佣划转信息 | 
| >> rebate | String | 返佣数量 | 
| >> rebateCcy | String | 返佣币种 | 
| > triggerParams | Array of objects | 信号触发参数 | 
| >> triggerAction | String | 触发行为 start:网格启动stop:网格停止 | 
| >> triggerStrategy | String | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| >> delaySeconds | String | 延迟触发时间,单位为秒 | 
| >> triggerTime | String | triggerAction实际触发时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| >> triggerType | String | triggerAction的实际触发类型 manual:手动触发auto: 自动触发 | 
| >> timeframe | String | K线种类 3M,5M,15M,30M(M代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| >> thold | String | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| >> triggerCond | String | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| >> timePeriod | String | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| >> triggerPx | String | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| >> stopType | String | 策略停止类型 现货 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
| > maxPx | String | 区间最高价格 | 
| > minPx | String | 区间最低价格 | 
| > gridNum | String | 网格数量 | 
| > runType | String | 网格类型 1:等差,2:等比 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > slTriggerPx | String | 止损触发价 | 
| > tradeNum | String | 挂单成交次数 | 
| > arbitrageNum | String | 网格套利次数 | 
| > singleAmt | String | 单网格买卖量 | 
| > perMinProfitRate | String | 预期单网格最低利润率 | 
| > perMaxProfitRate | String | 预期单网格最高利润率 | 
| > runPx | String | 启动时价格 | 
| > totalPnl | String | 总收益 | 
| > pnlRatio | String | 收益率 | 
| > investment | String | 投入金额 现货网格如果投入了交易币则折算为计价币 | 
| > gridProfit | String | 网格利润 | 
| > floatProfit | String | 浮动盈亏 | 
| > totalAnnualizedRate | String | 总年化 | 
| > annualizedRate | String | 网格年化 | 
| > cancelType | String | 网格策略停止原因 0:无1:手动停止2:止盈停止3:止损停止4:风控停止5:交割停止6: 信号停止 | 
| > stopType | String | 网格策略停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:市价全平,2:停止不平仓 | 
| > quoteSz | String | 计价币投入数量 仅适用于 现货网格 | 
| > baseSz | String | 交易币投入数量 仅适用于 现货网格 | 
| > curQuoteSz | String | 当前持有的计价币资产 仅适用于 现货网格 | 
| > curBaseSz | String | 当前持有的交易币资产 仅适用于 现货网格 | 
| > profit | String | 当前可提取利润,单位是计价币 仅适用于 现货网格 | 
| > stopResult | String | 现货网格策略停止结果 0:默认,1:市价卖币成功-1:市价卖币失败仅适用于 现货网格 | 
| > activeOrdNum | String | 子订单挂单数量 | 
| > tag | String | 订单标签 | 
| > profitSharingRatio | String | 分润比例 取值范围[0,0.3] 如果是普通订单(既不是带单也不是跟单),该字段返回"" | 
| > copyType | String | 分润订单类型 0:普通订单1:普通跟单2:分润跟单3:带单 | 
| > pTime | String | 网格策略的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > tradeQuoteCcy | String | 用于交易的计价币种。 | 
WS / 合约网格策略委托订单频道
支持合约网格策略订单的定时推送和事件推送
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "grid-orders-contract",
        "instType": "ANY"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "grid-orders-contract",
        "instType": "SWAP"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 grid-orders-contract | 
| > instType | String | 是 | 产品类型 SWAP:永续FUTURE:交割ANY:全部 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "grid-orders-contract",
        "instType": "ANY"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"grid-orders-contract\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 | 
| > instId | String | 否 | 产品ID | 
| > algoId | String | 否 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "grid-orders-contract",
        "instType": "ANY",
        "uid": "4470****9584"
    },
    "data": [{
        "actualLever": "2.3481494635276649",
        "activeOrdNum": "10",
        "algoClOrdId": "",
        "algoId": "571039869070475264",
        "algoOrdType": "contract_grid",
        "annualizedRate": "0",
        "arbitrageNum": "0",
        "availEq": "52.3015392887089673",
        "basePos": true,
        "cTime": "1682418514204",
        "cancelType": "0",
        "direction": "long",
        "eq": "108.7945652387089673",
        "floatProfit": "8.7945652387089673",
        "gridNum": "10",
        "gridProfit": "0",
        "instId": "BTC-USDT-SWAP",
        "instType": "SWAP",
        "investment": "100",
        "lever": "5",
        "liqPx": "16370.482143120824",
        "maxPx": "36437.3",
        "minPx": "26931.9",
        "ordFrozen": "5.38638",
        "pTime": "1682492574068",
        "perMaxProfitRate": "0.1687494513302446",
        "perMinProfitRate": "0.1263869357706788",
        "pnlRatio": "0.0879456523870897",
        "rebateTrans": [{
            "rebate": "0",
            "rebateCcy": "USDT"
        }],
        "runPx": "27306.9",
        "runType": "1",
        "singleAmt": "1",
        "slTriggerPx": "",
        "state": "running",
        "stopType": "0",
        "sz": "100",
        "tag": "",
        "totalAnnualizedRate": "38.52019574554529",
        "totalPnl": "8.7945652387089673",
        "tpTriggerPx": "",
        "tradeNum": "9",
        "triggerParams": [{
            "triggerAction": "start",
            "delaySeconds": "0",
            "triggerStrategy": "price",
            "triggerPx": "1",
            "triggerType": "manual",
            "triggerTime": "1682418561497"
        }, {
            "triggerAction": "stop",
            "delaySeconds": "0",
            "triggerStrategy": "instant",
            "stopType": "1",
            "triggerType": "manual",
            "triggerTime": "0"
        }],
        "uTime": "1682492552257",
        "profitSharingRatio": "",
        "copyType": "0",
        "tpRatio": "",
        "slRatio": "",
        "fee": "",
        "fundingFee": ""
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 | 
| > uid | String | 用户ID | 
| data | Array of objects | 订阅的数据 | 
| > algoId | String | 策略订单ID | 
| > algoClOrdId | String | 用户自定义策略ID | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > algoOrdType | String | 策略订单类型 contract_grid:合约网格 | 
| > state | String | 订单状态 starting:启动中running:运行中stopping:终止中no_close_position:已停止未平仓(仅适用于合约网格)stopped:已停止 | 
| > rebateTrans | Array of objects | 返佣划转信息 | 
| >> rebate | String | 返佣数量 | 
| >> rebateCcy | String | 返佣币种 | 
| > triggerParams | Array of objects | 信号触发参数 | 
| >> triggerAction | String | 触发行为 start:网格启动stop:网格停止 | 
| >> triggerStrategy | String | 触发策略 instant:立即触发price:价格触发rsi:rsi指标触发 | 
| >> delaySeconds | String | 延迟触发时间,单位为秒 | 
| >> triggerTime | String | triggerAction实际触发时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| >> triggerType | String | triggerAction的实际触发类型 manual:手动触发auto: 自动触发 | 
| >> timeframe | String | K线种类 3m,5m,15m,30m(m代表分钟)1H,4H(H代表小时)1D(D代表天)该字段只在 triggerStrategy为rsi时有效 | 
| >> thold | String | 阈值 取值[1,100]的整数 该字段只在 triggerStrategy为rsi时有效 | 
| >> triggerCond | String | 触发条件 cross_up:上穿cross_down:下穿above:上方below:下方cross:交叉该字段只在 triggerStrategy为rsi时有效 | 
| >> timePeriod | String | 周期 14该字段只在 triggerStrategy为rsi下有效 | 
| >> triggerPx | String | 触发价格 该字段只在 triggerStrategy为price下有效 | 
| >> stopType | String | 策略停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:停止平仓,2:停止不平仓该字段只在 triggerAction为stop时有效 | 
| > maxPx | String | 区间最高价格 | 
| > minPx | String | 区间最低价格 | 
| > gridNum | String | 网格数量 | 
| > runType | String | 网格类型 1:等差,2:等比 | 
| > tpTriggerPx | String | 止盈触发价 | 
| > slTriggerPx | String | 止损触发价 | 
| > tradeNum | String | 挂单成交次数 | 
| > arbitrageNum | String | 网格套利次数 | 
| > singleAmt | String | 单网格买卖量 | 
| > perMinProfitRate | String | 预期单网格最低利润率 | 
| > perMaxProfitRate | String | 预期单网格最高利润率 | 
| > runPx | String | 启动时价格 | 
| > totalPnl | String | 总收益 | 
| > pnlRatio | String | 收益率 | 
| > investment | String | 累计投入金额 现货网格如果投入了交易币则折算为计价币 | 
| > gridProfit | String | 网格利润 | 
| > floatProfit | String | 浮动盈亏 | 
| > totalAnnualizedRate | String | 总年化 | 
| > annualizedRate | String | 网格年化 | 
| > cancelType | String | 网格策略停止原因 0:无1:手动停止2:止盈停止3:止损停止4:风控停止5:交割停止6: 信号停止 | 
| > stopType | String | 网格策略停止类型 现货网格 1:卖出交易币,2:不卖出交易币合约网格 1:市价全平,2:停止不平仓 | 
| > direction | String | 合约网格类型 long:做多,short:做空,neutral:中性仅适用于 合约网格 | 
| > basePos | Boolean | 是否开底仓 仅适用于 合约网格 | 
| > sz | String | 投入保证金,单位为 USDT仅适用于 合约网格 | 
| > lever | String | 杠杆倍数 仅适用于 合约网格 | 
| > actualLever | String | 实际杠杆倍数 仅适用于 合约网格 | 
| > liqPx | String | 预估强平价格 仅适用于 合约网格 | 
| > eq | String | 策略账户总权益 仅适用于 合约网格 | 
| > ordFrozen | String | 挂单占用 适用于 合约网格 | 
| > availEq | String | 可用保证金 适用于 合约网格 | 
| > activeOrdNum | String | 子订单挂单数量 | 
| > tag | String | 订单标签 | 
| > profitSharingRatio | String | 分润比例 取值范围[0,0.3] 如果是普通订单(既不是带单也不是跟单),该字段返回"" | 
| > copyType | String | 分润订单类型 0:普通订单1:普通跟单2:分润跟单3:带单 | 
| > tpRatio | String | 止盈比率,0.1 代表 10% | 
| > slRatio | String | 止损比率,0.1 代表 10% | 
| > fee | String | 累计手续费金额,仅适用于合约网格,其他网格策略为"" | 
| > fundingFee | String | 累计资金费用,仅适用于合约网格,其他网格策略为"" | 
| > pTime | String | 网格策略的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
WS / 合约网格持仓频道
支持网格策略持仓的首次订阅推送,定时推送和事件推送
请忽略空数据
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "grid-positions",
        "algoId": "449327675342323712"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "grid-positions",
        "algoId": "449327675342323712"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 grid-positions | 
| > algoId | String | 是 | 策略ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "grid-positions",
        "algoId": "449327675342323712"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"grid-positions\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > algoId | String | 是 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "grid-positions",
        "uid": "4470****9584",
        "algoId": "449327675342323712"
    },
    "data": [{
        "adl": "1",
        "algoClOrdId": "",
        "algoId": "449327675342323712",
        "avgPx": "29181.4638888888888895",
        "cTime": "1653400065917",
        "ccy": "USDT",
        "imr": "2089.2690000000002",
        "instId": "BTC-USDT-SWAP",
        "instType": "SWAP",
        "last": "29852.7",
        "lever": "5",
        "liqPx": "604.7617536513744",
        "markPx": "29849.7",
        "mgnMode": "cross",
        "mgnRatio": "217.71740878394456",
        "mmr": "41.78538",
        "notionalUsd": "10435.794191550001",
        "pTime": "1653536068723",
        "pos": "35",
        "posSide": "net",
        "uTime": "1653445498682",
        "upl": "232.83263888888962",
        "uplRatio": "0.1139826489932205"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > algoId | String | 策略订单ID | 
| data | Array of objects | 订阅的数据 | 
| > algoId | String | 策略订单ID | 
| > algoClOrdId | String | 用户自定义策略ID | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > avgPx | String | 开仓均价 | 
| > ccy | String | 保证金币种 | 
| > lever | String | 杠杆倍数 | 
| > liqPx | String | 预估强平价 | 
| > posSide | String | 持仓方向 net:买卖模式 | 
| > pos | String | 持仓数量 | 
| > mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| > mgnRatio | String | 维持保证金率 | 
| > imr | String | 初始保证金 | 
| > mmr | String | 维持保证金 | 
| > upl | String | 未实现收益 | 
| > uplRatio | String | 未实现收益率 | 
| > last | String | 最新成交价 | 
| > notionalUsd | String | 仓位美金价值 | 
| > adl | String | 自动减仓信号区 分为5档,从1到5,数字越小代表adl强度越弱 | 
| > markPx | String | 标记价格 | 
| > pTime | String | 订单信息的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
WS / 网格策略子订单频道
支持网格策略子订单的事件推送
请忽略空数据
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "grid-sub-orders",
        "algoId": "449327675342323712"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "grid-sub-orders",
        "algoId": "449327675342323712"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 grid-sub-orders | 
| > algoId | String | 是 | 策略ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "grid-sub-orders",
        "algoId": "449327675342323712"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"grid-sub-orders\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > algoId | String | 是 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "grid-sub-orders",
        "uid": "44705892343619584",
        "algoId": "449327675342323712"
    },
    "data": [{
        "accFillSz": "0",
        "algoClOrdId": "",
        "algoId": "449327675342323712",
        "algoOrdType": "contract_grid",
        "avgPx": "0",
        "cTime": "1653445498664",
        "ctVal": "0.01",
        "fee": "0",
        "feeCcy": "USDT",
        "groupId": "-1",
        "instId": "BTC-USDT-SWAP",
        "instType": "SWAP",
        "lever": "5",
        "ordId": "449518234142904321",
        "ordType": "limit",
        "pTime": "1653486524502",
        "pnl": "",
        "posSide": "net",
        "px": "28007.2",
        "rebate": "0",
        "rebateCcy": "USDT",
        "side": "buy",
        "state": "live",
        "sz": "1",
        "tag":"",
        "tdMode": "cross",
        "uTime": "1653445498674"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > algoId | String | 策略订单ID | 
| data | Array of objects | 订阅的数据 | 
| > algoId | String | 策略订单ID | 
| > algoClOrdId | String | 用户自定义策略ID | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID | 
| > algoOrdType | String | 策略订单类型 grid:现货网格委托contract_grid:合约网格委托 | 
| > groupId | String | 组ID | 
| > ordId | String | 子订单ID | 
| > cTime | String | 子订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 子订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > tag | String | 订单标签 | 
| > tdMode | String | 子订单交易模式 cross:全仓isolated:逐仓cash:非保证金 | 
| > ordType | String | 子订单类型 market:市价单limit:限价单ioc:立即成交并取消剩余 | 
| > sz | String | 子订单委托数量 | 
| > state | String | 子订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交cancelling:撤单中 | 
| > side | String | 子订单订单方向 buy:买sell:卖 | 
| > px | String | 子订单委托价格 | 
| > fee | String | 子订单手续费数量 | 
| > feeCcy | String | 子订单手续费币种 | 
| > rebate | String | 子订单返佣数量 | 
| > rebateCcy | String | 子订单返佣币种 | 
| > avgPx | String | 子订单平均成交价格 | 
| > accFillSz | String | 子订单累计成交数量 | 
| > posSide | String | 子订单持仓方向 net:买卖模式 | 
| > pnl | String | 子订单收益 | 
| > ctVal | String | 合约面值 | 
| > lever | String | 杠杆倍数 | 
| > pTime | String | 订单信息的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
信号交易
信号策略允许您将定制的数字货币交易策略展示在欧易平台。您可以完全控制自己设计的算法,而策略将会以高性能、高可靠性实时执行您的交易。了解更多
POST / 创建信号
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/create-signal
请求示例
POST /api/v5/tradingBot/signal/create-signal
body
{
  "signalChanName": "long short",
  "signalDesc": "this is the first version"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| signalChanName | String | 是 | 信号名称 | 
| signalChanDesc | String | 否 | 信号描述 | 
返回结果
{
    "code": "0",
    "data": [
       {
           "signalChanId" :"572112109",
           "signalChanToken":"dojuckew331lkx"
       }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| signalChanId | String | 信号ID | 
| signalChanToken | String | 信号单的用户身份标识 | 
GET / 查询所有信号
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/signals
请求示例
GET /api/v5/tradingBot/signal/signals
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| signalSourceType | String | 是 | 信号来源类型 1:自己创建的2:订阅他人3:免费信号 | 
| signalChanId | String | 否 | 信号ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的signalChanId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的signalChanId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "signalChanId": "623833708424069120",
            "signalChanName": "test",
            "signalChanDesc": "test",
            "signalChanToken": "test",
            "signalSourceType": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| signalChanId | String | 信号ID | 
| signalChanName | String | 信号名称 | 
| signalChanDesc | String | 信号描述 | 
| signalChanToken | String | 信号单的用户身份标识 | 
| signalSourceType | String | 信号来源类型 1:自己创建的2:订阅他人3:免费信号 | 
POST / 创建信号策略
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/order-algo
请求示例
# 创建信号策略
POST /api/v5/tradingBot/signal/order-algo
body
{
  "signalChanId": "627921182788161536",
  "instIds": [
    "BTC-USDT-SWAP",
    "ETH-USDT-SWAP",
    "LTC-USDT-SWAP"
  ],
  "lever": "10",
  "investAmt": "100",
  "subOrdType": "9",
  "entrySettingParam": {
    "allowMultipleEntry": true,
    "entryType": "1",
    "amt": "",
    "ratio": ""
  },
  "exitSettingParam": {
    "tpSlType": "2",
    "tpPct": "",
    "slPct": ""
  }
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| signalChanId | String | 是 | 信号ID | 
| includeAll | Boolean | 否 | 是否包含所有USDT 本位永续合约,默认false。 true: 包含false: 不包含 | 
| instIds | String | 否 | 该信号支持的产品ID列表, 多个instId 用逗号分隔。当 includeAll 为true 时, 忽略此参数 | 
| lever | String | 是 | 杠杆倍数仅适用于合约信号 | 
| investAmt | String | 是 | 投入金额 | 
| subOrdType | String | 是 | 1:限价 2:市价 9:由tradingView信号指定 | 
| ratio | String | 否 | 限价单的委托价格距离买一/卖一价的百分比。当委托类型为限价时,该字段有效。 | 
| entrySettingParam | String | 否 | 进场参数设定 | 
| > allowMultipleEntry | String | 否 | 是否允许多次进场,默认允许。 true:允许false:不允许 | 
| > entryType | String | 否 | 单次委托类型 1:单次委托量具体数值将从 TradingView 信号中传入2:单次委托量为固定数量的保证金3:单次委托量为固定的合约张数4:单次委托量基于在收到触发信号时策略中可用保证金的百分比5:单次委托量基于在创建策略时设置的初始投入保证金的百分比 | 
| > amt | String | 否 | 单笔委托量 在单次委托类型是 固定保证金 / 合约张数 下该字段有效 | 
| > ratio | Array of objects | 否 | 单笔委托数量百分比 在单次委托类型是 占用保证金比例 / 初始投资比例 下该字段有效 | 
| exitSettingParam | String | 否 | 离场参数设定 | 
| > tpSlType | String | 是 | 止盈止损类型,该参数用户确定设置止盈止损的触发价格计算的方式 pnl:基于平均持仓成本和预期收益率price:基于相对于平均持仓成本的涨跌幅 | 
| > tpPct | String | 否 | 止盈百分比 | 
| > slPct | String | 否 | 止损百分比 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "447053782921515008",
            "sCode": "0",
            "sMsg": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
POST / 停止信号策略
每次最多可以撤销10个信号策略。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/stop-order-algo
请求示例
POST /api/v5/tradingBot/signal/stop-order-algo
body
[
    {
        "algoId":"448965992920907776"
    }
]
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "448965992920907776",
            "sCode": "0",
            "sMsg": "",
            "algoClOrdId": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| algoClOrdId | String | 客户自定义订单ID | 
POST / 调整保证金
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/margin-balance
请求示例
POST /api/v5/tradingBot/signal/margin-balance
body
{
   "algoId":"123456",
   "type":"add",
   "amt":"10"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| type | String | 是 | 调整保证金类型 add:增加,reduce:减少 | 
| amt | String | 是 | 调整保证金数量 | 
| allowReinvest | Boolean | 否 | 是否允许复投调整后的保证金,默认false。true 或者 false false:新投入的资金仅作为保证金用于避免爆仓true:新投入的资金将可用于进行复投。仅适用于进场设定为“TradingView 信号”或“初始投资比例”的策略 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "123456"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
POST / 修改止盈止损
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/amendTPSL
请求示例
POST /api/v5/tradingBot/signal/amendTPSL
body
{
    "algoId": "637039348240277504",
    "exitSettingParam": {
        "tpSlType": "pnl",
        "tpPct": "0.01",
        "slPct": "0.01"
    }
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| exitSettingParam | String | 是 | 离场参数设定 | 
| > tpSlType | String | 是 | 止盈止损类型 | 
| > tpPct | String | 否 | 止盈百分比 | 
| > slPct | String | 否 | 止损百分比 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "637039348240277504"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
POST / 设置币对
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/set-instruments
请求示例
POST /api/v5/tradingBot/signal/set-instruments
body
{
    "algoId": "637039348240277504",
    "instIds": [
        "SHIB-USDT-SWAP",
        "ETH-USDT-SWAP"
    ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| instIds | Array of strings | 是 | 产品Id 列表,当 includeAll 为 true 时,忽略此参数。 | 
| includeAll | Boolean | 是 | 是否包含所有USDT 本位永续合约,默认false true: 包含false: 不包含 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "637039348240277504"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
GET / 获取信号策略详情
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/orders-algo-details
请求示例
GET /api/v5/tradingBot/signal/orders-algo-details?algoId=623833708424069120&algoOrdType=contract
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略类型 contract:合约信号 | 
| algoId | String | 是 | 策略ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "623833708424069120",
            "algoClOrdId": "",
            "algoOrdType": "contract",
            "availBal": "1.6561369013122267",
            "cTime": "1695005546360",
            "cancelType": "0",
            "entrySettingParam": {
                "allowMultipleEntry": true,
                "amt": "0",
                "entryType": "1",
                "ratio": ""
            },
            "exitSettingParam": {
                "slPct": "",
                "tpPct": "",
                "tpSlType": "price"
            },
            "floatPnl": "0.1279999999999927",
            "frozenBal": "25.16816",
            "instIds": [
                "BTC-USDT-SWAP",
                "ETH-USDT-SWAP"
            ],
            "instType": "SWAP",
            "investAmt": "100",
            "lever": "10",
            "ratio": "",
            "realizedPnl": "-73.303703098687766",
            "signalChanId": "623827579484770304",
            "signalChanName": "我的信号",
            "signalSourceType": "1",
            "state": "running",
            "subOrdType": "9",
            "totalEq": "26.824296901312227",
            "totalPnl": "-73.1757030986877733",
            "totalPnlRatio": "-0.7317570309868777",
            "uTime": "1697029422313"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instIds | Array of strings | 该信号支持的产品ID列表 | 
| cTime | String | 策略创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略类型 contract:合约信号 | 
| state | String | 订单状态 starting:启动中running:运行中stopping:终止中stopped:已停止 | 
| cancelType | String | 策略停止原因 0:无1:手动停止 | 
| totalPnl | String | 总收益 | 
| totalPnlRatio | String | 总收益率 | 
| totalEq | String | 当前策略总权益 | 
| floatPnl | String | 浮动盈亏 | 
| realizedPnl | String | 已实现盈亏 | 
| frozenBal | String | 占用保证金 | 
| availBal | String | 可用保证金 | 
| lever | String | 杠杆倍数 仅适用于 合约信号 | 
| investAmt | String | 投入金额 | 
| subOrdType | String | 委托类型 1:限价2:市价9:tradingView信号 | 
| ratio | String | 限价单的委托价格距离买一/卖一价的百分比 当委托类型为限价时,该字段有效,无效则返回""。 | 
| entrySettingParam | Object | 进场参数设定 | 
| > allowMultipleEntry | Boolean | 是否允许多次进场 true:允许false:不允许 | 
| > entryType | String | 单次委托类型 1:单次委托量具体数值将从 TradingView 信号中传入2:单次委托量为固定数量的保证金3:单次委托量为固定的合约张数4:单次委托量基于在收到触发信号时策略中可用保证金的百分比5:单次委托量基于在创建策略时设置的初始投入保证金的百分比 | 
| > amt | String | 单笔委托量 在单次委托类型是 固定保证金 / 合约张数 下该字段有效,无效的时候返回"" | 
| > ratio | String | 单笔委托数量百分比 在单次委托类型是 占用保证金比例 / 初始投资比例 下该字段有效,无效的时候返回"" | 
| exitSettingParam | Object | 离场参数设定 | 
| > tpSlType | String | 止盈止损类型,该参数用户确定设置止盈止损的触发价格计算的方式 pnl:基于平均持仓成本和预期收益率price:基于相对于平均持仓成本的涨跌幅 | 
| > tpPct | String | 止盈百分比 | 
| > slPct | String | 止损百分比 | 
| signalChanId | String | 信号ID | 
| signalChanName | String | 信号名称 | 
| signalSourceType | String | 信号来源类型 1:自己创建的2:订阅他人3:免费信号 | 
GET / 获取活跃信号策略
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/orders-algo-pending
请求示例
GET /api/v5/tradingBot/signal/orders-algo-pending?algoOrdType=contract
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略类型 contract:合约信号 | 
| algoId | String | 否 | 策略ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "623833708424069120",
            "algoClOrdId": "",
            "algoOrdType": "contract",
            "availBal": "1.6561369013122267",
            "cTime": "1695005546360",
            "cancelType": "0",
            "entrySettingParam": {
                "allowMultipleEntry": true,
                "amt": "0",
                "entryType": "1",
                "ratio": ""
            },
            "exitSettingParam": {
                "slPct": "",
                "tpPct": "",
                "tpSlType": "price"
            },
            "floatPnl": "0.1279999999999927",
            "frozenBal": "25.16816",
            "instIds": [
                "BTC-USDT-SWAP",
                "ETH-USDT-SWAP"
            ],
            "instType": "SWAP",
            "investAmt": "100",
            "lever": "10",
            "ratio": "",
            "realizedPnl": "-73.303703098687766",
            "signalChanId": "623827579484770304",
            "signalChanName": "我的信号",
            "signalSourceType": "1",
            "state": "running",
            "subOrdType": "9",
            "totalEq": "26.824296901312227",
            "totalPnl": "-73.1757030986877733",
            "totalPnlRatio": "-0.7317570309868777",
            "uTime": "1697029422313"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instIds | Array of strings | 该信号支持的产品ID列表 | 
| cTime | String | 策略创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略类型 contract:合约信号 | 
| state | String | 订单状态 starting:启动中running:运行中stopping:终止中stopped:已停止 | 
| cancelType | String | 策略停止原因 0:无1:手动停止 | 
| totalPnl | String | 总收益 | 
| totalPnlRatio | String | 总收益率 | 
| totalEq | String | 当前策略总权益 | 
| floatPnl | String | 浮动盈亏 | 
| realizedPnl | String | 已实现盈亏 | 
| frozenBal | String | 占用保证金 | 
| availBal | String | 可用保证金 | 
| lever | String | 杠杆倍数 仅适用于 合约信号 | 
| investAmt | String | 投入金额 | 
| subOrdType | String | 委托类型 1:限价2:市价9:tradingView信号 | 
| ratio | String | 限价单的委托价格距离买一/卖一价的百分比 当委托类型为限价时,该字段有效,无效则返回""。 | 
| entrySettingParam | Object | 进场参数设定 | 
| > allowMultipleEntry | Boolean | 是否允许多次进场 true:允许false:不允许 | 
| > entryType | String | 单次委托类型 1:单次委托量具体数值将从 TradingView 信号中传入2:单次委托量为固定数量的保证金3:单次委托量为固定的合约张数4:单次委托量基于在收到触发信号时策略中可用保证金的百分比5:单次委托量基于在创建策略时设置的初始投入保证金的百分比 | 
| > amt | String | 单笔委托量 在单次委托类型是 固定保证金 / 合约张数 下该字段有效,无效的时候返回"" | 
| > ratio | String | 单笔委托数量百分比 在单次委托类型是 占用保证金比例 / 初始投资比例 下该字段有效,无效的时候返回"" | 
| exitSettingParam | Object | 离场参数设定 | 
| > tpSlType | String | 止盈止损类型,该参数用户确定设置止盈止损的触发价格计算的方式 pnl:基于平均持仓成本和预期收益率price:基于相对于平均持仓成本的涨跌幅 | 
| > tpPct | String | 止盈百分比 | 
| > slPct | String | 止损百分比 | 
| signalChanId | String | 信号ID | 
| signalChanName | String | 信号名称 | 
| signalSourceType | String | 信号来源类型 1:自己创建的2:订阅他人3:免费信号 | 
GET / 获取历史信号策略
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/orders-algo-history
请求示例
GET /api/v5/tradingBot/signal/orders-algo-history?algoId=623833708424069120&algoOrdType=contract
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 策略类型 contract:合约信号 | 
| algoId | String | 是 | 策略ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "623833708424069120",
            "algoClOrdId": "",
            "algoOrdType": "contract",
            "availBal": "1.6561369013122267",
            "cTime": "1695005546360",
            "cancelType": "1",
            "entrySettingParam": {
                "allowMultipleEntry": true,
                "amt": "0",
                "entryType": "1",
                "ratio": ""
            },
            "exitSettingParam": {
                "slPct": "",
                "tpPct": "",
                "tpSlType": "price"
            },
            "floatPnl": "0.1279999999999927",
            "frozenBal": "25.16816",
            "instIds": [
                "BTC-USDT-SWAP",
                "ETH-USDT-SWAP"
            ],
            "instType": "SWAP",
            "investAmt": "100",
            "lever": "10",
            "ratio": "",
            "realizedPnl": "-73.303703098687766",
            "signalChanId": "623827579484770304",
            "signalChanName": "我的信号",
            "signalSourceType": "1",
            "state": "stopped",
            "subOrdType": "9",
            "totalEq": "26.824296901312227",
            "totalPnl": "-73.1757030986877733",
            "totalPnlRatio": "-0.7317570309868777",
            "uTime": "1697029422313"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID | 
| instType | String | 产品类型 | 
| instIds | Array of strings | 该信号支持的产品ID列表 | 
| cTime | String | 策略创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略类型 contract:合约信号 | 
| state | String | 订单状态 stopped:已停止 | 
| cancelType | String | 策略停止原因 1`:手动停止 | 
| totalPnl | String | 总收益 | 
| totalPnlRatio | String | 总收益率 | 
| totalEq | String | 当前策略总权益 | 
| floatPnl | String | 浮动盈亏 | 
| realizedPnl | String | 已实现盈亏 | 
| frozenBal | String | 占用保证金 | 
| availBal | String | 可用保证金 | 
| lever | String | 杠杆倍数 仅适用于 合约信号 | 
| investAmt | String | 投入金额 | 
| subOrdType | String | 委托类型 1:限价2:市价9:tradingView信号 | 
| ratio | String | 限价单的委托价格距离买一/卖一价的百分比 当委托类型为限价时,该字段有效,无效则返回""。 | 
| entrySettingParam | Object | 进场参数设定 | 
| > allowMultipleEntry | Boolean | 是否允许多次进场 true:允许false:不允许 | 
| > entryType | String | 单次委托类型 1:单次委托量具体数值将从 TradingView 信号中传入2:单次委托量为固定数量的保证金3:单次委托量为固定的合约张数4:单次委托量基于在收到触发信号时策略中可用保证金的百分比5:单次委托量基于在创建策略时设置的初始投入保证金的百分比 | 
| > amt | String | 单笔委托量 在单次委托类型是 固定保证金 / 合约张数 下该字段有效,无效的时候返回"" | 
| > ratio | String | 单笔委托数量百分比 在单次委托类型是 占用保证金比例 / 初始投资比例 下该字段有效,无效的时候返回"" | 
| exitSettingParam | Object | 离场参数设定 | 
| > tpSlType | String | 止盈止损类型,该参数用户确定设置止盈止损的触发价格计算的方式 pnl:基于平均持仓成本和预期收益率price:基于相对于平均持仓成本的涨跌幅 | 
| > tpPct | String | 止盈百分比 | 
| > slPct | String | 止损百分比 | 
| signalChanId | String | 信号ID | 
| signalChanName | String | 信号名称 | 
| signalSourceType | String | 信号来源类型 1:自己创建的2:订阅他人3:免费信号 | 
GET / 获取信号策略持仓
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/positions
请求示例
GET /api/v5/tradingBot/signal/positions?algoId=623833708424069120&algoOrdType=contract
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoOrdType | String | 是 | 订单类型 contract:合约信号 | 
| algoId | String | 是 | 策略ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adl": "1",
            "algoClOrdId": "",
            "algoId": "623833708424069120",
            "avgPx": "1597.74",
            "cTime": "1697502301460",
            "ccy": "USDT",
            "imr": "23.76495",
            "instId": "ETH-USDT-SWAP",
            "instType": "SWAP",
            "last": "1584.34",
            "lever": "10",
            "liqPx": "1438.7380360728976",
            "markPx": "1584.33",
            "mgnMode": "cross",
            "mgnRatio": "11.719278420807477",
            "mmr": "1.9011959999999997",
            "notionalUsd": "237.75168928499997",
            "pos": "15",
            "posSide": "net",
            "uTime": "1697502301460",
            "upl": "-2.0115000000000123",
            "uplRatio": "-0.0839310526118142"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID,将来扩展使用。 | 
| instType | String | 产品类型 | 
| instId | String | 产品ID,如 BTC-USDT-SWAP | 
| cTime | String | 策略创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| avgPx | String | 开仓均价 | 
| ccy | String | 保证金币种 | 
| lever | String | 杠杆倍数 | 
| liqPx | String | 预估强平价 | 
| posSide | String | 持仓方向 net:买卖模式 | 
| pos | String | 持仓数量 | 
| mgnMode | String | 保证金模式 cross:全仓isolated:逐仓 | 
| mgnRatio | String | 维持保证金率 | 
| imr | String | 初始保证金 | 
| mmr | String | 维持保证金 | 
| upl | String | 未实现收益 | 
| uplRatio | String | 未实现收益率 | 
| last | String | 最新成交价 | 
| notionalUsd | String | 仓位美金价值 | 
| adl | String | 自动减仓信号区 分为5档,从1到5,数字越小代表adl强度越弱 | 
| markPx | String | 标记价格 | 
GET /查看历史持仓信息
获取最近3个月有更新的仓位信息,按照仓位更新时间倒序排列。组合保证金账户模式不支持查询历史持仓。
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/positions-history
请求示例
GET /api/v5/tradingBot/signal/positions-history?algoId=1234
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| instId | String | 否 | 交易产品ID,如: BTC-USD-SWAP | 
| after | String | 否 | 查询仓位更新 (uTime) 之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询仓位更新 (uTime) 之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回结果的数量,最大为100,默认100条 | 
返回结果
{
  "code": "0",
  "data": [
    {
      "cTime": "1704724451471",
      "closeAvgPx": "200",
      "direction": "net",
      "instId": "ETH-USDT-SWAP",
      "lever": "5.0",
      "mgnMode": "cross",
      "openAvgPx": "220",
      "pnl": "-2.021",
      "pnlRatio": "-0.4593181818181818",
      "uTime": "1704724456322",
      "uly": "ETH-USDT"
    }
  ],
  "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 交易产品ID | 
| mgnMode | String | 保证金模式 cross:全仓,isolated:逐仓" | 
| cTime | String | 仓位创建时间 | 
| uTime | String | 仓位更新时间 | 
| openAvgPx | String | 开仓均价 | 
| closeAvgPx | String | 平仓均价 | 
| pnl | String | 平仓收益额 | 
| pnlRatio | String | 平仓收益率 | 
| lever | String | 杠杆倍数 | 
| direction | String | 持仓方向 long:多short:空 | 
| uly | String | 标的指数 | 
POST / 市价仓位全平
市价平掉指定交易产品的持仓
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/close-position
请求示例
POST /api/v5/tradingBot/signal/close-position
body
{
    "instId":"BTC-USDT-SWAP",
    "algoId":"448965992920907776"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| instId | String | 是 | 产品ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "448965992920907776"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
POST / 下单
只有当您的账户有足够的资金才能下单。
限速:20次/2s
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/sub-order
请求示例
POST /api/v5/tradingBot/signal/sub-order
body
{
    "algoId":"1222",
    "instId":"BTC-USDT-SWAP",
    "side":"buy",
    "ordType":"limit",
    "px":"2.15",
    "sz":"2"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP | 
| algoId | String | 是 | 策略订单ID | 
| side | String | 是 | 订单方向 buy:买,sell:卖 | 
| ordType | String | 是 | 订单类型 market:市价单limit:限价单 | 
| sz | String | 是 | 委托数量 | 
| px | String | 可选 | 委托价格,仅适用于 limit | 
| reduceOnly | Boolean | 否 | 是否只减仓, true或false,默认false仅适用于 合约模式和跨币种保证金模式 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,代码为0时,该字段为空 | 
| data | Array of objects | 包含结果的对象数组 | 
POST / 撤单
撤销之前下的未完成订单。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/signal/cancel-sub-order
请求示例
POST /api/v5/tradingBot/signal/cancel-sub-order
body
{
    "algoId":"91664",
    "signalOrdId":"590908157585625111",
    "instId":"BTC-USDT-SWAP"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP | 
| signalOrdId | String | 是 | 订单ID | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "signalOrdId":"590908157585625111",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,代码为0时,该字段为空 | 
| data | Array of objects | 包含结果的对象数组 | 
| > signalOrdId | String | 订单ID | 
| > sCode | String | 事件执行结果的code,0代表成功 | 
| > sMsg | String | 事件执行失败时的msg | 
GET / 获取信号策略子订单信息
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/sub-orders
请求示例
# 查询已成交历史子订单
GET /api/v5/tradingBot/signal/sub-orders?algoId=623833708424069120&algoOrdType=contract&state=filled
# 查询指定子订单
GET /api/v5/tradingBot/signal/sub-orders?algoId=623833708424069120&algoOrdType=contract&signalOrdId=O632302662327996418
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| algoOrdType | String | 是 | 策略类型 contract:合约信号 | 
| state | String | 可选 | 子订单状态 live:未成交partially_filled:部分成交filled:已成交canceled:已取消state 和 signalOrdId 必须传一个,若传两个,以 state 为主 | 
| signalOrdId | String | 可选 | 子订单ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 ordId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 ordId | 
| begin | String | 否 | 请求 cTime在此时间戳之后(包含)的数据,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| end | String | 否 | 请求 cTime在此时间戳之前(包含)的数据,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
| type | String | 否 | 子订单类型 live:未成交filled:已成交即将废弃 | 
| clOrdId | String | 否 | 子订单自定义订单ID 即将废弃 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "accFillSz": "18",
            "algoClOrdId": "",
            "algoId": "623833708424069120",
            "algoOrdType": "contract",
            "avgPx": "1572.81",
            "cTime": "1697024702320",
            "ccy": "",
            "clOrdId": "O632302662327996418",
            "ctVal": "0.01",
            "fee": "-0.1415529",
            "feeCcy": "USDT",
            "instId": "ETH-USDT-SWAP",
            "instType": "SWAP",
            "lever": "10",
            "ordId": "632302662351958016",
            "ordType": "market",
            "pnl": "-2.6784",
            "posSide": "net",
            "px": "",
            "side": "buy",
            "state": "filled",
            "sz": "18",
            "tag": "",
            "tdMode": "cross",
            "uTime": "1697024702322"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略ID | 
| algoClOrdId | String | 用户自定义策略ID,将来扩展使用。 | 
| instType | String | 产品类型 | 
| instId | String | 交易产品ID | 
| algoOrdType | String | 策略类型 contract:合约信号 | 
| ordId | String | 子订单ID | 
| clOrdId | String | 子订单自定义ID,等同于 signalOrdId | 
| cTime | String | 子订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 子订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| tdMode | String | 子订单交易模式 cross:全仓isolated:逐仓cash:非保证金 | 
| ccy | String | 保证金币种 仅适用于 合约模式下的全仓杠杆订单 | 
| ordType | String | 子订单类型 market:市价单limit:限价单ioc:立即成交并取消剩余 | 
| sz | String | 子订单委托数量 | 
| state | String | 子订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交cancelling:撤单中 | 
| side | String | 子订单订单方向 buy:买sell:卖 | 
| px | String | 子订单委托价格 | 
| fee | String | 子订单手续费数量 | 
| feeCcy | String | 子订单手续费币种 | 
| avgPx | String | 子订单平均成交价格 | 
| accFillSz | String | 子订单累计成交数量 | 
| posSide | String | 子订单持仓方向 net:买卖模式 | 
| pnl | String | 子订单收益 | 
| ctVal | String | 合约面值 仅支持 FUTURES/SWAP | 
| lever | String | 杠杆倍数 | 
| tag | String | 订单标签 | 
GET / 获取信号策略历史事件
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/signal/event-history
请求示例
GET /api/v5/tradingBot/signal/event-history?algoId=623833708424069120
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略ID | 
| after | String | 否 | 请求 eventCtime在此时间之前(更旧的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| before | String | 否 | 请求 eventCtime此时间之后(更新的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "alertMsg": "{\"marketPosition\":\"short\",\"prevMarketPosition\":\"long\",\"action\":\"sell\",\"instrument\":\"ETHUSDT.P\",\"timestamp\":\"2023-10-16T10:50:00.000Z\",\"maxLag\":\"60\",\"investmentType\":\"base\",\"amount\":\"2\"}",
            "algoId": "623833708424069120",
            "eventCtime": "1697453400959",
            "eventProcessMsg": "Processed reverse entry signal and placed ETH-USDT-SWAP order with all available balance",
            "eventStatus": "success",
            "eventType": "signal_processing",
            "eventUtime": "",
            "triggeredOrdData": [
                {
                    "clOrdId": "O634100754731765763"
                },
                {
                    "clOrdId": "O634100754752737282"
                }
            ]
        }
     ],
     "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| alertMsg | String | 提示信息 | 
| algoId | String | 策略ID | 
| eventType | String | 事件类型 system_action:系统行为user_action:用户行为signal_processing:信号下单 | 
| eventCtime | String | 事件发生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| eventUtime | String | 事件更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| eventProcessMsg | String | 事件处理信息 | 
| eventStatus | String | 事件处理状态 success:成功failure:失败 | 
| triggeredOrdData | Array of objects | 信号触发的子订单的信息 | 
| > clOrdId | String | 子订单自定义ID | 
定投
定投是以固定的时间周期,投入固定的金额买入选定币种的策略。在市场波动较为剧烈时,运用适当的定投策略,以同样的投资额度可以在低点购入更多的筹码,可以使用户获得更加可观的收益。了解更多
定投功能模块下的API接口需要身份验证。
POST / 定投策略委托下单
限速:20次/2s
限速规则 :User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/recurring/order-algo
请求示例
POST /api/v5/tradingBot/recurring/order-algo
body
{
  "stgyName": "BTC|ETH recurring buy monthly",     
  "amt":"100",
  "recurringList":[    
    {
         "ccy":"BTC",
         "ratio":"0.2"
    },
    {
         "ccy":"ETH",
         "ratio":"0.8"
    }
  ],
  "period":"monthly",
  "recurringDay":"1",
  "recurringTime":"0",
  "timeZone":"8",   // 东8区
  "tdMode":"cross",
  "investmentCcy":"USDT"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| stgyName | String | 是 | 策略自定义名称,不超过40个字符 | 
| recurringList | Array of objects | 是 | 定投信息 | 
| > ccy | String | 是 | 定投币种,如 BTC | 
| > ratio | String | 是 | 定投币种资产占比,如 "0.2"代表占比20% | 
| period | String | 是 | 周期类型 monthly:月weekly:周daily:日hourly:小时 | 
| recurringDay | String | 可选 | 投资日 当周期类型为 monthly,则取值范围是 [1,28] 的整数当周期类型为 weekly,则取值范围是 [1,7] 的整数当周期类型为 daily/hourly,该参数可不填。 | 
| recurringHour | String | 可选 | 小时级别定投的间隔 1/4/8/12如: 1代表每隔1个小时定投当周期类型选择 hourly,该字段必填。 | 
| recurringTime | String | 是 | 投资时间,取值范围是 [0,23] 的整数 当周期类型选择 hourly代表首次定投发生的时间 | 
| timeZone | String | 是 | 时区(UTC),取值范围是 [-12,14] 的整数 如 8表示UTC+8(东8区),北京时间 | 
| amt | String | 是 | 每期投入数量 | 
| investmentCcy | String | 是 | 投入数量单位,只能是 USDT/USDC | 
| tdMode | String | 是 | 交易模式 跨币种保证金模式/组合保证金模式下选择cross:全仓现货模式/合约模式下选择cash:非保证金 | 
| algoClOrdId | String | 否 | 客户自定义订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| tradeQuoteCcy | String | No | 用于交易的计价币种。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoId":"560472804207104000",
            "algoClOrdId":"",
            "sCode":"0",
            "sMsg":"",
            "tag":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 订单标签 | 
POST / 修改定投策略订单
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/recurring/amend-order-algo
请求示例
POST /api/v5/tradingBot/recurring/amend-order-algo
body
{
    "algoId":"448965992920907776",
    "stgyName":"stg1"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| stgyName | String | 是 | 调整后的策略自定义名称 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "algoId":"448965992920907776",
            "algoClOrdId":"",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
POST / 定投策略停止
每次最多可以撤销10个定投策略订单。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/tradingBot/recurring/stop-order-algo
请求示例
POST /api/v5/tradingBot/recurring/stop-order-algo
body
[
    {
        "algoId":"560472804207104000"
    }
]
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "1839309556514557952",
            "sCode": "0",
            "sMsg": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
| tag | String | 
GET / 获取未完成定投策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/recurring/orders-algo-pending
请求示例
GET /api/v5/tradingBot/recurring/orders-algo-pending
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 否 | 策略订单ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "644497312047435776",
            "algoOrdType": "recurring",
            "amt": "100",
            "cTime": "1699932133373",
            "cycles": "6",
            "instType": "SPOT",
            "investmentAmt": "0",
            "investmentCcy": "USDC",
            "mktCap": "0",
            "period": "hourly",
            "pnlRatio": "0",
            "recurringDay": "",
            "recurringHour": "1",
            "recurringList": [
                {
                    "ccy": "BTC",
                    "ratio": "0.2"
                },
                {
                    "ccy": "ETH",
                    "ratio": "0.8"
                }
            ],
            "recurringTime": "12",
            "state": "running",
            "stgyName": "stg1",
            "tag": "",
            "timeZone": "8",
            "totalAnnRate": "0",
            "totalPnl": "0",
            "uTime": "1699952473152",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| instType | String | 产品类型 SPOT:现货 | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 recurring:定投 | 
| state | String | 订单状态 running:运行中stopping:终止中pause: 已暂停 | 
| stgyName | String | 策略自定义名称,不超过40个字符 | 
| recurringList | Array of objects | 定投信息 | 
| > ccy | String | 定投币种,如 BTC | 
| > ratio | String | 定投币种资产占比,如 "0.2"代表占比20% | 
| period | String | 周期类型 monthly:月weekly:周daily:日hourly:小时 | 
| recurringDay | String | 投资日 当周期类型为 monthly,则取值范围是 [1,28] 的整数当周期类型为 weekly,则取值范围是 [1,7] 的整数 | 
| recurringHour | String | 小时级别定投的间隔 1/4/8/12如: 1代表每隔1个小时定投 | 
| recurringTime | String | 投资时间,取值范围是 [0,23] 的整数 | 
| timeZone | String | 时区(UTC),取值范围是 [-12,14] 的整数 如 8表示UTC+8(东8区),北京时间 | 
| amt | String | 每期投入数量 | 
| investmentAmt | String | 累计投入数量 | 
| investmentCcy | String | 投入数量单位,只能是 USDT/USDC | 
| totalPnl | String | 总收益 | 
| totalAnnRate | String | 总年化 | 
| pnlRatio | String | 收益率 | 
| mktCap | String | 当前总市值,单位为 USDT | 
| cycles | String | 定投累计轮数 | 
| tag | String | 订单标签 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取历史定投策略委托单列表
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/recurring/orders-algo-history
请求示例
GET /api/v5/tradingBot/recurring/orders-algo-history
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 否 | 策略订单ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 algoId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 algoId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "644496098429767680",
            "algoOrdType": "recurring",
            "amt": "100",
            "cTime": "1699931844050",
            "cycles": "0",
            "instType": "SPOT",
            "investmentAmt": "0",
            "investmentCcy": "USDC",
            "mktCap": "0",
            "period": "hourly",
            "pnlRatio": "0",
            "recurringDay": "",
            "recurringHour": "1",
            "recurringList": [
                {
                    "ccy": "BTC",
                    "ratio": "0.2"
                },
                {
                    "ccy": "ETH",
                    "ratio": "0.8"
                }
            ],
            "recurringTime": "0",
            "state": "stopped",
            "stgyName": "stg1",
            "tag": "",
            "timeZone": "8",
            "totalAnnRate": "0",
            "totalPnl": "0",
            "uTime": "1699932177659",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| instType | String | 产品类型 SPOT:现货 | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 recurring:定投 | 
| state | String | 订单状态 stopped:已停止 | 
| stgyName | String | 策略自定义名称,不超过40个字符 | 
| recurringList | Array of objects | 定投信息 | 
| > ccy | String | 定投币种,如 BTC | 
| > ratio | String | 定投币种资产占比,如 "0.2"代表占比20% | 
| period | String | 周期类型 monthly:月weekly:周daily:日hourly:小时 | 
| recurringDay | String | 投资日 当周期类型为 monthly,则取值范围是 [1,28] 的整数当周期类型为 weekly,则取值范围是 [1,7] 的整数 | 
| recurringHour | String | 小时级别定投的间隔 1/4/8/12如: 1代表每隔1个小时定投 | 
| recurringTime | String | 投资时间,取值范围是 [0,23] 的整数 | 
| timeZone | String | 时区(UTC),取值范围是 [-12,14] 的整数 如 8表示UTC+8(东8区),北京时间 | 
| amt | String | 每期投入数量 | 
| investmentAmt | String | 累计投入数量 | 
| investmentCcy | String | 投入数量单位,只能是 USDT/USDC | 
| totalPnl | String | 总收益 | 
| totalAnnRate | String | 总年化 | 
| pnlRatio | String | 收益率 | 
| mktCap | String | 当前总市值,单位为 USDT | 
| cycles | String | 定投累计轮数 | 
| tag | String | 订单标签 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取定投策略委托订单详情
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/recurring/orders-algo-details
请求示例
GET /api/v5/tradingBot/recurring/orders-algo-details?algoId=644497312047435776
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoClOrdId": "",
            "algoId": "644497312047435776",
            "algoOrdType": "recurring",
            "amt": "100",
            "cTime": "1699932133373",
            "cycles": "6",
            "instType": "SPOT",
            "investmentAmt": "0",
            "investmentCcy": "USDC",
            "mktCap": "0",
            "nextInvestTime": "1699956005500",
            "period": "hourly",
            "pnlRatio": "0",
            "recurringDay": "",
            "recurringHour": "1",
            "recurringList": [
                {
                    "avgPx": "0",
                    "ccy": "BTC",
                    "profit": "0",
                    "px": "36683.2",
                    "ratio": "0.2",
                    "totalAmt": "0"
                },
                {
                    "avgPx": "0",
                    "ccy": "ETH",
                    "profit": "0",
                    "px": "2058.36",
                    "ratio": "0.8",
                    "totalAmt": "0"
                }
            ],
            "recurringTime": "12",
            "state": "running",
            "stgyName": "stg1",
            "tag": "",
            "timeZone": "8",
            "totalAnnRate": "0",
            "totalPnl": "0",
            "uTime": "1699952485451",
            "tradeQuoteCcy": "USDT"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| algoClOrdId | String | 客户自定义订单ID | 
| instType | String | 产品类型 SPOT:现货 | 
| cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| algoOrdType | String | 策略订单类型 recurring:定投 | 
| state | String | 订单状态 running:运行中stopping:终止中stopped:已停止pause: 已暂停 | 
| stgyName | String | 策略自定义名称,不超过40个字符 | 
| recurringList | Array of objects | 定投信息 | 
| > ccy | String | 定投币种,如 BTC | 
| > ratio | String | 定投币种资产占比,如 "0.2"代表占比20% | 
| > totalAmt | String | 累计购入定投币种的数量 | 
| > profit | String | 定投收益,单位为 investmentCcy | 
| > avgPx | String | 定投均价,计价单位为 investmentCcy | 
| > px | String | 当前价格,计价单位为 investmentCcy | 
| period | String | 周期类型 monthly:月weekly:周daily:日hourly:小时 | 
| recurringDay | String | 投资日 当周期类型为 monthly,则取值范围是 [1,28] 的整数当周期类型为 weekly,则取值范围是 [1,7] 的整数 | 
| recurringHour | String | 小时级别定投的间隔 1/4/8/12如: 1代表每隔1个小时定投 | 
| recurringTime | String | 投资时间,取值范围是 [0,23] 的整数 | 
| timeZone | String | 时区(UTC),取值范围是 [-12,14] 的整数 如 8表示UTC+8(东8区),北京时间 | 
| amt | String | 每期投入数量 | 
| investmentAmt | String | 累计投入数量 | 
| investmentCcy | String | 投入数量单位,只能是 USDT/USDC | 
| nextInvestTime | String | 下一次定投发生的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| totalPnl | String | 总收益 | 
| totalAnnRate | String | 总年化 | 
| pnlRatio | String | 收益率 | 
| mktCap | String | 当前总市值,单位为 USDT | 
| cycles | String | 定投累计轮数 | 
| tag | String | 订单标签 | 
| tradeQuoteCcy | String | 用于交易的计价币种。 | 
GET / 获取定投策略子订单信息
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/tradingBot/recurring/sub-orders
请求示例
GET /api/v5/tradingBot/recurring/sub-orders?algoId=560516615079727104
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| algoId | String | 是 | 策略订单ID | 
| ordId | String | 否 | 子订单ID | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 ordId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 ordId | 
| limit | String | 否 | 返回结果的数量,最大为300,默认300条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "accFillSz": "0.045315",
            "algoClOrdId": "",
            "algoId": "560516615079727104",
            "algoOrdType": "recurring",
            "avgPx": "1765.4",
            "cTime": "1679911222200",
            "fee": "-0.0000317205",
            "feeCcy": "ETH",
            "instId": "ETH-USDC",
            "instType": "SPOT",
            "ordId": "560523524230717440",
            "ordType": "market",
            "px": "-1",
            "side": "buy",
            "state": "filled",
            "sz": "80",
            "tag": "",
            "tdMode": "",
            "uTime": "1679911222207"
        },
        {
            "accFillSz": "0.00071526",
            "algoClOrdId": "",
            "algoId": "560516615079727104",
            "algoOrdType": "recurring",
            "avgPx": "27961.6",
            "cTime": "1679911222189",
            "fee": "-0.000000500682",
            "feeCcy": "BTC",
            "instId": "BTC-USDC",
            "instType": "SPOT",
            "ordId": "560523524184580096",
            "ordType": "market",
            "px": "-1",
            "side": "buy",
            "state": "filled",
            "sz": "20",
            "tag": "",
            "tdMode": "",
            "uTime": "1679911222194"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| algoId | String | 策略订单ID | 
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| algoOrdType | String | 策略订单类型 recurring:定投 | 
| ordId | String | 子订单ID | 
| cTime | String | 子订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 子订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| tdMode | String | 子订单交易模式 cross:全仓cash:非保证金 | 
| ordType | String | 子订单类型 market:市价单 | 
| sz | String | 子订单委托数量 | 
| state | String | 子订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交cancelling:撤单中 | 
| side | String | 子订单订单方向 buy:买sell:卖 | 
| px | String | 子订单委托价格 市价委托时为"-1" | 
| fee | String | 子订单手续费数量 | 
| feeCcy | String | 子订单手续费币种 | 
| avgPx | String | 子订单平均成交价格 | 
| accFillSz | String | 子订单累计成交数量 | 
| tag | String | 订单标签 | 
| algoClOrdId | String | 用户自定义策略ID | 
WS / 定投策略委托订单频道
支持定投策略订单的定时推送和事件推送
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "algo-recurring-buy",
        "instType": "SPOT"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "algo-recurring-buy",
        "instType": "SPOT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 algo-recurring-buy | 
| > instType | String | 是 | 产品类型 SPOT:币币ANY:全部 | 
| > algoId | String | 否 | 策略ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
            "channel": "algo-recurring-buy",
            "instType": "SPOT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"algo-recurring-buy\", \"instType\" : \"FUTURES\"}]}",
        "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 | 
| > algoId | String | 否 | 策略ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "algo-recurring-buy",
        "instType": "SPOT",
        "uid": "447*******584"
    },
    "data": [{
        "algoClOrdId": "",
        "algoId": "644497312047435776",
        "algoOrdType": "recurring",
        "amt": "100",
        "cTime": "1699932133373",
        "cycles": "0",
        "instType": "SPOT",
        "investmentAmt": "0",
        "investmentCcy": "USDC",
        "mktCap": "0",
        "nextInvestTime": "1699934415300",
        "pTime": "1699933314691",
        "period": "hourly",
        "pnlRatio": "0",
        "recurringDay": "",
        "recurringHour": "1",
        "recurringList": [{
            "avgPx": "0",
            "ccy": "BTC",
            "profit": "0",
            "px": "36482",
            "ratio": "0.2",
            "totalAmt": "0"
        }, {
            "avgPx": "0",
            "ccy": "ETH",
            "profit": "0",
            "px": "2057.54",
            "ratio": "0.8",
            "totalAmt": "0"
        }],
        "recurringTime": "12",
        "state": "running",
        "stgyName": "stg1",
        "tag": "",
        "timeZone": "8",
        "totalAnnRate": "0",
        "totalPnl": "0",
        "uTime": "1699932136249",
        "tradeQuoteCcy": "USDT"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 | 
| > algoId | String | 策略ID | 
| > uid | String | 用户ID | 
| data | Array of objects | 订阅的数据 | 
| > algoId | String | 策略订单ID | 
| > algoClOrdId | String | 客户自定义订单ID | 
| > instType | String | 产品类型 SPOT:现货 | 
| > cTime | String | 策略订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > uTime | String | 策略订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > algoOrdType | String | 策略订单类型 recurring:定投 | 
| > state | String | 订单状态 running:运行中stopping:终止中stopped:已停止pause: 已暂停 | 
| > stgyName | String | 策略自定义名称,不超过40个字符 | 
| > recurringList | Array of objects | 定投信息 | 
| >> ccy | String | 定投币种,如 BTC | 
| >> ratio | String | 定投币种资产占比,如 "0.2"代表占比20% | 
| >> totalAmt | String | 累计购入定投币种的数量 | 
| >> profit | String | 定投收益,单位为 investmentCcy | 
| >> avgPx | String | 定投均价,计价单位为 investmentCcy | 
| >> px | String | 当前价格,计价单位为 investmentCcy | 
| > period | String | 周期类型 monthly:月weekly:周daily:日hourly:小时 | 
| > recurringDay | String | 投资日 当周期类型为 monthly,则取值范围是 [1,28] 的整数当周期类型为 weekly,则取值范围是 [1,7] 的整数 | 
| > recurringHour | String | 小时级别定投的间隔 1/4/8/12如: 1代表每隔1个小时定投 | 
| > recurringTime | String | 投资时间,取值范围是 [0,23] 的整数 | 
| > timeZone | String | 时区(UTC),取值范围是 [-12,14] 的整数 如 8表示UTC+8(东8区),北京时间 | 
| > amt | String | 每期投入数量 | 
| > investmentAmt | String | 累计投入数量 | 
| > investmentCcy | String | 投入数量单位,只能是 USDT/USDC | 
| > nextInvestTime | String | 下一次定投发生的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > totalPnl | String | 总收益 | 
| > totalAnnRate | String | 总年化 | 
| > pnlRatio | String | 收益率 | 
| > mktCap | String | 当前总市值,单位为 USDT | 
| > cycles | String | 定投累计轮数 | 
| > tag | String | 订单标签 | 
| > pTime | String | 策略订单的推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > tradeQuoteCcy | String | 用于交易的计价币种。 | 
跟单
带单 API 交易工作流程如下:
1. 申请成为带单交易员
2. 带单合约
- 获取带单产品接口,用于查看平台哪些合约支持带单,以及您开启了哪些合约的带单。对于您未开启带单的合约,依旧可以正常交易,只是不会触发跟单;
- 交易员修改带单合约接口,初始带单合约在申请带单交易员时进行设置,该接口用于修改您的带单合约。非带单合约修改为带单合约时,该次请求中所有的非带单合约合约不能有持仓或者挂单。
3. 开仓
- 需要通过下单接口和频道进行开仓,包括:下单接口、批量下单接口、下单频道、批量下单频道。现货带单时,tdMode的值需要指定为spot_isolated
- 在买卖模式下,委托的方向必须与现有持仓和挂单保持一致,如果对应产品没有持仓和挂单,可根据自己的需求选择委托方向;
- 开平仓模式下,可根据自己的需求选择开多或开空。
4. 平仓
- 可以通过下单接口和频道进行平仓,支持自定义价格和数量,包括:下单接口、批量下单接口、下单频道、批量下单频道,也可以通过市价仓位全平接口或者平仓带单接口进行平仓;
- 市价仓位全平接口,平掉当前产品下指定的仓位(如:开平模式下,全仓模式下的多仓或空仓),可能包含多个带单;
- 平仓带单接口,一次仅平仓某一个带单仓位。带单ID(subPosId)为必填参数,需要通过获取当前带单接口获取。
5. 止盈止损
- 可以通过带单仓位止盈止损接口或者策略委托下单接口设置止盈止损;
- 带单仓位止盈止损接口,一次仅为一个带单仓位设置。带单ID(subPosId)为必填参数,需要通过获取当前带单接口获取。
- 策略委托下单接口,为当前产品下指定的仓位(如:开平模式下,全仓模式下的多仓或空仓)设置,可能包含多个带单;
GET / 获取当前带单
获取当前未平仓的带单仓位。
按照开仓时间倒序排列。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/current-subpositions
请求示例
GET /api/v5/copytrading/current-subpositions?instId=BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约 默认返回所有业务线的信息 | 
| instId | String | 否 | 产品ID ,如 BTC-USDT-SWAP | 
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的 subPosId | 
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的 subPosId | 
| limit | String | 否 | 分页返回的结果集数量,最大为500,不填默认返回500条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "algoId": "",
            "ccy": "USDT",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "lever": "3",
            "margin": "12.6417",
            "markPx": "38205.8",
            "mgnMode": "isolated",
            "openAvgPx": "37925.1",
            "openOrdId": "",
            "openTime": "1701231120479",
            "posSide": "net",
            "slOrdPx": "",
            "slTriggerPx": "",
            "subPos": "1",
            "subPosId": "649945658862370816",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "uniqueCode": "25CD5A80241D6FE6",
            "upl": "0.2807",
            "uplRatio": "0.0222042921442527",
            "availSubPos": "1"
        },
        {
            "algoId": "",
            "ccy": "USDT",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "lever": "3",
            "margin": "12.6263333333333333",
            "markPx": "38205.8",
            "mgnMode": "isolated",
            "openAvgPx": "37879",
            "openOrdId": "",
            "openTime": "1701225074786",
            "posSide": "net",
            "slOrdPx": "",
            "slTriggerPx": "",
            "subPos": "1",
            "subPosId": "649920301388038144",
            "tpOrdPx": "",
            "tpTriggerPx": "",
            "uniqueCode": "25CD5A80241D6FE6",
            "upl": "0.3268",
            "uplRatio": "0.0258824150584758",
            "availSubPos": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| subPosId | String | 带单仓位ID | 
| posSide | String | 持仓方向 long:开平仓模式开多 short:开平仓模式开空 net:买卖模式(subPos为正代表开多,subPos为负代表开空) | 
| mgnMode | String | 保证金模式, isolated:逐仓 ;cross:全仓 | 
| lever | String | 杠杆倍数 | 
| openOrdId | String | 交易员开仓订单号,仅适用于带单仓位 | 
| openAvgPx | String | 开仓均价 | 
| openTime | String | 开仓时间 | 
| subPos | String | 持仓张数 | 
| tpTriggerPx | String | 止盈触发价 | 
| slTriggerPx | String | 止损触发价 | 
| algoId | String | 止盈止损委托单ID | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| tpOrdPx | String | 止盈委托价,市价时为-1 | 
| slOrdPx | String | 止损委托价,市价时为-1 | 
| margin | String | 保证金 | 
| upl | String | 未实现收益 | 
| uplRatio | String | 未实现收益率 | 
| markPx | String | 最新标记价格,仅适用于合约 | 
| uniqueCode | String | 交易员唯一标识代码 | 
| ccy | String | 保证金币种 | 
| availSubPos | String | 可平张数/币数 | 
GET / 获取历史带单
获取最近三个月的已经平仓的带单仓位,按照subPosId倒序排序。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/subpositions-history
请求示例
GET /api/v5/copytrading/subpositions-history?instId=BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约 默认返回所有业务线的信息 | 
| instId | String | 否 | 产品ID ,如 BTC-USDT-SWAP | 
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的 subPosId | 
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的 subPosId | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "closeAvgPx": "37617.5",
            "closeTime": "1701188587950",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "lever": "3",
            "margin": "37.41",
            "markPx": "38203.4",
            "mgnMode": "isolated",
            "openAvgPx": "37410",
            "openOrdId": "",
            "openTime": "1701184638702",
            "pnl": "0.6225",
            "pnlRatio": "0.0166399358460306",
            "posSide": "net",
            "profitSharingAmt": "0.0407967",
            "subPos": "3",
            "closeSubPos": "2",
            "type": "1",
            "subPosId": "649750700213698561",
            "uniqueCode": "25CD5A80241D6FE6"
        },
        {
            "ccy": "USDT",
            "closeAvgPx": "37617.5",
            "closeTime": "1701188587950",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "lever": "3",
            "margin": "24.94",
            "markPx": "38203.4",
            "mgnMode": "isolated",
            "openAvgPx": "37410",
            "openOrdId": "",
            "openTime": "1701184635381",
            "pnl": "0.415",
            "pnlRatio": "0.0166399358460306",
            "posSide": "net",
            "profitSharingAmt": "0.0271978",
            "subPos": "2",
            "closeSubPos": "2",
            "type": "2",
            "subPosId": "649750686292803585",
            "uniqueCode": "25CD5A80241D6FE6"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| subPosId | String | 带单仓位ID | 
| posSide | String | 持仓方向 long:开平仓模式开多 short:开平仓模式开空 net:买卖模式(subPos为正代表开多,subPos为负代表开空) | 
| mgnMode | String | 保证金模式, isolated:逐仓 ;cross:全仓 | 
| lever | String | 杠杆倍数 | 
| openOrdId | String | 交易员开仓订单号,仅适用于带单仓位 | 
| openAvgPx | String | 开仓均价 | 
| openTime | String | 开仓时间 | 
| subPos | String | 持仓张数 | 
| closeTime | String | 平仓时间(最近一次平仓的时间) | 
| closeAvgPx | String | 平仓均价 | 
| pnl | String | 收益额 | 
| pnlRatio | String | 收益率 | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| margin | String | 保证金 | 
| ccy | String | 币种 | 
| markPx | String | 最新标记价格,仅适用于合约 | 
| uniqueCode | String | 交易员唯一标识代码 | 
| profitSharingAmt | String | 跟单分润额,仅适用于跟单,已经废弃。 | 
| closeSubPos | String | 已平仓量 | 
| type | String | 平仓类型 1:部分平仓;2:完全平仓; | 
POST / 带单或跟单仓位止盈止损
为当前未平仓的带单仓位设置止盈止损。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/algo-order
请求示例
POST /api/v5/copytrading/algo-order
body
{
    "subPosId": "518541406042591232",
    "tpTriggerPx": "10000"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约,默认值 | 
| subPosId | String | 是 | 带单或者跟单仓位ID | 
| tpTriggerPx | String | 可选 | 止盈触发价,tpTriggerPx 和 slTriggerPx 至少需要填写一个 如果止盈触发价为0,那代表删除止盈。 | 
| slTriggerPx | String | 可选 | 止损触发价, 如果止损触发价为0,那代表删除止损 | 
| tpOrdPx | String | 否 | 止盈委托价 委托价格为-1时,执行市价止盈,默认为市价止盈 仅适用于现货交易员 | 
| slOrdPx | String | 否 | 止损委托价 委托价格为-1时,执行市价止损,默认为市价止损 仅适用于现货交易员 | 
| tpTriggerPxType | String | 否 | 止盈触发价类型 last:最新价格index:指数价格mark:标记价格默认为last | 
| slTriggerPxType | String | 否 | 止损触发价类型 last:最新价格index:指数价格mark:标记价格默认为last | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| subPosType | String | 否 | 数据的类型 lead: 带单,默认值copy: 跟单 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "subPosId": "518560559046594560",
            "tag":""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subPosId | String | 带单或者跟单仓位ID | 
| tag | String | 订单标签 | 
POST / 平仓带单
一次仅可平仓一个带单仓位。
subPosId 为必填参数,需要通过交易员获取当前带单接口获取。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/close-subposition
请求示例
POST /api/v5/copytrading/close-subposition
body
{
    "subPosId": "518541406042591232"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约,默认值 | 
| subPosId | String | 是 | 带单仓位ID | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单默认为市价单 | 
| px | String | 否 | 委托价格,仅适用于 limit类型的订单,且仅适用于现货交易员委托价格为 0 代表撤销挂单 已经设置了限价单,仍为该条目设置价格时,视为改单。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "subPosId": "518560559046594560",
            "tag":""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subPosId | String | 带单仓位ID | 
| tag | String | 订单标签 | 
GET / 获取带单产品
获取平台支持带单的产品,以及获取带单员正在带单的产品
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/instruments
请求示例
GET /api/v5/copytrading/instruments
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约,默认值 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "enabled": true,
            "instId": "BTC-USDT-SWAP"
        },
        {
            "enabled": true,
            "instId": "ETH-USDT-SWAP"
        },
        {
            "enabled": false,
            "instId": "ADA-USDT-SWAP"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| enabled | Boolean | 是否设置了带单 true或false | 
POST / 交易员修改带单产品
交易员修改带单产品的设置。初始带单产品在申请带单交易员时进行设置。
非带单产品修改为带单产品时,该次请求中所有的非带单产品不能有持仓或者挂单。
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/set-instruments
请求示例
POST /api/v5/copytrading/set-instruments
body
{
    "instId": "BTC-USDT-SWAP,ETH-USDT-SWAP"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约,默认值 | 
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP,多个产品用半角逗号隔开 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "enabled": true,
            "instId": "BTC-USDT-SWAP"
        },
        {
            "enabled": true,
            "instId": "ETH-USDT-SWAP"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品id, 如 BTC-USDT-SWAP | 
| enabled | Boolean | true或falsetrue代表设置成功false代表设置失败 | 
GET / 交易员历史分润明细
交易员获取最近三个月的分润明细。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/profit-sharing-details
请求示例
GET /api/v5/copytrading/profit-sharing-details?limit=2
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约 默认返回所有业务线的信息 | 
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的 profitSharingId | 
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的 profitSharingId | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "nickName": "Potato",
            "profitSharingAmt": "0.00536",
            "profitSharingId": "148",
            "portLink": "",
            "ts": "1723392000000",
            "instType": "SWAP"
        },
        {
            "ccy": "USDT",
            "nickName": "Apple",
            "profitSharingAmt": "0.00336",
            "profitSharingId": "20",
            "portLink": "",
            "ts": "1723392000000",
            "instType": "SWAP"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 分润币种 | 
| profitSharingAmt | String | 分润额,没有分润时,默认返回0 | 
| nickName | String | 跟单人的昵称 | 
| profitSharingId | String | 分润ID | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| portLink | String | 跟单员头像的链接地址 | 
| ts | String | 分润时间 | 
GET / 交易员历史分润汇总
交易员获取自入驻平台以来,累计获得的总分润金额。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/total-profit-sharing
请求示例
GET /api/v5/copytrading/total-profit-sharing
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约 默认返回所有业务线的信息 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "totalProfitSharingAmt": "0.6584928",
            "instType": "SWAP"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 分润币种 | 
| totalProfitSharingAmt | String | 历史分润汇总 | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
GET / 交易员待分润明细
交易员获取预计在下一个周期分到的分润金额明细。
当有跟单仓位平仓时,待分润明细会进行更新。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/unrealized-profit-sharing-details
请求示例
GET /api/v5/copytrading/unrealized-profit-sharing-details
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SPOT:币币 SWAP:永续合约 默认返回所有业务线的信息 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "nickName": "Potato",
            "portLink": "",
            "ts": "1669901824779",
            "unrealizedProfitSharingAmt": "0.455472",
            "instType": "SWAP"
        },
        {
            "ccy": "USDT",
            "nickName": "Apple",
            "portLink": "",
            "ts": "1669460210113",
            "unrealizedProfitSharingAmt": "0.033608",
            "instType": "SWAP"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 分润币种,如: USDT | 
| unrealizedProfitSharingAmt | String | 待分润额 | 
| nickName | String | 跟单人昵称 | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| portLink | String | 跟单员头像的链接地址 | 
| ts | String | 数据更新时间 | 
GET / 交易员待分润汇总
交易员获取待分润汇总。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/total-unrealized-profit-sharing
请求示例
GET /api/v5/copytrading/total-unrealized-profit-sharing
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "profitSharingTs": "1705852800000",
            "totalUnrealizedProfitSharingAmt": "0.114402985553185"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| profitSharingTs | String | 当前周期待分润总额的结算时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| totalUnrealizedProfitSharingAmt | String | 待分润总额 | 
POST / 修改分润比例
修改分润比例
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/amend-profit-sharing-ratio
请求示例
POST /api/v5/copytrading/amend-profit-sharing-ratio
body
{
    "instType": "SWAP",
    "profitSharingRatio": "0.1"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| profitSharingRatio | String | 是 | 分润比例。0.1 代表10% | 
返回结果
{
    "code": "0",
    "data": [
        {
            "result": true
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 设置结果 true:设置成功 | 
GET / 查看账户配置信息
获取跟单交易和带单交易相关的账户配置信息
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/config
请求示例
GET /api/v5/copytrading/config
请求参数
无
返回结果
{
    "code": "0",
    "data": [
        {
            "details": [
                {
                    "copyTraderNum": "1",
                    "instType": "SWAP",
                    "maxCopyTraderNum": "100",
                    "profitSharingRatio": "0",
                    "roleType": "1"
                },
                {
                    "copyTraderNum": "",
                    "instType": "SPOT",
                    "maxCopyTraderNum": "",
                    "profitSharingRatio": "",
                    "roleType": "0"
                }
            ],
            "nickName": "155***9957",
            "portLink": "",
            "uniqueCode": "5506D3681454A304"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uniqueCode | String | 交易员唯一标识代码 | 
| nickName | String | 昵称 | 
| portLink | String | 头像的链接地址 | 
| details | Array of objects | 详情 | 
| > instType | String | 产品类型 SPOT: 币币SWAP: 永续合约 | 
| > roleType | String | 用户角色 0:普通用户1:带单者2:跟单者 | 
| > profitSharingRatio | String | 分润比例,仅适用于带单员,0.1 代表 10%,否则为"" | 
| > maxCopyTraderNum | String | 最大跟单人数,仅适用于带单员 | 
| > copyTraderNum | String | 当前跟单人数,仅适用于带单员 | 
POST / 首次跟单设置
跟随某一交易员的首次设置,停止跟单后需先进行首次设置;
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/first-copy-settings
请求示例
POST /api/v5/copytrading/first-copy-settings
body
{
    "instType": "SWAP",
    "uniqueCode": "25CD5A80241D6FE6",
    "copyMgnMode": "cross",
    "copyInstIdType": "copy",
    "copyMode": "ratio_copy",
    "copyRatio": "1",
    "copyTotalAmt": "500",
    "subPosCloseType": "copy_close"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| copyMgnMode | String | 是 | 跟单时的保证金模式 cross: 全仓;isolated: 逐仓;copy: 跟随带单员 | 
| copyInstIdType | String | 是 | 跟单合约设置的类型 custom: 用户自定义,instId 必填;copy: 跟随交易员,自动同步交易员的合约变更 | 
| instId | String | 可选 | 产品 ID 可传入多条,以逗号区分 | 
| copyMode | String | 否 | 跟单模式 fixed_amount: 固定金额跟单,copyAmt必填;ratio_copy: 比例跟单,copyRatio必填默认是 fixed_amount | 
| copyTotalAmt | String | 是 | 跟单该交易员投入的最大跟单金额,单位为USDT。 超过该金额后将不再触发跟单行为 | 
| copyAmt | String | 可选 | 单笔跟随金额,单位为USDT | 
| copyRatio | String | 可选 | 跟单比例 | 
| tpRatio | String | 否 | 单笔止盈百分比,0.1 代表10% | 
| slRatio | String | 否 | 单笔止损百分比,0.1 代表10% | 
| slTotalAmt | String | 否 | 跟单止损总金额,单位为USDT 净损失达到该金额时,将自动解除跟单关系 | 
| subPosCloseType | String | 是 | 剩余仓位处理方式 market_close: 立即市价全平copy_close:跟随交易员平仓manual_close: 手动处理默认为 copy_close | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "result": true
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 设置结果 true:设置成功 | 
POST / 修改跟单设置
跟随某一交易员,完成首次设置后,修改设置时,需要使用该接口
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/amend-copy-settings
请求示例
POST /api/v5/copytrading/amend-copy-settings
body
{
    "instType": "SWAP",
    "uniqueCode": "25CD5A80241D6FE6",
    "copyMgnMode": "cross",
    "copyInstIdType": "copy",
    "copyMode": "ratio_copy",
    "copyRatio": "1",
    "copyTotalAmt": "500",
    "subPosCloseType": "copy_close"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| copyMgnMode | String | 是 | 跟单时的保证金模式 cross: 全仓;isolated: 逐仓;copy: 跟随带单员 | 
| copyInstIdType | String | 是 | 跟单合约设置的类型 custom: 用户自定义,instId 必填;copy: 跟随交易员,自动同步交易员的合约变更 | 
| instId | String | 可选 | 产品 ID 可传入多条,以逗号区分 | 
| copyMode | String | 否 | 跟单模式 fixed_amount: 固定金额跟单,copyAmt必填;ratio_copy: 比例跟单,copyRatio必填默认是 fixed_amount | 
| copyTotalAmt | String | 是 | 跟单该交易员投入的最大跟单金额,单位为USDT。 超过该金额后将不再触发跟单行为 | 
| copyAmt | String | 可选 | 单笔跟随金额,单位为USDT | 
| copyRatio | String | 可选 | 跟单比例 | 
| tpRatio | String | 否 | 单笔止盈百分比,0.1 代表10% | 
| slRatio | String | 否 | 单笔止损百分比,0.1 代表10% | 
| slTotalAmt | String | 否 | 跟单止损总金额,单位为USDT 净损失达到该金额时,将自动解除跟单关系 | 
| subPosCloseType | String | 是 | 剩余仓位处理方式 market_close: 立即市价全平copy_close:跟随交易员平仓manual_close: 手动处理默认为 copy_close | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "result": true
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 设置结果 true:设置成功 | 
POST / 停止跟单
该接口用来停止跟单
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/copytrading/stop-copy-trading
请求示例
POST /api/v5/copytrading/stop-copy-trading
body
{
    "instType": "SWAP",
    "uniqueCode": "25CD5A80241D6FE6",
    "subPosCloseType": "manual_close"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| subPosCloseType | String | 可选 | 剩余仓位处理方式,有相关的跟单条目时必填 market_close: 立即市价全平copy_close:跟随交易员平仓manual_close: 手动处理 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "result": true
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 设置结果 true:设置成功 | 
GET / 获取跟单设置
获取针对某个交易员的跟单设置
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/copy-settings
请求示例
GET /api/v5/copytrading/copy-settings?instType=SWAP&uniqueCode=25CD5A80241D6FE6
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "copyAmt": "",
            "copyInstIdType": "copy",
            "copyMgnMode": "isolated",
            "copyMode": "ratio_copy",
            "copyRatio": "1",
            "copyState": "1",
            "copyTotalAmt": "500",
            "instIds": [
                {
                    "enabled": "1",
                    "instId": "ADA-USDT-SWAP"
                },
                {
                    "enabled": "1",
                    "instId": "YFII-USDT-SWAP"
                }
            ],
            "slRatio": "",
            "slTotalAmt": "",
            "subPosCloseType": "copy_close",
            "tpRatio": "",
            "tag": ""
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| copyMode | String | 跟单模式 fixed_amount: 固定金额跟单ratio_copy: 比例跟单 | 
| copyAmt | String | 单笔跟随金额,单位为 USDT | 
| copyRatio | String | 跟单比例 | 
| copyTotalAmt | String | 跟单该交易员投入的最大跟单金额,单位为USDT | 
| tpRatio | String | 单笔止盈百分比,0.1 代表10% | 
| slRatio | String | 单笔止损百分比,0.1 代表10% | 
| copyInstIdType | String | 跟单合约设置的类型 custom: 用户自定义copy: 跟随交易员,自动同步交易员的合约变更 | 
| instIds | Array of objects | 可跟单的合约列表,会返回交易员所有带单合约 | 
| > instId | String | 产品 ID | 
| > enabled | String | 是否在跟单 0: 没有在跟单1: 在跟单 | 
| slTotalAmt | String | 跟单止损总金额,单位为 USDT | 
| subPosCloseType | String | 剩余仓位处理方式 market_close: 立即市价全平copy_close:跟随交易员平仓manual_close: 手动处理 | 
| copyMgnMode | String | 跟单时的保证金模式 cross: 全仓;isolated: 逐仓;copy: 跟随带单员 | 
| ccy | String | 保证金币种 | 
| copyState | String | 当前跟单状态 0: 没在跟单1:在跟单 | 
| tag | String | 订单标签 | 
GET / 获取我的交易员
获取当前跟随的交易员
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/copytrading/current-lead-traders
请求示例
GET /api/v5/copytrading/current-lead-traders?instType=SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "beginCopyTime": "1701224821936",
            "ccy": "USDT",
            "copyTotalAmt": "500",
            "copyTotalPnl": "0",
            "leadMode": "public",
            "margin": "1.89395",
            "nickName": "Trader9527",
            "portLink": "",
            "profitSharingRatio": "0.08",
            "todayPnl": "0",
            "uniqueCode": "25CD5A80241D6FE6",
            "upl": "0"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| portLink | String | 头像 | 
| nickName | String | 昵称 | 
| margin | String | 跟单交易占用的保证金 | 
| copyTotalAmt | String | 跟单员设置的跟单总金额 | 
| copyTotalPnl | String | 跟单总收益 (USDT) | 
| uniqueCode | String | 带单员唯一标识代码 | 
| ccy | String | 保证金币种 | 
| profitSharingRatio | String | 分润比例,0.1 代表 10% | 
| beginCopyTime | String | 跟单开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| upl | String | 未实现盈亏 | 
| todayPnl | String | 今日已实现收益 | 
| leadMode | String | 带单模式 public: 公开模式private: 私域模式 | 
GET / 获取跟单配置信息
公共接口,获取跟单设置时的参数配置信息
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-config
请求示例
GET /api/v5/copytrading/public-config?instType=SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "maxCopyAmt": "1000",
            "maxCopyRatio": "100",
            "maxCopyTotalAmt": "30000",
            "maxSlRatio": "0.75",
            "maxTpRatio": "1.5",
            "minCopyAmt": "20",
            "minCopyRatio": "0.01"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| maxCopyAmt | String | 固定金额跟单时,单笔最大跟随金额 | 
| minCopyAmt | String | 固定金额跟单时,单笔最小跟随金额 | 
| maxCopyTotalAmt | String | 最大跟单金额(针对单个带单员),最小跟单金额同 minCopyAmt | 
| minCopyRatio | String | 比例跟单的单笔最小比率 | 
| maxCopyRatio | String | 比例跟单的单笔最大比率 | 
| maxTpRatio | String | 单笔最大止盈比率,最小为 0 | 
| maxSlRatio | String | 单笔最大止损比率,最小为 0 | 
GET / 获取交易员排名
公共接口,获取交易员排名信息。
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-lead-traders
请求示例
GET /api/v5/copytrading/public-lead-traders?instType=SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| sortType | String | 否 | 排名类型 overview: 综合排序,默认值pnl: 按照交易员收益额排序aum: 按照带单规模排序win_ratio: 胜率pnl_ratio: 收益率current_copy_trader_pnl: 当前跟单人的收益额 | 
| state | String | 否 | 交易员的状态 0: 所有交易员,默认值,包括有空缺和没有空缺1: 有空缺的交易员 | 
| minLeadDays | String | 否 | 最短带单时长 1: 7 天2: 30 天3: 90 天4: 180天 | 
| minAssets | String | 否 | 交易员资产范围的最小值,单位为 USDT | 
| maxAssets | String | 否 | 交易员资产范围的最大值,单位为 USDT | 
| minAum | String | 否 | 带单规模的最小值,单位为 USDT | 
| maxAum | String | 否 | 带单规模的最大值,单位为 USDT | 
| dataVer | String | 否 | 排名数据的版本,14 位数字,如:20231010182400,主要在分页时使用 每10分钟生成一版,仅保留最新的5个版本 默认使用最近的版本;不存在时不会报错,会使用最近的版本。 | 
| page | String | 否 | 查询页数 | 
| limit | String | 否 | 分页返回的结果集数量,最大为 20,不填默认返回 10 条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "dataVer": "20231129213200",
            "ranks": [
                {
                    "accCopyTraderNum": "3536",
                    "aum": "1509265.3238761567721365",
                    "ccy": "USDT",
                    "copyState": "0",
                    "copyTraderNum": "999",
                    "leadDays": "156",
                    "maxCopyTraderNum": "1000",
                    "nickName": "Crypto to the moon",
                    "pnl": "48805.1105999999972258",
                    "pnlRatio": "1.6898",
                    "pnlRatios": [
                        {
                            "beginTs": "1701187200000",
                            "pnlRatio": "1.6744"
                        },
                        {
                            "beginTs": "1700755200000",
                            "pnlRatio": "1.649"
                        }
                    ],
                    "portLink": "https://static.okx.com/cdn/okex/users/headimages/20230624/f49a683aaf5949ea88b01bbc771fb9fc",
                    "traderInsts": [
                        "ICP-USDT-SWAP",
                        "MINA-USDT-SWAP"
                    ],
                    "uniqueCode": "540D011FDACCB47A",
                    "winRatio": "0.6957"
                }
            ],
            "totalPage": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| dataVer | String | 排名数据的版本 | 
| totalPage | String | 总的页数 | 
| ranks | Array of objects | 交易员排名信息 | 
| > aum | String | 带单规模,单位为USDT | 
| > copyState | String | 当前跟单状态 0: 没在跟单1:在跟单 | 
| > maxCopyTraderNum | String | 最大跟单人数 | 
| > copyTraderNum | String | 跟单人数 | 
| > accCopyTraderNum | String | 累计跟单人数 | 
| > portLink | String | 头像 | 
| > nickName | String | 昵称 | 
| > ccy | String | 保证金币种 | 
| > uniqueCode | String | 交易员唯一标识码 | 
| > winRatio | String | 胜率,0.1 代表 10% | 
| > leadDays | String | 带单天数 | 
| > traderInsts | Array of strings | 交易员带单的合约列表 | 
| > pnl | String | 近90日交易员收益,单位为 USDT | 
| > pnlRatio | String | 近90日交易员收益率,0.1 代表 10% | 
| > pnlRatios | Array of objects | 收益率数据 | 
| >> beginTs | String | 当天收益率的开始时间 | 
| >> pnlRatio | String | 当天收益率 | 
GET / 获取交易员收益周表现
公共接口,获取交易员最近12周的收益表现,按时间倒序返回
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-weekly-pnl
请求示例
GET /api/v5/copytrading/public-weekly-pnl?instType=SWAP&uniqueCode=D9ADEAB33AE9EABD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "beginTs": "1701014400000",
            "pnl": "-2.8428",
            "pnlRatio": "-0.0106"
        },
        {
            "beginTs": "1700409600000",
            "pnl": "81.8446",
            "pnlRatio": "0.3036"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| beginTs | String | 当周收益率的开始时间 | 
| pnl | String | 当周收益额 | 
| pnlRatio | String | 当周收益率 | 
GET / 获取交易员收益日表现
公共接口,获取交易员每日的收益表现,按时间倒序返回
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-pnl
请求示例
GET /api/v5/copytrading/public-pnl?instType=SWAP&uniqueCode=D9ADEAB33AE9EABD&lastDays=1
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| lastDays | String | 是 | 最近天数 1: 近 7 天2: 近 30 天3: 近 90 天,4: 近 365 天 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "beginTs": "1701100800000",
            "pnl": "97.3309",
            "pnlRatio": "0.3672"
        },
        {
            "beginTs": "1701014400000",
            "pnl": "96.7755",
            "pnlRatio": "0.3651"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| beginTs | String | 当天开始时间 | 
| pnl | String | 累计收益额 | 
| pnlRatio | String | 累计收益率 | 
GET / 获取交易员带单情况
公共接口,获取交易员带单情况。
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-stats
请求示例
GET /api/v5/copytrading/public-stats?instType=SWAP&uniqueCode=D9ADEAB33AE9EABD&lastDays=1
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| lastDays | String | 是 | 最近天数 1: 近 7 天2: 近 30 天3: 近 90 天,4: 近 365 天 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "avgSubPosNotional": "213.1038",
            "ccy": "USDT",
            "curCopyTraderPnl": "96.8071",
            "investAmt": "265.095252476476294",
            "lossDays": "1",
            "profitDays": "2",
            "winRatio": "0.6667"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| winRatio | String | 胜率 | 
| profitDays | String | 盈利天数 | 
| lossDays | String | 亏损天数 | 
| curCopyTraderPnl | String | 当前跟随者收益 (USDT) | 
| avgSubPosNotional | String | 平均仓位价值 (USDT) | 
| investAmt | String | 带单本金 (USDT) | 
| ccy | String | 保证金币种 | 
GET / 获取交易员币种偏好
公共接口,获取交易员币种偏好,返回结果按 ratio 从大到小排序
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-preference-currency
请求示例
GET /api/v5/copytrading/public-preference-currency?instType=SWAP&uniqueCode=CB4594A3BB5D3538
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "ETH",
            "ratio": "0.8881"
        },
        {
            "ccy": "BTC",
            "ratio": "0.0666"
        },
        {
            "ccy": "YFII",
            "ratio": "0.0453"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种 | 
| ratio | String | 占比,0.1 代表 10% | 
GET / 获取交易员当前带单
公共接口,获取交易员当前带单。
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-current-subpositions
请求示例
GET /api/v5/copytrading/public-current-subpositions?instType=SWAP&uniqueCode=D9ADEAB33AE9EABD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 交易员唯一标识码 | 
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的 subPosId | 
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的 subPosId | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "instId": "ETH-USDT-SWAP",
            "instType": "SWAP",
            "lever": "5",
            "margin": "16.23304",
            "markPx": "2027.31",
            "mgnMode": "isolated",
            "openAvgPx": "2029.13",
            "openTime": "1701144639417",
            "posSide": "short",
            "subPos": "4",
            "subPosId": "649582930998104064",
            "uniqueCode": "D9ADEAB33AE9EABD",
            "upl": "0.0728",
            "uplRatio": "0.0044846806266725"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| subPosId | String | 带单仓位ID | 
| posSide | String | 持仓方向 long:开平仓模式开多 short:开平仓模式开空 net:买卖模式(subPos为正代表开多,subPos为负代表开空) | 
| mgnMode | String | 保证金模式, isolated:逐仓 ;cross:全仓 | 
| lever | String | 杠杆倍数 | 
| openAvgPx | String | 开仓均价 | 
| openTime | String | 开仓时间 | 
| subPos | String | 持仓张数 | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| margin | String | 保证金 | 
| upl | String | 未实现收益 | 
| uplRatio | String | 未实现收益率 | 
| markPx | String | 最新标记价格,仅适用于合约 | 
| uniqueCode | String | 交易员唯一标识代码 | 
| ccy | String | 币种 | 
GET / 获取交易员历史带单
公共接口,获取交易员最近三个月的已经平仓的带单仓位,按照subPosId倒序排序。
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-subpositions-history
请求示例
GET /api/v5/copytrading/public-subpositions-history?instType=SWAP&uniqueCode=9A8534AB09862774
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 交易员唯一标识码 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| after | String | 否 | 请求此id之前(更旧的数据)的分页内容,传的值为对应接口的 subPosId | 
| before | String | 否 | 请求此id之后(更新的数据)的分页内容,传的值为对应接口的 subPosId | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "closeAvgPx": "28385.9",
            "closeTime": "1697709137162",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "lever": "20",
            "margin": "4.245285",
            "mgnMode": "isolated",
            "openAvgPx": "28301.9",
            "openTime": "1697698048031",
            "pnl": "0.252",
            "pnlRatio": "0.05935997229868",
            "posSide": "long",
            "subPos": "3",
            "subPosId": "635126416883355648",
            "uniqueCode": "9A8534AB09862774"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| subPosId | String | 带单仓位ID | 
| posSide | String | 持仓方向 long:开平仓模式开多 short:开平仓模式开空 net:买卖模式(subPos为正代表开多,subPos为负代表开空) | 
| mgnMode | String | 保证金模式, isolated:逐仓 ;cross:全仓 | 
| lever | String | 杠杆倍数 | 
| openAvgPx | String | 开仓均价 | 
| openTime | String | 开仓时间 | 
| subPos | String | 持仓张数 | 
| closeTime | String | 平仓时间(最近一次平仓的时间) | 
| closeAvgPx | String | 平仓均价 | 
| pnl | String | 收益额 | 
| pnlRatio | String | 收益率 | 
| instType | String | 产品类型 SPOT:币币 SWAP:永续合约 | 
| margin | String | 保证金 | 
| ccy | String | 币种 | 
| uniqueCode | String | 交易员唯一标识代码 | 
GET / 获取跟单人信息
公共接口,获取交易员的跟单人信息,按收益从高到低返回
限速:5次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/copytrading/public-copy-traders
请求示例
GET /api/v5/copytrading/public-copy-traders?instType=SWAP&uniqueCode=D9ADEAB33AE9EABD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 否 | 产品类型 SWAP:永续合约,默认值 | 
| uniqueCode | String | 是 | 带单交易员唯一标识码。 数字加字母组合 长度为16位,如:213E8C92DC61EFAC | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "copyTotalPnl": "2060.12242",
            "copyTraderNumChg": "1",
            "copyTraderNumChgRatio": "0.5",
            "copyTraders": [
                {
                    "beginCopyTime": "1686125051000",
                    "nickName": "bre***@gmail.com",
                    "pnl": "1076.77388",
                    "portLink": ""
                },
                {
                    "beginCopyTime": "1698133811000",
                    "nickName": "MrYanDao505",
                    "pnl": "983.34854",
                    "portLink": "https://static.okx.com/cdn/okex/users/headimages/20231010/fd31f45e99fe41f7bb219c0b53ae0ada"
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| copyTotalPnl | String | 跟单员总收益 | 
| ccy | String | 总收益币种名称 | 
| copyTraderNumChg | String | 近 7 日变化的跟单人数 | 
| copyTraderNumChgRatio | String | 近 7 日跟单人数变化的比率 | 
| copyTraders | Array of objects | 跟单员信息 | 
| > beginCopyTime | String | 跟单开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > nickName | String | 昵称 | 
| > portLink | String | 跟单员头像的链接地址 | 
| > pnl | String | 跟单收益 | 
WS / 带单消息通知频道
带单失败时的消息通知
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "copytrading-lead-notification",
        "instType": "SWAP"
    }]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [{
        "channel": "copytrading-lead-notification",
        "instType": "SWAP"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 copytrading-lead-notification | 
| > instType | String | 是 | 产品类型 SWAP:永续合约 | 
| > instId | String | 否 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "copytrading-lead-notification",
        "instType": "SWAP"
    },
    "connId": "aa993428"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"copytrading-lead-notification\", \"instType\" : \"FUTURES\"}]}",
    "connId":"a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 SWAP:永续合约 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket 连接ID | 
推送示例:
{
    "arg": {
        "channel": "copytrading-lead-notification",
        "instType": "SWAP",
        "uid": "525627088439549953"
    },
    "data": [
        {
            "infoType": "2",
            "instId": "",
            "instType": "SWAP",
            "maxLeadTraderNum": "3",
            "minLeadEq": "",
            "posSide": "",
            "side": "",
            "subPosId": "667695035433385984",
            "uniqueCode": "3AF72F63E3EAD701"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > instType | String | 产品类型 | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > infoType | String | 消息类型 1: 带单失败,触发最大仓位限制2: 带单失败,触发带单次数限制3: 带单失败,交易账户 USDT 低于最小权益 | 
| > subPosId | String | 带单仓位 ID | 
| > uniqueCode | String | 交易员唯一标识码 | 
| > instId | String | 产品 ID | 
| > side | String | 订单方向, buysell | 
| > posSide | String | 持仓方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| > maxLeadTraderNum | String | 当前交易员单日最大带单次数 | 
| > minLeadEq | String | 带单最小 USDT 权益 | 
行情数据
行情数据功能模块下的API接口不需要身份验证。
行情数据存在多个服务且每个服务有独立的缓存,每次会随机请求到某一个服务,所以会存在两次请求,第二次获取到的数据早于第一次的情况。
GET / 获取所有产品行情信息
获取产品行情信息。在提前挂单阶段,best ask的价格有机会低于best bid。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/tickers
请求示例
GET /api/v5/market/tickers?instType=SWAP
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取所有产品行情信息
result = marketDataAPI.get_tickers(
    instType="SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权,如BTC-USD | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     {
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "last":"9999.99",
        "lastSz":"1",
        "askPx":"9999.99",
        "askSz":"11",
        "bidPx":"8888.88",
        "bidSz":"5",
        "open24h":"9000",
        "high24h":"10000",
        "low24h":"8888.88",
        "volCcy24h":"2222",
        "vol24h":"2222",
        "sodUtc0":"0.1",
        "sodUtc8":"0.1",
        "ts":"1597026383085"
     },
     {
        "instType":"SWAP",
        "instId":"BTC-USD-SWAP",
        "last":"9999.99",
        "lastSz":"1",
        "askPx":"9999.99",
        "askSz":"11",
        "bidPx":"8888.88",
        "bidSz":"5",
        "open24h":"9000",
        "high24h":"10000",
        "low24h":"8888.88",
        "volCcy24h":"2222",
        "vol24h":"2222",
        "sodUtc0":"0.1",
        "sodUtc8":"0.1",
        "ts":"1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| 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小时成交量,以 币为单位如果是 衍生品合约,数值为交易货币的数量。比如,对于 BTC-USD-SWAP 和 BTC-USDT-SWAP,单位均为 BTC如果是 币币/币币杠杆,数值为计价货币的数量。 | 
| vol24h | String | 24小时成交量,以 张为单位如果是 衍生品合约,数值为合约的张数。如果是 币币/币币杠杆,数值为交易货币的数量。 | 
| sodUtc0 | String | UTC 0 时开盘价 | 
| sodUtc8 | String | UTC+8 时开盘价 | 
| ts | String | ticker数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
GET / 获取单个产品行情信息
获取产品行情信息。在提前挂单阶段,best ask的价格有机会低于best bid。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/ticker
请求示例
GET /api/v5/market/ticker?instId=BTC-USD-SWAP
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取单个产品行情信息
result = marketDataAPI.get_ticker(
    instId="BTC-USD-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-SWAP | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instType": "SWAP",
            "instId": "BTC-USD-SWAP",
            "last": "56956.1",
            "lastSz": "3",
            "askPx": "56959.1",
            "askSz": "10582",
            "bidPx": "56959",
            "bidSz": "4552",
            "open24h": "55926",
            "high24h": "57641.1",
            "low24h": "54570.1",
            "volCcy24h": "81137.755",
            "vol24h": "46258703",
            "ts": "1620289117764",
            "sodUtc0": "55926",
            "sodUtc8": "55926"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| 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 / 获取产品深度
获取产品深度列表,数据每 50 毫秒更新一次。在提前挂单阶段,best ask的价格有机会低于best bid。
该接口收到请求后不会立刻返回,而是会待服务端缓存数据更新后立即返回最新数据。
限速:40次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/books
请求示例
GET /api/v5/market/books?instId=BTC-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取产品深度
result = marketDataAPI.get_orderbook(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| 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 of Arrays | 卖方深度 | 
| bids | Array of Arrays | 买方深度 | 
| ts | String | 深度产生的时间 | 
GET / 获取产品完整深度
获取产品深度列表。数据每秒更新一次。在提前挂单阶段,best ask的价格有机会低于best bid。
该接口收到请求后不会立刻返回,而是会待服务端缓存数据更新后立即返回最新数据。
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/books-full
请求示例
GET /api/v5/market/books-full?instId=BTC-USDT&sz=20
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| 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 of Arrays | 卖方深度 | 
| bids | Array of Arrays | 买方深度 | 
| 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-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取交易产品K线数据
result = marketDataAPI.get_candlesticks(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| bar | String | 否 | 时间粒度,默认值 1m如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC+0开盘价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-USDT和BTC-USDT-SWAP,单位均是USDT。BTC-USD-SWAP单位是USD。 | 
| 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-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取交易产品历史K线数据
result = marketDataAPI.get_history_candlesticks(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值 1m如 [1s/1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC+0开盘价k线:[6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc] | 
| limit | String | 否 | 分页返回的结果集数量,最大为300,不填默认返回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-USDT和BTC-USDT-SWAP,单位均是USDTBTC-USD-SWAP单位是USD | 
| confirm | String | K线状态 0:K线未完结1:K线已完结 | 
GET / 获取交易产品公共成交数据
查询市场上的成交信息数据
限速:100次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/trades
请求示例
GET /api/v5/market/trades?instId=BTC-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取交易产品公共成交数据
result = marketDataAPI.get_trades(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| limit | String | 否 | 分页返回的结果集数量,最大为500,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instId": "BTC-USDT",
            "side": "sell",
            "sz": "0.00001",
            "source": "0",
            "px": "29963.2",
            "tradeId": "242720720",
            "ts": "1654161646974"
        },
        {
            "instId": "BTC-USDT",
            "side": "sell",
            "sz": "0.00001",
            "source": "0",
            "px": "29964.1",
            "tradeId": "242720719",
            "ts": "1654161641568"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| tradeId | String | 成交ID | 
| px | String | 成交价格 | 
| sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| side | String | 吃单方向 buy:买sell:卖 | 
| source | String | 订单来源 0:普通订单 | 
| ts | String | 成交时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
GET / 获取交易产品公共历史成交数据
查询市场上的成交信息数据,可以分页获取最近3个月的数据。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/history-trades
请求示例
GET /api/v5/market/history-trades?instId=BTC-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取交易产品公共历史成交数据
result = marketDataAPI.get_history_trades(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
| type | String | 否 | 分页类型 1:tradeId 分页2:时间戳分页默认为 1:tradeId 分页 | 
| after | String | 否 | 请求此 ID 或 ts 之前的分页内容,传的值为对应接口的 tradeId 或 ts | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 tradeId。 不支持时间戳分页。单独使用时,会返回最新的数据。 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instId": "BTC-USDT",
            "side": "sell",
            "sz": "0.00001",
            "source": "0",
            "px": "29963.2",
            "tradeId": "242720720",
            "ts": "1654161646974"
        },
        {
            "instId": "BTC-USDT",
            "side": "sell",
            "sz": "0.00001",
            "source": "0",
            "px": "29964.1",
            "tradeId": "242720719",
            "ts": "1654161641568"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| tradeId | String | 成交ID | 
| px | String | 成交价格 | 
| sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| side | String | 吃单方向 buy:买sell:卖 | 
| source | String | 订单来源 0:普通订单 | 
| ts | String | 成交时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
GET / 获取期权品种公共成交数据
查询期权同一个交易品种下的成交信息数据,最多返回100条。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/option/instrument-family-trades
请求示例
GET /api/v5/market/option/instrument-family-trades?instFamily=BTC-USD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instFamily | String | 是 | 交易品种,如 BTC-USD,适用于期权 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "vol24h": "103381",
            "tradeInfo": [
                {
                    "instId": "BTC-USD-221111-17750-C",
                    "side": "sell",
                    "sz": "1",
                    "px": "0.0075",
                    "tradeId": "20",
                    "ts": "1668090715058"
                },
                {
                    "instId": "BTC-USD-221111-17750-C",
                    "side": "sell",
                    "sz": "91",
                    "px": "0.01",
                    "tradeId": "19",
                    "ts": "1668090421062"
                }
            ],
            "optType": "C"
        },
        {
            "vol24h": "144499",
            "tradeInfo": [
                {
                    "instId": "BTC-USD-230127-10000-P",
                    "side": "sell",
                    "sz": "82",
                    "px": "0.019",
                    "tradeId": "23",
                    "ts": "1668090967057"
                },
                {
                    "instId": "BTC-USD-221111-16250-P",
                    "side": "sell",
                    "sz": "102",
                    "px": "0.0045",
                    "tradeId": "24",
                    "ts": "1668090885050"
                }
            ],
            "optType": "P"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| vol24h | String | 24小时成交量,以张为单位 | 
| optType | String | 期权类型, C:看涨期权P:看跌期权 | 
| tradeInfo | Array of objects | 成交数据列表 | 
| > instId | String | 产品ID | 
| > tradeId | String | 成交ID | 
| > px | String | 成交价格 | 
| > sz | String | 成交数量,单位为张。 | 
| > side | String | 成交方向 buy:买sell:卖 | 
| > ts | String | 成交时间,Unix时间戳的毫秒数格式, 如1597026383085 | 
GET / 获取期权公共成交数据
最多返回最近的100条成交数据
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/option-trades
请求示例
GET /api/v5/public/option-trades?instFamily=BTC-USD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 可选 | 产品ID,如 BTC-USD-221230-4000-C, instId和instFamily必须传一个,若传两个,以instId为主 | 
| instFamily | String | 可选 | 交易品种,如 BTC-USD | 
| optType | String | 否 | 期权类型, C:看涨期权P:看跌期权 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fillVol": "0.24415013671875",
            "fwdPx": "16676.907614127158",
            "idxPx": "16667",
            "instFamily": "BTC-USD",
            "instId": "BTC-USD-221230-16600-P",
            "markPx": "0.006308943261227884",
            "optType": "P",
            "px": "0.005",
            "side": "sell",
            "sz": "30",
            "tradeId": "65",
            "ts": "1672225112048"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| instFamily | String | 交易品种 | 
| tradeId | String | 成交ID | 
| px | String | 成交价格 | 
| sz | String | 成交数量。单位为张。 | 
| side | String | 成交方向 buy:买sell:卖 | 
| optType | String | 期权类型,C:看涨期权 P:看跌期权 ,仅适用于期权 | 
| fillVol | String | 成交时的隐含波动率(对应成交价格) | 
| fwdPx | String | 成交时的远期价格 | 
| idxPx | String | 成交时的指数价格 | 
| markPx | String | 成交时的标记价格 | 
| 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
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取平台24小时总成交量
result = marketDataAPI.get_volume()
print(result)
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     {
         "volCny": "230900886396766",
         "volUsd": "34462818865189",
         "ts": "1657856040389"
     }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| volUsd | String | 订单簿交易近24小时总成交量,以美元为单位 | 
| volCny | String | 订单簿交易近24小时总成交量,以人民币为单位 | 
| ts | String | 接口返回数据时间 | 
GET / 集合竞价信息
获取集合竞价相关信息
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/call-auction-details
请求示例
GET /api/v5/market/call-auction-details?instId=ONDO-USDC
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instId": "ONDO-USDC",
            "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小时交易量等信息。在提前挂单阶段,best ask的价格有机会低于best bid。
最快100ms推送一次,没有触发事件时不推送,触发推送的事件有:成交、买一卖一发生变动。
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "tickers",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "tickers",
        "instId": "BTC-USDT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 tickers | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "tickers",
        "instId": "BTC-USDT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"tickers\", \"instId\" : \"LTC-USD-200327\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "tickers",
        "instId": "BTC-USDT"
    },
    "data": [{
        "instType": "SPOT",
        "instId": "BTC-USDT",
        "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 of objects | 订阅的数据 | 
| > 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
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "candle1D",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "candle1D",
          "instId": "BTC-USDT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 candle3Mcandle1Mcandle1Wcandle1Dcandle2Dcandle3Dcandle5Dcandle12Hcandle6Hcandle4Hcandle2Hcandle1Hcandle30mcandle15mcandle5mcandle3mcandle1mcandle1scandle3Mutccandle1Mutccandle1Wutccandle1Dutccandle2Dutccandle3Dutccandle5Dutccandle12Hutccandle6Hutc | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
  "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "candle1D",
        "instId": "BTC-USDT"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"candle1D\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "candle1D",
    "instId": "BTC-USDT"
  },
  "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 of Arrays | 订阅的数据 | 
| > ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > o | String | 开盘价格 | 
| > h | String | 最高价格 | 
| > l | String | 最低价格 | 
| > c | String | 收盘价格 | 
| > vol | String | 交易量,以 张为单位如果是 衍生品合约,数值为合约的张数。如果是 币币/币币杠杆,数值为交易货币的数量。 | 
| > volCcy | String | 交易量,以 币为单位如果是 衍生品合约,数值为交易货币的数量。如果是 币币/币币杠杆,数值为计价货币的数量。 | 
| > volCcyQuote | String | 交易量,以计价货币为单位 如 BTC-USDT和BTC-USDT-SWAP单位均是USDT。BTC-USD-SWAP单位是USD。 | 
| > confirm | String | K线状态 0:K线未完结1:K线已完结 | 
WS / 交易频道
获取最近的成交数据,有成交数据就推送,每次推送可能聚合多条成交数据。
根据每个taker订单的不同成交价格推送消息,并使用count字段表示聚合的订单匹配数量。
URL Path
/ws/v5/public
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "trades",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "trades",
          "instId": "BTC-USDT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 trades | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
  "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "trades",
        "instId": "BTC-USDT"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"trades\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "trades",
    "instId": "BTC-USDT"
  },
  "data": [
    {
      "instId": "BTC-USDT",
      "tradeId": "130639474",
      "px": "42219.9",
      "sz": "0.12060306",
      "side": "buy",
      "ts": "1630048897897",
      "count": "3",
      "source": "0",
      "seqId": 1234
    }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID,如 BTC-USDT | 
| > tradeId | String | 聚合的多笔交易中最新一笔交易的成交ID | 
| > px | String | 成交价格 | 
| > sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| > side | String | 吃单方向 buysell | 
| > ts | String | 成交时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > count | String | 聚合的订单匹配数量 | 
| > source | String | 订单来源 0:普通订单 | 
| > seqId | Integer | 推送的序列号 | 
WS / 全部交易频道
获取最近的成交数据,有成交数据就推送,每次推送仅包含一条成交数据。
URL Path
/ws/v5/business
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "trades-all",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "trades-all",
          "instId": "BTC-USDT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 trades-all | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
  "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "trades-all",
        "instId": "BTC-USDT"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"trades-all\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "trades-all",
    "instId": "BTC-USDT"
  },
  "data": [
    {
      "instId": "BTC-USDT",
      "tradeId": "130639474",
      "px": "42219.9",
      "sz": "0.12060306",
      "side": "buy",
      "source": "0",
      "ts": "1630048897897"
    }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Array of objects | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID,如 BTC-USDT | 
| > tradeId | String | 成交ID | 
| > px | String | 成交价格 | 
| > sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| > side | String | 成交方向 buysell | 
| > source | String | 订单来源 0:普通订单 | 
| > ts | String | 成交时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
WS / 深度频道
获取深度数据。在提前挂单阶段,best ask的价格有机会低于best bid。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
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "books",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
      {
        "channel": "books",
        "instId": "BTC-USDT"
      }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 booksbooks5bbo-tbtbooks-l2-tbtbooks50-l2-tbt | 
| > instId | String | 是 | 产品ID | 
返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "books",
        "instId": "BTC-USDT"
    },
    "connId": "a4d3ae55"
}
失败示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"books\", \"instId\" : \"BTC-USD-191227\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| msg | String | 否 | 错误消息 | 
| code | String | 否 | 错误码 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例 :全量
{
    "arg": {
        "channel": "books",
        "instId": "BTC-USDT"
    },
    "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-USDT"
    },
    "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 of objects | 订阅的数据 | 
| > asks | Array of Arrays | 卖方深度 | 
| > bids | Array of Arrays | 买方深度 | 
| > 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. 如果一段时间内(约 60 秒)没有深度更新,对于定量推送频道,OKX 会推送最近的一条更新,对于增量推送频道,OKX将发一条消息'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-USDT-SWAP"
  },
  "data": [
    {
      "asks": [
        [
          "111.06","55154","0","2"
        ]
      ],
      "bids": [
        [
          "111.05","57745","0","2"
        ]
      ],
      "ts": "1670324386802",
      "seqId": 363996337
    }
  ]
}
books5 频道推送示例
{
  "arg": {
    "channel": "books5",
    "instId": "BCH-USDT-SWAP"
  },
  "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-USDT-SWAP",
      "ts": "1670324386802",
      "seqId": 363996337
    }
  ]
}
WS / 期权公共成交频道
获取最近的期权成交数据,有成交数据就推送,每次推送仅包含一条成交数据。
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "option-trades",
        "instType": "OPTION",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "option-trades",
        "instType": "OPTION",
        "instFamily": "BTC-USD"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 option-trades | 
| > instType | String | 是 | 产品类型, OPTION:期权 | 
| > instId | String | 可选 | 产品ID,如 BTC-USD-221230-4000-C, instId和instFamily必须传一个,若传两个,以instId为主 | 
| > instFamily | String | 可选 | 交易品种,如 BTC-USD | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "option-trades",
        "instType": "OPTION",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"option-trades\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "option-trades",
        "instType": "OPTION",
        "instFamily": "BTC-USD"
    },
    "data": [
        {
            "fillVol": "0.5066007836914062",
            "fwdPx": "16469.69928595038",
            "idxPx": "16537.2",
            "instFamily": "BTC-USD",
            "instId": "BTC-USD-230224-18000-C",
            "markPx": "0.04690107010619562",
            "optType": "C",
            "px": "0.045",
            "side": "sell",
            "sz": "2",
            "tradeId": "38",
            "ts": "1672286551080"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID | 
| > instFamily | String | 交易品种 | 
| > tradeId | String | 成交ID | 
| > px | String | 成交价格 | 
| > sz | String | 成交数量,单位为张。 | 
| > side | String | 成交方向 buy:买sell:卖 | 
| > optType | String | 期权类型,C:看涨期权 P:看跌期权 ,仅适用于期权 | 
| > fillVol | String | 成交时的隐含波动率(对应成交价格) | 
| > fwdPx | String | 成交时的远期价格 | 
| > idxPx | String | 成交时的指数价格 | 
| > markPx | String | 成交时的标记价格 | 
| > ts | String | 成交时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
WS / 集合竞价信息频道
获取集合竞价相关信息
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "call-auction-details",
        "instId": "ONDO-USDC"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "call-auction-details",
        "instId": "ONDO-USDC"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 call-auction-details | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
      "channel": "call-auction-details",
      "instId": "ONDO-USDC"
    },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"call-auction-details\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "call-auction-details",
    "instId": "ONDO-USDC"
  },
  "data": [
        {
            "instId": "ONDO-USDC",
            "unmatchedSz": "9988764",
            "eqPx": "0.6",
            "matchedSz": "44978",
            "state": "continuous_trading",
            "auctionEndTime": "1726542000000",
            "ts": "1726542000007"
        }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID | 
| > eqPx | String | 均衡价格 | 
| > matchedSz | String | 买卖双边的匹配数量,单位为交易货币 | 
| > unmatchedSz | String | 未匹配数量 | 
| > auctionEndTime | String | 集合竞价结束时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > state | String | 交易状态 call_auction:集合竞价continuous_trading:连续交易 | 
| > ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
大宗交易
大宗交易工作流程
大宗交易时指在非公开市场进行的、私下议定的、满足规定最小交易手数的期货、期权、交割、永续或混合产品的大单交易。 交易细节一经确认,此笔交易会被提交到OKX以进行保证金计算,清算和执行。
基本概念
- 询价单(RFQs) - 询价单,由询价方发给报价方. 询价单包括询价方希望交易的一种或多种产品及其数量。
- 报价单 - 报价单,由报价方发给询价方对询价单的报价。
- 交易 - 当询价方接受并执行报价方的报价单,一笔交易就由此产生。
基本工作流程
要以询价方或报价方身份进行交易,用户需要在交易账户中存入至少100,000美元。 此外,要成为报价方请填写表格以访问大宗交易.
- 询价方创建一个询价单(RFQ),并选择希望收到此询价单的报价方。
- 不同报价方发送报价单回应此询价单。
- 询价方选择执行最好的报价单产生交易。OKX收到此笔交易并做结算。
- 询价方和报价方收到交易执行的确认。
- 交易详情发布在公共市场数据频道上(不包含交易方信息)。
询价方角度
- 询价方使用POST /api/v5/rfq/create-rfq创建询价单。询价方可通过GET /api/v5/public/instruments查询可询价产品信息,并通过GET /api/v5/rfq/counterparties查询可选择报价方信息。
- 询价方可以在询价单有效的任何时候通过POST /api/v5/rfq/cancel-rfq取消询价单。
- 报价方,如果是询价方选择的报价方之一,会在rfqs推送频道收到询价单信息,并可作出相应报价。
- 询价方,在quotes推送频道收到报价信息后,可以选择最优报价并通过POST /api/v5/rfq/execute-quote执行。
- 询价方会在struc-block-trades和rfqs推送频道收到交易成功执行确认。
- 询价方也会在public-struc-block-trades推送频道收到此笔交易以及其他OKX大宗交易的确认信息。
报价方角度
- 当有一个新的询价单发出,并且报价方是被选择的报价方之一时,报价方会在rfqs推送频道接收到此询价单信息。
- 报价方创建一个单向或者双向的报价单并通过POST /api/v5/rfq/create-quote发出。
- 报价方可以通过POST /api/v5/rfq/cancel-quote任意取消一个有效的报价单。
- 询价方选择执行最优报价单。
- 报价方通过quotes推送频道接收他们报价单的状态更新。
- 报价方会在struc-block-trades和quotes推送频道收到他们报价单的交易成功执行确认。
- 报价方也会在public-struc-block-trades推送频道收到此笔交易以及其他OKX大宗交易的确认信息。
REST API
获取报价方信息
查询可以参与交易的报价方信息。
限速: 5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/rfq/counterparties
请求示例
GET /api/v5/rfq/counterparties
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取报价方信息
result = blockTradingAPI.counterparties()
print(result)
请求参数
无
响应示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "traderName" : "Satoshi Nakamoto",
            "traderCode" : "SATOSHI",
            "type" : "" 
        }
    ]
}
响应参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| traderName | String | 报价方名称 | 
| traderCode | String | 报价方唯一标识代码,公开可见;报价和询价的相关接口都使用该代码代表报价方。 | 
| type | String | 报价方类型。 LP指通过API连接的自动做市商。 | 
询价
创建一个询价单。
了解更多,请访问帮助中心 > 常见问题 > 交易 > 流动性市场 > 模拟交易
限速: 5次/2s;80次/12h
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/create-rfq
请求示例
POST /api/v5/rfq/create-rfq
{
    "anonymous": true,
    "counterparties":[
        "Trader1",
        "Trader2"
    ],
    "allowPartialExecution":false,
    "clRfqId":"rfq01",
    "tag":"123456",
    "legs":[
        {
            "sz":"25",
            "side":"buy",
            "posSide": "long",
            "tdMode":"cross",
            "ccy":"USDT",
            "instId":"BTC-USD-221208-100000-C"
        },
        {
            "sz":"150",
            "side":"buy",
            "posSide": "long",
            "tdMode":"cross",
            "ccy":"USDT",
            "instId":"ETH-USDT",
            "tgtCcy":"base_ccy"
        }
    ]
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 询价
result = blockTradingAPI.create_rfq(
    anonymous=True,
    counterparties=[
        "Trader1",
        "Trader2"
    ],
    clRfqId= "rfq01",
    legs=[
        {
            "sz":"25",
            "side":"buy",
            "posSide": "long",
            "tdMode":"cross",
            "ccy":"USDT",
            "instId":"BTC-USD-221208-100000-C"
        },
        {
            "sz":"150",
            "side":"buy",
            "posSide": "long",
            "tdMode":"cross",
            "ccy":"USDT",
            "instId":"ETH-USDT",
            "tgtCcy":"base_ccy"
        }
    ]
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| counterparties | Array of strings | 是 | 希望收到询价的报价方列表,可通过 /api/v5/rfq/counterparties/获取。 | 
| anonymous | Boolean | 否 | 是否匿名询价, true表示匿名询价,false表示公开询价,默认值为false,为true时,即使在交易执行之后,身份也不会透露给报价方。 | 
| clRfqId | String | 否 | 询价单自定义ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 询价单标签,与此询价单关联的大宗交易将有相同的标签。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| allowPartialExecution | Boolean | 否 | RFQ是否可以被部分执行,如果腿的比例和原RFQ一致。有效值为 true或false。默认为false。 | 
| legs | Array of objects | 是 | 组合交易,每次最多可以提交15组交易信息 | 
| > instId | String | 是 | 产品ID | 
| > tdMode | String | 否 | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权:isolated其他情况: cross | 
| > ccy | String | 否 | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| > sz | String | 是 | 委托数量 | 
| > lmtPx | String | 否 | 询价方期望的报价价格 若提供了该字段,在报价价格优于或等于所指定价格,询价将自动被执行,直到该询价单被取消或过期为止。 该字段必须提供所有组合交易的价格,以便自动执行询价;或者对所有组合交易留空,否则请求将被拒绝。 自动执行的方向取决于询价单的腿方向。 对于 币币/币币杠杆/交割/永续,lmtPx将以计价货币单位计算。对于 期权,lmtPx将以结算货币单位计算。该字段不会被披露给交易对手方。 | 
| > side | String | 是 | 询价单方向 | 
| > posSide | String | 否 | 持仓方向 买卖模式下默认为 net。在开平仓模式下仅可选择long或short。如未指定,则处于开平仓模式下的用户始终会开新仓位。 仅适用交割、永续。 | 
| > tgtCcy | String | 否 | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| > tradeQuoteCcy | String | 否 | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
| acctAlloc | Array of objects | No | 组合询价单的账户分配 | 
| > acct | String | Yes | 账户名 | 
| > legs | Array of objects | Yes | 组合交易 | 
| >> sz | String | Yes | 委托数量 | 
| >> instId | String | Yes | 产品ID | 
| >> tdMode | String | No | 交易模式 | 
| >> ccy | String | No | 保证金币种 | 
| >> posSide | String | No | 持仓方向 | 
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "cTime":"1611033737572",
            "uTime":"1611033737572",
            "traderCode":"SATOSHI",
            "tag":"123456",
            "rfqId":"22534",
            "clRfqId":"rfq01",
            "allowPartialExecution":false,
            "state":"active",
            "validUntil":"1611033857557",
            "counterparties":[
                "Trader1",
                "Trader2"
            ],
            "legs":[
                {
                    "instId":"BTC-USD-221208-100000-C",
                    "sz":"25",
                    "side":"buy",
                    "posSide": "long",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "tgtCcy":""
                },
                {
                    "instId":"ETH-USDT",
                    "sz":"150",
                    "side":"buy",
                    "posSide": "long",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "tgtCcy":"base_ccy",
                    "tradeQuoteCcy": "USDT"
                }
            ]
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 询价单结果 | 
| > cTime | String | 询价单创建时间,Unix时间戳的毫秒数格式。 | 
| > uTime | String | 询价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 询价单的状态 有效值为 activecanceledpending_fillfilledexpiredtraded_awayfailedtraded_away仅适用于报价方 | 
| > counterparties | Array of strings | 报价方列表 | 
| > validUntil | String | 询价单的过期时间,Unix时间戳的毫秒数格式。 若所有腿都为期权,则询价单将在10分钟后过期;其他情况,询价单将在2分钟后过期。 | 
| > clRfqId | String | 询价单自定义ID,为客户端敏感信息,不会公开,对报价方返回""。 | 
| > tag | String | RFQ标签,与此RFQ关联的大宗交易将有相同的标签。 | 
| > allowPartialExecution | Boolean | RFQ是否可以被部分执行,如果腿的比例和原RFQ一致。有效值为 true或false。未指定时,默认为false。 | 
| > traderCode | String | 询价方唯一标识代码。 | 
| > rfqId | String | 询价单ID | 
| > legs | Array of objects | 组合交易,每个请求最多可放置15条腿 | 
| >> instId | String | 产品ID,如 "BTC-USDT-SWAP" | 
| >> tdMode | String | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权:isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> side | String | 询价单方向 有效值为 buy和sell。 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 | 
| >> acct | String | 账户名 | 
| >> sCode | String | 事件执行结果的code,0代表成功 | 
| >> sMsg | String | 事件执行失败或成功时的msg | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 委托数量 | 
| >>> tdMode | String | 交易模式 | 
| >>> ccy | String | 保证金币种 | 
| >>> posSide | String | 持仓方向 | 
取消询价单
取消一个询价单。
限速: 5次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-rfq
请求示例
POST /api/v5/rfq/cancel-rfq
{
    "rfqId":"22535",
    "clRfqId":"rfq001"
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 取消询价单
result = blockTradingAPI.cancel_rfq(
    rfqId="22535",
    clRfqId="rfq001"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 可选 | 询价单ID | 
| clRfqId | String | 可选 | 询价单自定义ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 当 clRfqId 和 rfqId 都传时,以 rfqId 为准。 | 
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "rfqId":"22535",
            "clRfqId":"rfq001",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > rfqId | String | RFQ ID | 
| > clRfqId | String | 由用户设置的 RFQ ID | 
| > sCode | String | 事件执行结果的code,0代表成功 | 
| > sMsg | String | 事件执行失败时的msg | 
批量取消询价单
取消一个或多个询价单,每次最多可以撤销100个询价单。
限速: 2次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-batch-rfqs
请求示例
POST /api/v5/rfq/cancel-batch-rfqs
{
    "rfqIds":[
        "2201",
        "2202",
        "2203"
    ],
    "clRfqIds":[
        "r1",
        "r2",
        "r3"
    ]
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 批量取消询价单
result = blockTradingAPI.cancel_batch_rfqs(
    rfqIds=[
        "2201",
        "2202",
        "2203"
    ],
    clRfqIds=[
        "r1",
        "r2",
        "r3"
    ],
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqIds | Array of strings | 可选 | 询价单IDs | 
| clRfqIds | Array of strings | 可选 | 询价单自定义ID,当 clRfqIds 和 rfqIds 都传时,以 rfqIds 为准。 | 
全部成功示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "rfqId":"2201",
            "clRfqId":"r1",
            "sCode":"0",
            "sMsg":""
        },
        {
            "rfqId":"2202",
            "clRfqId":"r2",
            "sCode":"0",
            "sMsg":""
        },
        {
            "rfqId":"2203",
            "clRfqId":"r3",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
部分成功示例
{
    "code":"2",
    "msg":"Bulk operation partially ",
    "data":[
        {
            "rfqId":"2201",
            "clRfqId":"r1",
            "sCode":"70000",
            "sMsg":"RFQ does not exist."
        },
        {
            "rfqId":"2202",
            "clRfqId":"r2",
            "sCode":"0",
            "sMsg":""
        },
        {
            "rfqId":"2203",
            "clRfqId":"r3",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
失败示例
{
    "code":"1",
    "msg":"Operation failed.",
    "data":[
        {
            "rfqId":"2201",
            "clRfqId":"r1",
            "sCode":"70000",
            "sMsg":"RFQ does not exist."
        },
        {
            "rfqId":"2202",
            "clRfqId":"r2",
            "sCode":"70000",
            "sMsg":"RFQ does not exist."
        },
        {
            "rfqId":"2203",
            "clRfqId":"r3",
            "sCode":"70000",
            "sMsg":"RFQ does not exist."
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID. | 
| > sCode | String | 事件执行结果的code,0代表成功 | 
| > sMsg | String | 事件执行失败时的msg | 
取消所有询价单
取消所有询价单
限速: 2次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-all-rfqs
请求示例
POST /api/v5/rfq/cancel-all-rfqs
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 取消所有询价单
result = blockTradingAPI.cancel_all_rfqs()
print(result)
请求参数
无
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ts":"1697026383085"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > ts | String | 成功取消时间,Unix时间戳的毫秒数格式,如 1597026383085。 | 
执行报价
执行报价,仅限询价的创建者使用
限速: 2次/3s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/execute-quote
请求示例
{
    "rfqId":"22540",
    "quoteId":"84073",
    "legs": [
        {
            "sz":"25",
            "instId":"BTC-USD-20220114-13250-C"
        },
        {
            "sz":"25",
            "instId":"BTC-USDT"
        }
    ]
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 执行报价
result = blockTradingAPI.execute_quote(
    rfqId="22540",
    quoteId="84073"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 是 | 询价单ID | 
| quoteId | String | 是 | 报价单ID | 
| legs | Array of objects | 否 | 用于部分执行的腿的数量。腿的数量比例必须与原RFQ相同。注意:每条腿的 tgtCcy和side和原RFQ一致,px和对应Quote一致。 | 
| > instId | String | 是 | 产品ID, 如 "BTC-USDT-SWAP". | 
| > sz | String | 是 | 该条腿的部分执行数量 | 
响应示例
{  
   "code":"0",
   "msg":"",
   "data":[
       {
            "blockTdId":"180184",
            "rfqId":"1419",
            "clRfqId":"r0001",
            "quoteId":"1046",
            "clQuoteId":"q0001",
            "tag":"123456",
            "tTraderCode":"Trader1",
            "mTraderCode":"Trader2",
            "cTime":"1649670009",
            "legs":[
                {
                    "px":"43000",
                    "sz":"25",
                    "instId":"BTC-USD-20220114-13250-C",
                    "side":"sell",
                    "fee":"-1.001",
                    "feeCcy":"BTC",
                    "tradeId":"10211"
                },
                {
                    "px":"42800",
                    "sz":"25",
                    "instId":"BTC-USDT",
                    "side":"buy",
                    "fee":"-1.001",
                    "feeCcy":"BTC",
                    "tradeId":"10212"
                }
            ]
        }
   ]
}
响应参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > cTime | String | 交易执行的时间,Unix时间戳的毫秒数格式。 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID,为客户敏感信息,不会公开,对询价方返回""。 | 
| > blockTdId | String | 大宗交易ID | 
| > tag | String | 询价单标签 | 
| > tTraderCode | String | 询价价方唯一标识代码。询价时 anonymous 设置为 true时不可见。 | 
| > mTraderCode | String | 报价方唯一标识代码。 报价时 anonymous 设置为 true时不可见。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> px | String | 成交价格 | 
| >> sz | String | 成交数量 | 
| >> side | String | 询价单方向, buy或者sell。 | 
| >> fee | String | 手续费,正数代表平台返佣 ,负数代表平台扣除 | 
| >> feeCcy | String | 手续费币种 | 
| >> tradeId | String | 最新的成交Id. | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 | 
| >> acct | String | 账户名 | 
| >> blockTdId | String | 大宗交易ID | 
| >> sCode | String | 事件执行结果的code,0代表成功 | 
| >> sMsg | String | 事件执行失败或成功时的msg | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 成交数量 | 
| >>> fee | String | 手续费 | 
| >>> feeCcy | String | 手续费币种 | 
| >>> tradeId | String | 最新的成交ID | 
获取可报价产品
用于maker查询特定的接受询价和报价的产品, 以及数量和价格范围。
限速: 5次/2s
限速规则:User ID
权限:读取
HTTP Requests
GET /api/v5/rfq/maker-instrument-settings
请求示例
GET /api/v5/rfq/maker-instrument-settings
请求参数
无
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instType": "OPTION",
            "includeAll": true,
            "data": [
                {
                    "instFamily": "BTC-USD",
                    "maxBlockSz": "10000",
                    "makerPxBand": "5"
                },
                {
                    "instFamily": "SOL-USD",
                    "maxBlockSz": "100000",
                    "makerPxBand": "15"
                }
            ]
        },
        {
            "instType": "FUTURES",
            "includeAll": false,
            "data": [
                {
                    "instFamily": "BTC-USD",
                    "maxBlockSz": "10000",
                    "makerPxBand": "5"
                },
                {
                    "instFamily": "ETH-USDT",
                    "maxBlockSz": "100000",
                    "makerPxBand": "15"
                }
            ]
        },
        {
            "instType:": "SWAP",
            "includeAll": false,
            "data": [
                {
                    "instFamily": "BTC-USD",
                    "maxBlockSz": "10000",
                    "makerPxBand": "5"
                },
                {
                    "instFamily": "ETH-USDT"
                }
            ]
        },
        {
            "instType:": "SPOT",
            "includeAll": false,
            "data": [
                {
                    "instId": "BTC-USDT"
                },
                {
                    "instId": "TRX-USDT"
                }
            ]
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,如果代码不为 0,则不为空 | 
| data | Array of objects | 请求返回值,包含请求结果 | 
| > instType | String | 产品类别,枚举值包括 FUTURES,OPTION,SWAP和SPOT | 
| > includeAll | Boolean | 是否接收该instType下所有产品。有效值为 true或false。默认false。 | 
| > data | Array of objects | instType的元素 | 
| >> instFamily | String | 交易品种 交割/永续/期权情况下必填 | 
| >> instId | String | 产品ID,如 BTC-USDT。对SPOT产品类别有效且必须。 | 
| >> maxBlockSz | String | 该种产品最大可交易数量。FUTURES, OPTION and SWAP 的单位是合约数量。SPOT的单位是交易货币。 | 
| >> makerPxBand | String | 价格限制以价格精度tick为单位,以标记价格为基准。 设置makerPxBand为1个tick代表: 如果买一价 > 标记价格 + 1 tick, 操作将被拦截 如果 买一价 < 标记价格 - 1 tick, 操作将被拦截 | 
设置可报价产品
用于maker设置特定的接受询价和报价的产品, 以及数量和价格范围。
限速: 5次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/maker-instrument-settings
请求示例
POST /api/v5/rfq/maker-instrument-settings
[
    {
     "instType": "OPTION",
     "data":
        [{
            "instFamily": "BTC-USD",
            "maxBlockSz": "10000",
            "makerPxBand": "5"
        },
        {
            "instFamily": "SOL-USD",
            "maxBlockSz": "100000",
            "makerPxBand": "15"
        }]
    },
    {
     "instType": "FUTURES",
     "data":
        [{
            "instFamily": "BTC-USD",
            "maxBlockSz": "10000",
            "makerPxBand": "5"
        },
        {
            "instFamily": "ETH-USDT",
            "maxBlockSz": "100000",
            "makerPxBand": "15"
        }]
    },
    {
     "instType": "SWAP",
     "data":
        [{
            "instFamily": "BTC-USD",
            "maxBlockSz": "10000",
            "makerPxBand": "5"
         },
        {
            "instFamily": "ETH-USDT"
        }]
    },
    {
    "instType": "SPOT",
     "data":
        [{
            "instId": "BTC-USDT"
         },
        {
            "instId": "TRX-USDT"
        }]
    }
]
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 设置可报价产品
data =[{
    "instType": "OPTION",
    "data": [{
            "uly": "BTC-USD",
            "maxBlockSz": "10000",
            "makerPxBand": "5"
        },
        {
            "uly": "SOL-USD",
            "maxBlockSz": "100000",
            "makerPxBand": "15"
        }
    ]
}]
result = blockTradingAPI.set_marker_instrument(
    data
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类别,枚举值包括 FUTURES,OPTION,SWAP和SPOT | 
| includeAll | Boolean | 否 | 是否接收该instType下所有产品。有效值为 true或false。默认false。 | 
| data | Array of objects | 是 | instType的元素 | 
| > instFamily | String | 可选 | 交易品种 交割/永续/期权情况下必填 | 
| > instId | String | 可选 | 产品ID,如 BTC-USDT。对SPOT产品类别有效且必须。 | 
| > maxBlockSz | String | 否 | 该种产品最大可交易数量。FUTURES, OPTION and SWAP 的单位是合约数量。SPOT的单位是交易货币。 | 
| > makerPxBand | String | 否 | 价格限制以价格精度tick为单位,以标记价格为基准。 以设置makerPxBand为1个tick为例: 如果买价 > 标记价格 + 1 tick, 操作将被拦截 如果卖价 < 标记价格 - 1 tick, 操作将被拦截 | 
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "result":true
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,如果代码不为 0,则不为空 | 
| data | Array of objects | 请求返回值,包含请求结果 | 
| > result | Boolean | 请求结果,枚举值为 true,false | 
重设MMP状态
重设MMP状态为无效。
限速: 5次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/mmp-reset
请求示例
POST /api/v5/rfq/mmp-reset
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 重设MMP状态
result = blockTradingAPI.reset_mmp()
print(result)
请求参数
None
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ts":"1597026383085"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码, 0表示成功 | 
| msg | String | 错误信息,如果代码不为 0,则不为空 | 
| data | Array of objects | 请求返回值,包含请求结果 | 
| > ts | String | 重设时间. Unix 时间戳的毫秒数格式,如 1597026383085. | 
设置 MMP
该接口用于设置 MMP 的配置,仅适用于大宗交易中的maker。
限速:1次/10s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/rfq/mmp-config
请求示例
POST /api/v5/rfq/mmp-config
body
{
    "timeInterval":"5000",
    "frozenInterval":"2000",
    "countLimit": "100"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| timeInterval | String | 是 | 时间窗口 (毫秒)。 "0" 代表不使用 MMP。最大为 600,000。 | 
| frozenInterval | String | 是 | 冻结时间长度 (毫秒)。 "0" 代表一直冻结,直到调用 "重置 MMP 状态" 接口解冻 | 
| countLimit | String | 是 | 尝试执行次数限制 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "frozenInterval": "2000",
            "countLimit": "100",
            "timeInterval": "5000"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| timeInterval | String | 时间窗口 (毫秒) | 
| frozenInterval | String | 冻结时间长度 (毫秒) | 
| countLimit | String | 尝试执行次数限制 | 
查看 MMP 配置
该接口用于获取 MMP 的配置信息,仅适用于大宗交易中的maker。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/rfq/mmp-config
请求示例
GET /api/v5/rfq/mmp-config
请求参数
none
返回结果
{
  "code": "0",
  "data": [
    {
      "frozenInterval": "2000",
      "mmpFrozen": true,
      "mmpFrozenUntil": "1000",
      "countLimit": "10",
      "timeInterval": "5000"
    }
  ],
  "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| timeInterval | String | 时间窗口 (毫秒)。 "0" 代表不使用 MMP。 | 
| frozenInterval | String | 冻结时间长度 (毫秒)。 如果为"0",代表一直冻结,直到调用 "重置 MMP 状态" 接口解冻,且 mmpFrozenUntil为 ""。 | 
| countLimit | String | 尝试执行次数限制 | 
| mmpFrozen | Boolean | MMP 是否被触发。 true或者false | 
| mmpFrozenUntil | String | 如果配置了 frozenInterval 且 mmpFrozen = true,则为不再触发MMP时的时间窗口(单位为ms),否则为""。 | 
报价
允许询价单指定的报价方进行报价,需要对整个询价单报价,不允许部分报价。
限速: 50次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/create-quote
请求示例
POST /api/v5/rfq/create-quote
{
    "rfqId":"22539",
    "clQuoteId":"q001",
    "tag":"123456",
    "quoteSide":"buy",
    "anonymous": true,
    "expiresIn":"30",
    "legs":[
        {
            "px":"39450.0",
            "sz":"200000",
            "instId":"BTC-USDT-SWAP",
            "tdMode":"cross",
            "ccy":"USDT",
            "side":"buy",
            "posSide": "long"
        },
        {
            "px":"39450.0",
            "sz":"200000",
            "instId":"BTC-USDT-SWAP",
            "tdMode":"cross",
            "ccy":"USDT",
            "side":"buy",
            "posSide": "long"
        }
    ]
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 报价
result = blockTradingAPI.create_quote(
    rfqId="22539",
    clQuoteId="q001",
    anonymous=True,
    quoteSide="buy",
    expiresIn="30",
    legs=[
        {
            "px": "39450.0",
            "sz": "200000",
            "instId": "BTC-USDT-SWAP",
            "side": "buy"
        }
    ]
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 是 | 询价单ID | 
| clQuoteId | String | 否 | 报价单自定义ID | 
| tag | String | 否 | 报价单标签,与此报价单关联的大宗交易将有相同的标签。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| anonymous | Boolean | 否 | 是否匿名报价, true表示匿名报价,false表示公开报价,默认值为false,为true时,即使在交易执行之后,身份也不会透露给询价方。 | 
| quoteSide | String | 是 | 报价单方向, buy或者sell。当报价单方向为buy,对maker来说,执行方向与legs里的方向相同,对taker来说相反。反之同理 | 
| expiresIn | String | 否 | 报价单的有效时长(以秒为单位)。 10到120之间的任何整数。 默认值为60 | 
| legs | Array of objects | 是 | 组合交易 | 
| > instId | String | 是 | 产品ID | 
| > tdMode | String | 否 | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权: isolated其他情况: cross | 
| > ccy | String | 否 | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| > sz | String | 是 | 委托数量 | 
| > px | String | 是 | 委托价格 | 
| > side | String | 是 | 报价单方向 | 
| > posSide | String | 否 | 持仓方向 买卖模式下默认为 net。在开平仓模式下仅可选择long或short。如未指定,则处于开平仓模式下的用户始终会开新仓位。 仅适用交割、永续。 | 
| > tgtCcy | String | 否 | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| > tradeQuoteCcy | String | 否 | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
返回示例
{
    "code": "",
    "msg": "",
    "data": [
        {
            "validUntil": "1608997227834",
            "uTime": "1608267227834",
            "cTime": "1608267227834",
            "legs": [
                {
                    "px": "46000",
                    "sz": "25",
                    "instId": "BTC-USD-220114-25000-C",
                    "tdMode": "cross",
                    "ccy": "USDT",
                    "side": "sell",
                    "posSide": "long",
                    "tgtCcy": ""
                },
                {
                    "px": "4000",
                    "sz": "25",
                    "instId": "ETH-USD-220114-25000-C",
                    "tdMode": "cross",
                    "ccy": "USDT",
                    "side": "buy",
                    "posSide": "long",
                    "tgtCcy": ""
                }
            ],
            "quoteId": "25092",
            "rfqId": "18753",
            "tag": "123456",
            "quoteSide": "sell",
            "state": "active",
            "reason": "mmp_canceled",
            "clQuoteId": "",
            "clRfqId": "",
            "traderCode": "Aksha"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0表示成功。 | 
| msg | String | 错误信息,如果代码不为0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > cTime | String | 报价单创建时间,Unix时间戳的毫秒数格式。 | 
| > uTime | String | 报价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 报价单的状态 有效值为 activecanceledpending_fillfilledexpiredfailed | 
| > reason | String | 状态原因. 有效值包括 mmp_canceled. | 
| > validUntil | String | 报价单的过期时间,Unix时间戳的毫秒数格式。 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID,为客户敏感信息,不会公开,对询价方返回""。 | 
| > tag | String | 报价单标签,与此报价单关联的大宗交易将有相同的标签。 | 
| > traderCode | String | 报价方唯一标识代码。 | 
| > quoteSide | String | 报价单方向,有效值为 buy或者sell。当报价单方向为buy,对maker来说,执行方向与legs里的方向相同,对taker来说相反。反之同理。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> tdMode | String | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式/现货模式:cash合约模式/跨币种保证金模式下买入期权:isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> px | String | 委托价格 | 
| >> side | String | 腿的方向,有效值为 buy或者sell。 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
取消报价单
取消一个报价单。
限速: 50次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-quote
请求示例
POST /api/v5/rfq/cancel-quote
{
    "quoteId": "007",
    "clQuoteId":"Bond007"
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 取消报价单
result = blockTradingAPI.cancel_quote(
    quoteId="007",
    clQuoteId="Bond007"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteId | String | 可选 | 报价单ID | 
| clQuoteId | String | 可选 | 报价单自定义ID,字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间,当 clRfqId 和 rfqId 都传时,以 rfqId 为准。 | 
| rfqId | String | 否 | 询价单ID | 
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "quoteId":"007",
            "clQuoteId":"Bond007",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 询价单自定义ID | 
| > sCode | String | 事件执行结果的code,0代表成功 | 
| > sMsg | String | 事件执行失败时的msg | 
批量取消报价单
取消一个或多个报价单,每次最多可以撤销100个订单。
限速: 2次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-batch-quotes
请求示例
POST /api/v5/rfq/cancel-batch-quotes
{
    "quoteIds": ["1150","1151","1152"],
    "clQuoteIds": ["q1","q2","q3"]
}
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 批量取消报价单
result = blockTradingAPI.cancel_batch_quotes(
    quoteIds=["1150","1151","1152"],
    clQuoteIds=["q1","q2","q3"]
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteIds | Array of strings | 可选 | 报价单ID | 
| clQuoteIds | Array of strings | 可选 | 报价单自定义ID,当 clQuoteIds 和 quoteIds 都传时,以 quoteIds 为准。 | 
全部成功的示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "quoteId":"1150",
            "clQuoteId":"q1",
            "sCode":"0",
            "sMsg":""
        },
        {
            "quoteId":"1151",
            "clQuoteId":"q2",
            "sCode":"0",
            "sMsg":""
        },
        {
            "quoteId":"1152",
            "clQuoteId":"q3",
            "sCode":"0",
            "sMsg":""
        }
    ]
}
部分成功的示例
{
    "code":"2",
    "msg":"Bulk operation partially succeeded.",
    "data":[
        {
            "quoteId":"1150",
            "clQuoteId":"q1",
            "sCode":"0",
            "sMsg":""
        },
        {
            "quoteId":"1151",
            "clQuoteId":"q2",
            "sCode":"70001",
            "sMsg":"Quote does not exist."
        },
        {
            "quoteId":"1152",
            "clQuoteId":"q3",
            "sCode":"70001",
            "sMsg":"Quote does not exist."
        }
    ]
}
失败示例
{
    "code":"1",
    "msg":"Operation failed.",
    "data":[
        {
            "quoteId":"1150",
            "clQuoteId":"q1",
            "sCode":"70001",
            "sMsg":"Quote does not exist."
        },
        {
            "quoteId":"1151",
            "clQuoteId":"q2",
            "sCode":"70001",
            "sMsg":"Quote does not exist."
        },
        {
            "quoteId":"1151",
            "clQuoteId":"q3",
            "sCode":"70001",
            "sMsg":"Quote does not exist."
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID | 
| > sCode | String | 事件执行结果的code,0代表成功 | 
| > sMsg | String | 事件执行失败时的msg | 
取消所有报价单
取消所有报价单
限速: 2次/2s
限速规则:User ID
权限:交易
HTTP Requests
POST /api/v5/rfq/cancel-all-quotes
请求示例
POST /api/v5/rfq/cancel-all-quotes
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 取消所有报价单
result = blockTradingAPI.cancel_all_quotes()
print(result)
请求参数
无
响应示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ts":"1697026383085"
        }
    ]
}
响应参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > ts | String | 成功取消时间,Unix时间戳的毫秒数格式,如 1597026383085。 | 
倒计时全部撤单
在倒计时结束后,取消所有报价单。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/rfq/cancel-all-after
请求示例
POST /api/v5/rfq/cancel-all-after
body
{
   "timeOut":"60"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| timeOut | String | 是 | 取消报价单的倒计时,单位为秒。 取值范围为 0, [10, 120] 0 代表不使用该功能。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "triggerTime":"1587971460",
            "ts":"1587971400"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| triggerTime | String | 触发撤单的时间. triggerTime=0 代表未使用该功能。 | 
| ts | String | 请求被接收到的时间 | 
获取询价单信息
获取用户发出的或收到的询价单信息
限速: 2次/2s
限速规则:User ID
权限:读取
HTTP Requests
GET /api/v5/rfq/rfqs
请求示例
GET /api/v5/rfq/rfqs
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取询价单信息
result = blockTradingAPI.get_rfqs()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 否 | 询价单ID . | 
| clRfqId | String | 否 | 客户询价单自定义ID,当 clRfqId 和 rfqId 都传时,以 rfqId 为准 | 
| state | String | 否 | 询价单的状态 activecanceledpending_fillfilledexpiredfailedtraded_awaytraded_away仅适用于报价方 | 
| beginId | String | 否 | 请求的起始询价单ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束询价单ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "rfqId": "123456",
            "clRfqId": "",
            "tag": "123456",
            "traderCode": "VITALIK",
            "validUntil": "1650969031817",
            "allowPartialExecution": false,
            "state": "filled",
            "flowType": "",
            "counterparties": [
                "SATOSHI"
            ],
            "legs": [
                {
                    "instId": "BTC-USDT",
                    "tdMode": "cross",
                    "ccy": "USDT",
                    "side": "buy",
                    "posSide": "long",
                    "sz": "25",
                    "tgtCcy": "base_ccy",
                    "tradeQuoteCcy": "USDT"
                }
            ],
            "cTime": "1650968131817",
            "uTime": "1650968164944"
        },
        {
            "rfqId": "1234567",
            "clRfqId": "",
            "tag": "1234567",
            "traderCode": "VITALIK",
            "validUntil": "1650967623729",
            "state": "filled",
            "flowType": "",
            "counterparties": [
                "SATOSHI"
            ],
            "legs": [
                {
                    "instId": "BTC-USDT",
                    "tdMode": "cross",
                    "ccy": "USDT",
                    "side": "buy",
                    "posSide": "long",
                    "sz": "1500000",
                    "tgtCcy": "quote_ccy",
                    "tradeQuoteCcy": "USDT"
                }
            ],
            "cTime": "1650966723729",
            "uTime": "1650966816577"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > cTime | String | 询价单创建时间,Unix时间戳的毫秒数格式。 | 
| > uTime | String | 询价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 询价单的状态 activecanceledpending_fillfilledexpiredfailedtraded_awaytraded_away仅适用于报价方 | 
| > counterparties | Array of strings | 报价方列表 | 
| > validUntil | String | 询价单的过期时间,Unix时间戳的毫秒数格式。 | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > tag | String | 询价单标签,与此询价单关联的大宗交易将有相同的标签。 | 
| > flowType | String | 识别询价单的类型。 仅适用于报价方,返回""给询价方。 | 
| > traderCode | String | 询价方唯一标识代码,询价时 anonymous 设置为 true时不可见 | 
| > rfqId | String | 询价单ID | 
| > allowPartialExecution | Boolean | RFQ是否可以被部分执行,如果腿的比例和原RFQ一致。有效值为 true或false。未指定时,默认为false。 | 
| > legs | Array of objects | 组合交易,每个请求最多可放置15条腿 | 
| >> instId | String | 产品ID,如 "BTC-USDT-SWAP" | 
| >> tdMode | String | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权: isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> side | String | 询价单方向 有效值为 buy和sell。 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 只适用于 Taker | 
| >> acct | String | 账户名 | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 委托数量 | 
| >>> tdMode | String | 交易模式 | 
| >>> ccy | String | 保证金币种 | 
| >>> posSide | String | 持仓方向 | 
获取报价单信息
获取用户发出的或收到的报价单信息
限速: 2次/2s
限速规则:User ID
权限:读取
HTTP Requests
GET /api/v5/rfq/quotes
请求示例
GET /api/v5/rfq/quotes
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取报价单信息
result = blockTradingAPI.get_quotes()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 否 | 询价单ID | 
| clRfqId | String | 否 | 询价单自定义ID, 当 clRfqId 和 rfqId 都传时,以 rfqId 为准。 | 
| quoteId | String | 否 | 报价单ID | 
| clQuoteId | String | 否 | 报价单自定义ID,当 clRfqId 和 rfqId 都传时,以 rfqId 为准。 | 
| state | String | 否 | 报价单的状态 有效值为 activecanceledpending_fillfilledexpiredfailed | 
| beginId | String | 否 | 请求的起始报价单ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束报价单ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "validUntil":"1608997227834",
            "uTime":"1608267227834",
            "cTime":"1608267227834",
            "legs":[
                {
                    "px":"46000",
                    "sz":"25",
                    "instId":"BTC-USD-220114-25000-C",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "side":"sell",
                    "posSide": "long",
                    "tgtCcy":"",
                    "tradeQuoteCcy": ""
                },
                {
                    "px":"45000",
                    "sz":"25",
                    "instId":"BTC-USDT",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "side":"buy",
                    "posSide": "long",
                    "tgtCcy":"base_ccy",
                    "tradeQuoteCcy": "USDT"
                }
            ],
            "quoteId":"25092",
            "rfqId":"18753",
            "quoteSide":"sell",
            "state":"canceled",
            "reason":"mmp_canceled",
            "clQuoteId":"cq001",
            "clRfqId":"cr001",
            "tag":"123456",
            "traderCode":"Trader1"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的数组 | 
| > cTime | String | 报价单创建时间,Unix时间戳的毫秒数格式 | 
| > uTime | String | 报价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 报价单的状态 activecanceledpending_fillfilledexpiredfailed | 
| > reason | String | 状态原因. 有效值包括 mmp_canceled. | 
| > validUntil | String | 报价单的过期时间,Unix时间戳的毫秒数格式。 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID,为客户敏感信息,不会公开,对询价方返回""。 | 
| > tag | String | 报价单标签,与此报价单关联的大宗交易将有相同的标签。 | 
| > traderCode | String | 报价方唯一标识代码,报价时 Anonymous 设置为 True时不可见。 | 
| > quoteSide | String | 报价单方向, buy或者sell。当报价单方向为buy,对maker来说,执行方向与legs里的方向相同,对taker来说相反。反之同理 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> tdMode | String | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权: isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> px | String | 委托价格. | 
| >> side | String | 报价单方向 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
获取大宗交易信息
获取该用户大宗交易成交信息
限速: 5次/2s
限速规则:User ID
权限:读取
HTTP Requests
GET /api/v5/rfq/trades
请求示例
GET /api/v5/rfq/trades
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取大宗交易信息
result = blockTradingAPI.get_trades()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| rfqId | String | 否 | 询价单ID | 
| clRfqId | String | 否 | 由用户设置的询价单ID. 如果 clRfqId和rfqId都通过了,rfqId 将被视为主要 | 
| quoteId | String | 否 | 报价单ID | 
| blockTdId | String | 否 | 大宗交易ID | 
| clQuoteId | String | 否 | 由用户设置的报价单ID。如果同时传递了 clQuoteId和quoteId,则 quoteId 将被视为主要标识符 | 
| beginId | String | 否 | 请求的起始大宗交易ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束大宗交易ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| beginTs | String | 否 | 用开始时间戳筛选交易执行时间(UTC时区)。Unix时间戳的毫秒数格式,如 1597026383085。 | 
| endTs | String | 否 | 用结束时间戳筛选交易执行时间(UTC时区)。Unix时间戳的毫秒数格式,如 1597026383085。 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条。 如果请求范围内的交易数量大于100,则返回该范围内最近的100笔交易。 | 
| isSuccessful | Boolean | 否 | 交易是否成功。 true: 成功,默认值。false: 未成功。 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "rfqId": "123456",
            "clRfqId": "",
            "quoteId": "0T5342O",
            "clQuoteId": "",
            "blockTdId": "439127542058958848",
            "tag": "123456",
            "isSuccessful": true,
            "errorCode": "",
            "legs": [
                {
                    "instId": "BTC-USDT",
                    "side": "sell",
                    "sz": "0.666",
                    "px": "100",
                    "tradeId": "439127542058958850",
                    "fee": "-0.0333",
                    "feeCcy": "USDT",
                    "tradeQuoteCcy": "USDT"
                }
            ],
            "cTime": "1650968164900",
            "tTraderCode": "SATS",
            "mTraderCode": "MIKE"
        },
        {
            "rfqId": "1234567",
            "clRfqId": "",
            "quoteId": "0T533T0",
            "clQuoteId": "",
            "blockTdId": "439121886014849024",
            "tag": "123456",
            "isSuccessful": true,
            "errorCode": "",
            "legs": [
                {
                    "instId": "BTC-USDT",
                    "side": "sell",
                    "sz": "0.532",
                    "px": "100",
                    "tradeId": "439121886014849026",
                    "fee": "-0.0266",
                    "feeCcy": "USDT",
                    "tradeQuoteCcy": "USDT"
                }
            ],
            "cTime": "1650966816550",
            "tTraderCode": "SATS",
            "mTraderCode": "MIKE"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组 | 
| > cTime | String | 执行创建的时间,Unix时间戳的毫秒数格式。 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID,为客户敏感信息,不会公开,对询价方返回""。 | 
| > blockTdId | String | 大宗交易ID | 
| > tag | String | 交易标签,大宗交易将有与其对应的询价单或报价单相同的标签。 | 
| > tTraderCode | String | 询价方唯一标识代码,询价时 anonymous 设置为 true时不可见 | 
| > mTraderCode | String | 报价方唯一标识代码。报价时 anonymous 设置为 true时不可见 | 
| > isSuccessful | Boolean | 交易是否成功 | 
| > errorCode | String | 未成功交易的错误码。 对于成功交易为 ""。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> px | String | 成交价格 | 
| >> sz | String | 成交数量 | 
| >> side | String | 询价单方向,buy 或者 sell。 | 
| >> fee | String | 手续费,正数代表平台返佣 ,负数代表平台扣除 | 
| >> feeCcy | String | 手续费币种 | 
| >> tradeId | String | 最新的成交Id | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD。 | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 | 
| >> blockTdId | String | 大宗交易ID | 
| >> errorCode | String | 事件执行结果的code,0代表成功 | 
| >> acct | String | 账户名 只适用于 Taker,对于 Maker 返回"" | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 成交数量 | 
| >>> tradeId | String | 最新的成交Id | 
| >>> fee | String | 手续费 | 
| >>> feeCcy | String | 手续费币种 | 
获取大宗交易所有产品行情信息
获取最近24小时大宗交易量
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/block-tickers
请求示例
GET /api/v5/market/block-tickers?instType=SWAP
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取大宗交易所有产品行情信息
result = marketDataAPI.get_block_tickers(
    instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SPOT:币币SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权,如BTC-USD | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     {
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "volCcy24h":"2222",
        "vol24h":"2222",
        "ts":"1597026383085"
     },
     {
        "instType":"SWAP",
        "instId":"BTC-USD-SWAP",
        "volCcy24h":"2222",
        "vol24h":"2222",
        "ts":"1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| instType | String | 产品类型 | 
| volCcy24h | String | 24小时成交量,以 币为单位如果是 衍生品合约,数值为交易货币的数量。如果是 币币/币币杠杆,数值为计价货币的数量。 | 
| vol24h | String | 24小时成交量,以 张为单位如果是 衍生品合约,数值为合约的张数。如果是 币币/币币杠杆,数值为交易货币的数量。 | 
| ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取大宗交易单个产品行情信息
获取最近24小时大宗交易量
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/block-ticker
请求示例
GET /api/v5/market/block-ticker?instId=BTC-USD-SWAP
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取大宗交易单个产品行情信息
result = marketDataAPI.get_block_ticker(
    instId="BTC-USDT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-SWAP | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     {
        "instType":"SWAP",
        "instId":"LTC-USD-SWAP",
        "volCcy24h":"2222",
        "vol24h":"2222",
        "ts":"1597026383085"
     }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| instType | String | 产品类型 | 
| volCcy24h | String | 24小时成交量,以 币为单位如果是 衍生品合约,数值为交易货币的数量。如果是 币币/币币杠杆,数值为计价货币的数量。 | 
| vol24h | String | 24小时成交量,以 张为单位如果是 衍生品合约,数值为合约的张数。如果是 币币/币币杠杆,数值为交易货币的数量。 | 
| ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取大宗交易公共多腿成交数据
获取已经执行的大宗交易。数据将在大宗交易执行15分钟后更新。
限速: 5次/2s
限速规则:IP
HTTP Requests
GET /api/v5/rfq/public-trades
请求示例
GET /api/v5/rfq/public-trades
import okx.BlockTrading as BlockTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
blockTradingAPI = BlockTrading.BlockTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取大宗交易公共成交数据
result = blockTradingAPI.get_public_trades()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| beginId | String | 否 | 请求的起始大宗交易ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束大宗交易ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "blockTdId": "439161457415012352",
            "groupId": "",
            "legs": [
                {
                    "instId": "BTC-USD-210826",
                    "side": "sell",
                    "sz": "100",
                    "px": "11000",
                    "tradeId": "439161457415012354"
                },
                {
                    "instId": "BTC-USD-SWAP",
                    "side": "sell",
                    "sz": "100",
                    "px": "50",
                    "tradeId": "439161457415012355"
                },
                {
                    "instId": "BTC-USDT",
                    "side": "buy",
                    "sz": "0.1", //for public feed, spot "sz" is in baseccy
                    "px": "10.1",
                    "tradeId": "439161457415012356"
                },
                {
                    "instId": "BTC-USD-210326-60000-C",
                    "side": "buy",
                    "sz": "200",
                    "px": "0.008",
                    "tradeId": "439161457415012357"
                },
                {
                    "instId": "BTC-USD-220930-5000-P",
                    "side": "sell",
                    "sz": "200",
                    "px": "0.008",
                    "tradeId": "439161457415012360"
                },
                {
                    "instId": "BTC-USD-220930-10000-C",
                    "side": "sell",
                    "sz": "200",
                    "px": "0.008",
                    "tradeId": "439161457415012361"
                },
                {
                    "instId": "BTC-USD-220930-10000-P",
                    "side": "sell",
                    "sz": "200",
                    "px": "0.008",
                    "tradeId": "439161457415012362"
                },
                {
                    "instId": "ETH-USD-220624-100100-C",
                    "side": "sell",
                    "sz": "100",
                    "px": "0.008",
                    "tradeId": "439161457415012363"
                }
            ],
            "strategy":"CALL_CALENDAR_SPREAD",
            "cTime": "1650976251241"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| code | String | 结果代码,0 表示成功。 | 
| msg | String | 错误信息,如果代码不为 0,则不为空。 | 
| data | Array of objects | 包含结果的对象数组. | 
| > strategy | String | 期权策略, 如 CALL_CALENDAR_SPREAD | 
| > cTime | String | 执行创建的时间,Unix时间戳的毫秒数格式。 | 
| > blockTdId | String | 大宗交易ID | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> px | String | 成交价格 | 
| >> sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| >> side | String | 询价单方向,从 Taker的视角看 | 
| >> tradeId | String | 最新成交ID | 
获取大宗交易公共单腿成交数据
查询市场上交易产品维度的大宗交易公共成交数据,根据 tradeId 倒序排序。数据将在大宗交易执行15分钟后更新。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/block-trades
请求示例
GET /api/v5/public/block-trades?instId=BTC-USDT
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "fillVol": "5",
            "fwdPx": "26857.86591585",
            "groupId": "",
            "idxPx": "26889.7",
            "instId": "BTC-USD-231013-22000-P",
            "markPx": "0.0000000000000001",
            "px": "0.0026",
            "side": "buy",
            "sz": "1",
            "tradeId": "632960608383700997",
            "ts": "1697181568974"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID | 
| tradeId | String | 成交ID | 
| px | String | 成交价格 | 
| sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| side | String | 成交方向 buy:买sell:卖 | 
| fillVol | String | 成交时的隐含波动率 仅适用于 期权 | 
| fwdPx | String | 成交时的远期价格 仅适用于 期权 | 
| idxPx | String | 成交时的指数价格 适用于 交割,永续,期权 | 
| markPx | String | 成交时的标记价格 适用于 交割,永续,期权 | 
| groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| ts | String | 成交时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
WebSocket 私有频道
询价频道
获取用户自身发送或接收的询价信息。每当用户自身发送或接收询价时,数据都将被推送。
服务地址
/ws/v5/business (需要登录)
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "rfqs"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "rfqs"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 rfqs | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "rfqs"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"rfqs\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 rfqs | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg":{
        "channel":"rfqs",
        "uid": "77982378738415879"
    },
    "data":[
        {
            "cTime":"1611033737572",
            "uTime":"1611033737572",
            "traderCode":"DSK2",
            "rfqId":"22534",
            "clRfqId":"",
            "tag":"123456",
            "state":"active",
            "flowType": "",
            "validUntil":"1611033857557",
            "allowPartialExecution": false,
            "counterparties":[
                "DSK4",
                "DSK5"
            ],
            "legs":[
                {
                    "instId":"BTCUSD-211208-36000-C",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "sz":"25.0",
                    "side":"buy",
                    "posSide": "long",
                    "tgtCcy":""
                },
                {
                    "instId":"ETHUSD-211208-45000-C",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "sz":"25.0",
                    "side":"sell",
                    "posSide": "long",
                    "tgtCcy":""
                }
            ]
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| data | Array of objects | 订阅的数据 | 
| > cTime | String | 询价单创建时间,Unix时间戳的毫秒数格式。 | 
| > uTime | String | 询价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 询价单的状态 有效值有 activecanceledfilledexpiredtraded_awayfailedtraded_away仅适用于报价方。 | 
| > counterparties | Array of Strings | 报价方列表 | 
| > validUntil | String | 询价单的过期时间,Unix时间戳的毫秒数格式。 | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > tag | String | 询价单标签,与此询价单关联的大宗交易将有相同的标签。 | 
| > flowType | String | 识别询价单的类型。 仅适用于报价方,返回""给询价方。 | 
| > traderCode | String | 询价方唯一标识代码,询价时 Anonymous 设置为 True时不可见 | 
| > rfqId | String | 询价单ID | 
| > allowPartialExecution | Boolean | RFQ是否可以被部分执行,如果腿的比例和原RFQ一致。>有效值为 true或false。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> tdMode | String | 交易模式 保证金模式: cross全仓isolated逐仓非保证金模式: cash非保证金.如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货: cash合约模式和跨币种保证金模式下买入期权: isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> side | String | 询价单方向 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD. | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 只适用于 Taker | 
| >> acct | String | 账户名 | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 委托数量 | 
| >>> tdMode | String | 交易模式 | 
| >>> ccy | String | 保证金币种 | 
| >>> posSide | String | 持仓方向 | 
报价频道
获取用户自身发送或接收的报价信息。每当用户自身发送或接收报价时,数据都将被推送。
服务地址
/ws/v5/business (需要登录)
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "quotes"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "quotes"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 quotes | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "quotes"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"quotes\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 quotes | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg":{
        "channel":"quotes",
        "uid": "77982378738415879"
    },
    "data":[
        {
            "validUntil":"1608997227854",
            "uTime":"1608267227834",
            "cTime":"1608267227834",
            "legs":[
                {
                    "px":"0.0023",
                    "sz":"25.0",
                    "instId":"BTC-USD-220114-25000-C",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "side":"sell",
                    "posSide": "long",
                    "tgtCcy":""
                },
                {
                    "px":"0.0045",
                    "sz":"25",
                    "instId":"BTC-USD-220114-35000-C",
                    "tdMode":"cross",
                    "ccy":"USDT",
                    "side":"buy",
                    "posSide": "long",
                    "tgtCcy":""
                }
            ],
            "quoteId":"25092",
            "rfqId":"18753",
            "tag":"123456",
            "traderCode":"SATS",
            "quoteSide":"sell",
            "state":"canceled",
            "reason":"mmp_canceled",
            "clQuoteId":""
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 账户ID,账户uid和app上的一致 | 
| data | Array of objects | 订阅的数据 | 
| > cTime | String | 报价单创建时间,Unix时间戳的毫秒数格式。 | 
| > uTime | String | 报价单状态更新时间,Unix时间戳的毫秒数格式。 | 
| > state | String | 报价单的状态 activecanceledfilledexpiredfailed | 
| > reason | String | 状态原因 mmp_canceled | 
| > validUntil | String | 报价单的过期时间,Unix时间戳的毫秒数格式。 | 
| > rfqId | String | 询价单ID | 
| > clRfqId | String | 询价单自定义ID,为客户敏感信息,不会公开,对报价方返回""。 | 
| > quoteId | String | 报价单ID | 
| > clQuoteId | String | 报价单自定义ID,为客户敏感信息,不会公开,对询价方返回""。 | 
| > tag | String | 报价单标签,与此报价单关联的大宗交易将有相同的标签。 | 
| > traderCode | String | 报价方唯一标识代码,报价时 Anonymous 设置为 True时不可见。 | 
| > quoteSide | String | 报价单方向 buysell当报价单方向为 buy,对maker来说,执行方向与legs里的方向相同,对taker来说相反。反之同理。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> tdMode | String | 交易模式 保证金模式 cross:全仓isolated:逐仓非保证金模式 cash:非保证金如未提供,tdMode 将继承系统设置的默认值: 合约模式 & 现货模式: cash合约模式和跨币种保证金模式下买入期权: isolated其他情况: cross | 
| >> ccy | String | 保证金币种,仅适用于 合约模式下的全仓杠杆订单在其他情况下该参数将被忽略。 | 
| >> sz | String | 委托数量 | 
| >> px | String | 委托价格 | 
| >> side | String | 报价单方向 | 
| >> posSide | String | 持仓方向 买卖模式下默认为 net。如未指定,则返回"",相当于net。在开平仓模式下仅可选择 long或short。 如未指定,则返回"",对应于为交易开新仓位的方向(买入=>long,卖出=>short)。仅适用交割、永续。 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> tradeQuoteCcy | String | 交易使用的计价币种。仅适用于 SPOT。 默认值为 instId 的报价币种,例如:对于 BTC-USD,默认值为USD. | 
大宗交易频道
获取用户自身的大宗交易信息。同一大宗交易中的所有腿都包含在同一更新中。只要用户自身作为交易对手进行大宗交易,数据都将被推送。
服务地址
/ws/v5/business (需要登录)
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "struc-block-trades"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "struc-block-trades"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 struc-block-trades | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "struc-block-trades"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"struc-block-trades\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 struc-block-trades | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg":{
        "channel":"struc-block-trades",
        "uid": "77982378738415879"
    },
    "data":[
        {
            "cTime":"1608267227834",
            "rfqId":"18753",
            "clRfqId":"",
            "quoteId":"25092",
            "clQuoteId":"",
            "blockTdId":"180184",
            "tag":"123456",
            "tTraderCode":"ANAND",
            "mTraderCode":"WAGMI",
            "isSuccessful": true,
            "errorCode": "",
            "legs":[
                {
                    "px":"0.0023",
                    "sz":"25.0",
                    "instId":"BTC-USD-20220630-60000-C",
                    "side":"sell",
                    "fee":"0.1001",
                    "feeCcy":"BTC",
                    "tradeId":"10211",
                    "tgtCcy":""
                },
                {
                    "px":"0.0033",
                    "sz":"25",
                    "instId":"BTC-USD-20220630-50000-C",
                    "side":"buy",
                    "fee":"0.1001",
                    "feeCcy":"BTC",
                    "tradeId":"10212",
                    "tgtCcy":""
                }
            ]
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| data | Array of objects | 订阅的数据 | 
| > cTime | String | 执行创建的时间戳,Unix 时间戳格式,以毫秒为单位。 | 
| > rfqId | String | RFQ ID. | 
| > clRfqId | String | 由用户设置的 RFQ ID。 此属性被视为客户端敏感信息。 不会暴露给 Maker,只返回空字符串“”给 Maker。 | 
| > quoteId | String | Quote ID. | 
| > clQuoteId | String | 由用户设置的 Quote ID。 此属性被视为客户端敏感信息。 不会暴露给 Taker,只为 Taker 返回空字符串“”。 | 
| > blockTdId | String | 大宗交易ID | 
| > tag | String | 交易标签,大宗交易将有与其对应的询价单或报价单相同的标签。 | 
| > tTraderCode | String | 报价方唯一标识代码。询价时 Anonymous 设置为 True时不可见。 | 
| > mTraderCode | String | 询价方唯一标识代码。报价时 Anonymous 设置为 True时不可见。 | 
| > isSuccessful | Boolean | 交易是否成功 | 
| > errorCode | String | 未成功交易的错误码。 对于成功交易为 ""。 | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品ID | 
| >> px | String | 成交价格 | 
| >> sz | String | 成交数量 | 
| >> side | String | 询价单方向 | 
| >> tgtCcy | String | 委托数量的类型 定义 sz属性的单位。仅适用于 instType=SPOT。有效值为base_ccy和quote_ccy。未指定时,默认为base_ccy。 | 
| >> fee | String | 手续费,正数代表平台返佣 ,负数代表平台扣除。 | 
| >> feeCcy | String | 手续费币种 | 
| >> tradeId | String | 最新成交Id | 
| > acctAlloc | Array of objects | 组合询价单的账户分配 | 
| >> blockTdId | String | 大宗交易ID | 
| >> errorCode | String | 事件执行结果的code,0代表成功 | 
| >> acct | String | 账户名 只适用于 Taker,对于 Maker 返回"" | 
| >> legs | Array of objects | 组合交易 | 
| >>> instId | String | 产品ID | 
| >>> sz | String | 成交数量 | 
| >>> tradeId | String | 最新的成交Id | 
| >>> fee | String | 手续费 | 
| >>> feeCcy | String | 手续费币种 | 
WebSocket 公共频道
公共大宗交易频道
获取欧易的最新大宗交易信息。同一大宗交易中的所有腿都包含在同一更新中。数据将在大宗交易执行15分钟后被推送。
URL Path
/ws/v5/business
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "public-struc-block-trades"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "public-struc-block-trades"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 public-struc-block-trades | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "public-struc-block-trades"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"public-struc-block-trades\""}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 public-struc-block-trades | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg":{
        "channel":"public-struc-block-trades"
    },
    "data":[
        {
            "cTime":"1608267227834",
            "blockTdId":"1802896",
            "groupId":"",
            "legs":[
                {
                    "px":"0.323",
                    "sz":"25.0",
                    "instId":"BTC-USD-20220114-13250-C",
                    "side":"sell",
                    "tradeId":"15102"
                },
                {
                    "px":"0.666",
                    "sz":"25",
                    "instId":"BTC-USD-20220114-21125-C",
                    "side":"buy",
                    "tradeId":"15103"
                }
            ]
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| data | Array of objects | 订阅的数据 | 
| > cTime | String | 执行创建的时间戳,Unix 时间戳格式,以毫秒为单位。 | 
| > blockTdId | String | 大宗交易ID | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > legs | Array of objects | 组合交易 | 
| >> instId | String | 产品名Id | 
| >> px | String | 成交价格 | 
| >> sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| >> side | String | 询价单方向,从 Taker的视角看 | 
| >> tradeId | String | 最新成交Id | 
公共大宗交易单腿交易频道
获取欧易的最新大宗交易单腿交易信息。大宗交易中的每条腿都在单独的更新中推送。数据将在大宗交易执行15分钟后被推送。
URL Path
/ws/v5/business
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "public-block-trades",
      "instId": "BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "public-block-trades",
          "instId": "BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 public-block-trades | 
| > instId | String | 是 | 产品 ID, 如 BTC-USDT-SWAP | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "public-block-trades",
    "instId": "BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"args\":[{ \"channel\" : \"public-block-trades\""}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必需 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 public-block-trades | 
| > instId | String | 是 | 产品 ID, 如 BTC-USDT-SWAP | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
   "arg":{
      "channel":"public-block-trades",
      "instId":"BTC-USD-231020-5000-P"
   },
   "data":[
      {
         "fillVol":"5",
         "fwdPx":"26808.16",
         "groupId":"",
         "idxPx":"27222.5",
         "instId":"BTC-USD-231020-5000-P",
         "markPx":"0.0022406326071111",
         "px":"0.0048",
         "side":"buy",
         "sz":"1",
         "tradeId":"633971452580106242",
         "ts":"1697422572972"
      }
   ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品 ID, 如 BTC-USDT-SWAP | 
| data | Array of objects | 公共大宗交易单腿交易信息 | 
| > instId | String | 产品 ID, 如 BTC-USDT-SWAP | 
| > tradeId | String | 交易 ID, 由柜台提供. | 
| > px | String | 该单腿交易价格. | 
| > sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| > side | String | 交易方向, buy, sell, 从taker角度看. | 
| > fillVol | String | 成交时的隐含波动率 仅适用于 期权 | 
| > fwdPx | String | 成交时的远期价格 仅适用于 期权 | 
| > idxPx | String | 成交时的指数价格 适用于 交割,永续,期权 | 
| > markPx | String | 成交时的标记价格 适用于 交割,永续,期权 | 
| > groupId | String | 组合询价单ID 只适用于组合询价单,普通询价单返回 "" | 
| > ts | String | 成交时间, 时间戳格式,以毫秒为单位. 如 1597026383085. | 
大宗交易行情频道
获取最近24小时大宗交易量
当发生成交事件时触发推送,此外,也会根据订阅维度每隔5分钟推送一次
服务地址
/ws/v5/business
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "block-tickers",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [{
        "channel": "block-tickers",
        "instId": "BTC-USDT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 block-tickers | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "block-tickers",
        "instId": "LTC-USD-200327"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"block-tickers\", \"instId\" : \"LTC-USD-200327\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 block-tickers | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "block-tickers"
    },
    "data": [
        {
            "instType": "SWAP",
            "instId": "LTC-USD-SWAP",
            "volCcy24h": "0",
            "vol24h": "0",
            "ts": "1597026383085"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 产品ID | 
| > instType | String | 产品类型 | 
| > volCcy24h | String | 24小时成交量,以 币为单位如果是 衍生品合约,数值为交易货币的数量。如果是 币币/币币杠杆,数值为计价货币的数量。 | 
| > vol24h | String | 24小时成交量,以 张为单位如果是 衍生品合约,数值为合约的张数。如果是 币币/币币杠杆,数值为交易货币的数量。 | 
| > ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
价差交易
介绍
基本概念
- 价差(Spread) - 做多一种产品并同时做空数量等价的另一种相关产品,形成具有两条风险互相抵消的腿的交易
- 订单簿(Order-book) - 一种或一组交易产品的报价集合。每个报价都包含一个或一组定义的产品、相关数量以及Maker(报价者)愿意交易的价格。然后,Taker(接受者)可以立即消耗这些报价,直至订单簿上列出的全部数量。价差交易挂单限额为所有价差挂单合计不超过500个。
基本工作流程
Nitro Spreads 以熟悉的中央限价订单簿 (CLOB) 概念为中心:
- Spreads里包含的产品来自OKX交易所,交易之后也在OKX交易所进行清算和结算。
- 任何人都可以充当“Taker”,消耗现有的剩余订单,或“Maker”,其订单被消耗。
- 交易在订单被匹配时发生,之后它们被发送到 OKX 进行清算和结算。
简单来说,Nitro Spreads 工作流程是
- Maker 在 Spread 的订单簿上设置限价订单。
- Taker通过限价单消耗一个resting Order。
- 被匹配的订单被发送去清算和结算。
- Taker和Maker收到交易成功或拒绝的确认
- 所有用户都会收到成功结算和清算交易的通知,除去涉及的交易双方以交易方向 (买入或卖出) 等信息。
Nitro Spreads 的主要方面:
- 所有价差都有可公开访问的中央限价订单簿 (CLOB)。
- Spreads的可用性由OKX决定。通常,这些Spreads包括同一标的下(如“BTC/USDT”或“ETH/USDC”)中 delta one 衍生品(交割和永续)和现货的所有可能组合。
- 部分成交和多个订单可以作为单笔交易的一部分。
- 交易对手方不是任由用户选择的。任何人都可以参与所有Spread的订单簿,有效地与更广泛的市场进行交易。
- 整个过程保持匿名,所有订单和交易均在匿名的基础上进行。
- 用户可以灵活地在订单簿的买卖双方下多个订单,从而实现阶梯式配置。
全面的 API 工作流程
当用户的订单被另一个订单执行时,用户将承担Maker的角色。当用户提交的订单与订单簿中的现有订单相匹配时,他们就会成为 Taker
获取可用Spreads
要检索在 OKX 上交易的所有可用Spreads,您应该向 GET /api/v5/sprd/spreads 发出请求
检索您的订单
要在 OKX 上检索您的订单,您应该向 GET /api/v5/sprd/order 发出请求。
检索您的交易
要检索您在 OKX 上的交易,您应该向 GET /api/v5/sprd/trades 发出请求。
提交订单
要向 某个Spread 的订单簿提交订单,您应该请求
POST /api/v5/sprd/order 。
Spread状态
Spread 的生命周期中存在三种不同的状态:live,suspend,和 expired:
- live: 在 Nitro Spread 上活跃交易的Spreads
- suspend:其中至少一条腿被暂停,另一条在 OKX 订单簿交易所处于活跃或暂停状态的价差;或标的工具仍在 OKX 订单簿交易所中存在但已从 Nitro Spread 中移除的Spread
- expired:至少一条腿在 OKX 订单簿交易所到期的Spread
给定每条腿的状态以及 Nitro Spreads 上的Spread状态(除了在 Nitro Spread上退市的情况),所有可能Spread状态的情况请参考下表:
| 交易产品A | 交易产品B | Spread状态 | 
|---|---|---|
| Live | Live | Live | 
| Suspend | Live | Suspend | 
| Live | Suspend | Suspend | 
| Suspend | Suspend | Suspend | 
| Expired | Live | Expired | 
| Live | Expired | Expired | 
| Suspend | Expired | Expired | 
| Expired | Suspend | Expired | 
| Expired | Expired | Expired | 
交易生命周期
为了进行交易,需要在价差撮合交易中匹配两个订单。
通过订阅 sprd-ordersWebSocket 通道,您可以获得有关订单状态的信息并确定它是否已达到最终状态。通道中的state值表示订单的当前状态。
- 如果状态为live或partially_filled,则意味着订单仍有未达最终状态(filled或canceled)数量,创建者或其他用户仍可能可以对其执行操作。
- 另一方面,如果状态为canceled或filled,创建者或任何其他用户将无法对此订单执行任何操作。
请密切跟踪以下属性:sz(数量)、pendingFillSz(待完成数量)、canceledSz(被取消数量)和 accFillSz(累积完成数量)。这些属性提供了有关订单状态和进展的重要信息。
用户的订单状态
通过订阅 sprd-ordersWebSocket 频道,用户可以跟踪他们的订单状态。
- 提交订单后,无论是 Maker 还是 Taker,用户都会通过订单 WebSocket 频道道收到订单更新消息。该消息将指示订单的state==live。
- 订单成交和结算是异步的。当订单已成交但还没结算,用户将收到pendingSettleSz>0,fillSz== ""的订单更新消息
- 如果订单已部分成交且仍有待处理数量,用户将收到state==partially_filled的订单更新消息
- 如果订单完全成交,用户将收到state==filled的订单更新消息
- 如果订单未完全消耗,但已达到最终状态,用户将收到state==canceled的订单更新消息。
- 如果订单的某个部分被拒绝,用户会收到更新的订单更新,其中包含更新的 canceledSz和pendingFillSz,以及与错误对应的code和msg。
用户的交易状态
通过订阅 sprd-tradesWebSocket 频道,用户可以跟踪他们的交易状态。
1. 一笔已执行的交易在OKX上进行清算结算后,即为最终交易。
2. 对于成功清算的交易,用户会收到一条 WebSocket 消息,其中的state表示filled。
3. 在交易清算不成功的情况下,用户会收到一条交易更新消息,state反映为rejected。
4. 如果交易state为rejected,交易更新消息还将包含错误代码code和解释拒绝原因的相应错误消息 msg。
所有交易
所有用户都能够接收通过 OKX Nitro Spread 产品发生的所有交易的更新。 请务必注意,OKX Nitro Spreads 不会披露有关交易双方及交易方向(买入或卖出)的信息。
- 用户可以订阅sprd-public-trades频道来获取所有已成功结算的交易。
REST API
下单
下单
限速::20次/ 2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/sprd/order
请求示例
# 下价差订单
POST /api/v5/sprd/order
body
{
  "sprdId":"BTC-USDT_BTC-USDT-SWAP",
  "clOrdId":"b15",
  "side":"buy",
  "ordType":"limit",
  "px":"2.15",
  "sz":"2"
}
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 下单
result = spreadAPI.place_order(sprdId='BTC-USDT_BTC-USDT-SWAP',
                               clOrdId='b16',side='buy',ordType='limit',
                               px='2',sz='2')
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 是 | spread ID,如 BTC-USDT_BTC-USDT-SWAP | 
| clOrdId | String | 否 | 客户自定义订单ID字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间。 | 
| side | String | 是 | 订单方向 buy:买,sell:卖 | 
| ordType | String | 是 | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| sz | String | 是 | 委托数量。反向价差的数量单位为USD,正向及混合价差为其对应 baseCcy | 
| px | String | 是 | 委托价格,仅适用于 limit,post_only,ioc类型的订单 | 
返回示例
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "clOrdId": "b15",
      "ordId": "312269865356374016",
      "tag": "",
      "sCode": "0",
      "sMsg": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败或成功时的msg | 
撤单
撤销之前下的未完成订单。
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/sprd/cancel-order
请求示例
POST /api/v5/sprd/cancel-order
body
{
    "ordId":"2510789768709120"
}
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 撤单
result = spreadAPI.cancel_order(ordId='1905309079888199680')
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 | 
| clOrdId | String | 可选 | 用户自定义ID | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "clOrdId": "oktswap6",
            "ordId": "12345689",
            "sCode": "0",
            "sMsg": ""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败时的msg | 
全部撤单
撤销所有挂单
限速:10次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/sprd/mass-cancel
请求示例
POST /api/v5/sprd/mass-cancel
 body
 {
    "sprdId": "BTC-USDT_BTC-USDT-SWAP"
}
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 全部撤单
result = spreadAPI.cancel_all_orders(sprdId="BTC-USDT_BTC-USDT-SWAP")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | spread ID | 
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| result | Boolean | 请求结果 true,false | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "result": true
        }
    ]
}
修改订单
修改当前未成交的挂单
限速:20次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/sprd/amend-order
请求示例
POST /api/v5/sprd/amend-order
body
{
    "ordId":"2510789768709120",
    "newSz":"2"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 | 
| clOrdId | String | 可选 | 用户自定义order ID | 
| reqId | String | 否 | 用户自定义修改事件ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| newSz | String | 可选 | 修改的新数量,对于部分成交订单,该数量应包含已成交数量。 newSz和newPx不可同时为空。 | 
| newPx | String | 可选 | 修改后的新价格。 newSz和newPx不可同时为空。 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
         "clOrdId":"",
         "ordId":"12344",
         "reqId":"b12344",
         "sCode":"0",
         "sMsg":""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| clOrdId | String | 用户自定义order ID | 
| reqId | String | 用户自定义修改事件ID | 
| sCode | String | 事件执行结果的code,0代表成功 | 
| sMsg | String | 事件执行失败或成功时的msg | 
获取订单信息
查订单信息
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/sprd/order
请求示例
GET /api/v5/sprd/order?ordId=2510789768709120
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取订单详情
result = spreadAPI.get_order_details(ordId='1905309079888199680')
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 可选 | 订单ID, ordId和clOrdId必须传一个,若传两个,以ordId为主 | 
| clOrdId | String | 可选 | 用户自定义ID,如果 clOrdId关联了多个订单,只会返回最近的那笔订单 | 
返回示例
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "sprdId": "BTC-USD-SWAP_BTC-USD-200329",
      "ordId": "312269865356374016",
      "clOrdId": "b1",
      "tag": "",
      "px": "999",
      "sz": "3",
      "ordType": "limit",
      "side": "buy",
      "fillSz": "0",
      "fillPx": "",
      "tradeId": "",
      "accFillSz": "0",
      "pendingFillSz": "2",
      "pendingSettleSz": "1",
      "canceledSz": "1",
      "state": "live",
      "avgPx": "0",
      "cancelSource": "",
      "uTime": "1597026383085",
      "cTime": "1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | Spread ID | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格 | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| side | String | 订单方向 | 
| fillSz | String | 最新成交数量 | 
| fillPx | String | 最新成交价格 | 
| tradeId | String | 最近成交ID | 
| accFillSz | String | 累计成交数量 | 
| pendingFillSz | String | 待成交数量(包括待结算数量) | 
| pendingSettleSz | String | 待结算数量 | 
| canceledSz | String | 被取消数量 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段为"0" | 
| state | String | 订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交 | 
| cancelSource | String | 撤单原因 0: 系统撤单1: 用户撤单14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护34: 订单结算失败因为保证金不足35: 撤单因为其他订单保证金不足44:由于该币种的可用余额不足,无法在触发自动换币后进行兑换,您的订单已撤销,撤销订单后恢复的余额将用于自动换币。当该币种的总抵押借贷量达到平台抵押借贷风控上限时,则会触发自动换币。 | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
获取未成交订单列表
获取当前账户下所有未成交订单信息
限速:10次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/sprd/orders-pending
请求示例
GET /api/v5/sprd/orders-pending
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取未完成订单
result = spreadAPI.get_active_orders()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| state | String | 否 | 订单状态 live:等待成交partially_filled:部分成交 | 
| beginId | String | 否 | 请求的起始订单ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束订单ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "sprdId": "BTC-USDT_BTC-UST-SWAP",
      "ordId": "312269865356374016",
      "clOrdId": "b1",
      "tag": "",
      "px": "999",
      "sz": "3",
      "ordType": "limit",
      "side": "buy",
      "fillSz": "0",
      "fillPx": "",
      "tradeId": "",
      "accFillSz": "0",
      "pendingFillSz": "2",
      "pendingSettleSz": "1",
      "canceledSz": "1",
      "state": "live",
      "avgPx": "0",
      "cancelSource": "",
      "uTime": "1597026383085",
      "cTime": "1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格 | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| side | String | 订单方向 | 
| fillSz | String | 最新成交数量 | 
| fillPx | String | 最新成交价格 | 
| tradeId | String | 最近成交ID | 
| accFillSz | String | 累计成交数量 | 
| pendingFillSz | String | 待成交数量(包括待结算数量) | 
| pendingSettleSz | String | 待结算数量 | 
| canceledSz | String | 被取消数量 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段为"0" | 
| state | String | 订单状态 live:等待成交partially_filled:部分成交 | 
| cancelSource | String | 撤单原因 0: 系统撤单1: 用户撤单14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护34: 订单结算失败因为保证金不足35: 撤单因为其他订单保证金不足44:由于该币种的可用余额不足,无法在触发自动换币后进行兑换,您的订单已撤销,撤销订单后恢复的余额将用于自动换币。当该币种的总抵押借贷量达到平台抵押借贷风控上限时,则会触发自动换币。 | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如: 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如: 1597026383085 | 
获取历史订单记录(近21天)
获取最近21天挂单,且完全成交的订单数据,包括21天以前挂单,但近21天才成交的订单数据。按照订单创建时间倒序排序。
已经撤销的未成交单 只保留2小时。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/sprd/orders-history
请求示例
GET /api/v5/sprd/orders-history
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取历史订单
result = spreadAPI.get_orders()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| state | String | 否 | 订单状态 canceled:撤单成功filled:完全成交 | 
| beginId | String | 否 | 请求的起始订单ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束订单ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| begin | String | 否 | 筛选的开始时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| end | String | 否 | 筛选的结束时间戳,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
  "code": "0",
  "msg": "",
  "data": [
     {
      "sprdId": "BTC-USDT_BTC-UST-SWAP",
      "ordId": "312269865356374016",
      "clOrdId": "b1",
      "tag": "",
      "px": "999",
      "sz": "3",
      "ordType": "limit",
      "side": "buy",
      "fillSz": "0",
      "fillPx": "",
      "tradeId": "",
      "accFillSz": "0",
      "pendingFillSz": "2",
      "pendingSettleSz": "1",
      "canceledSz": "1",
      "state": "live",
      "avgPx": "0",
      "cancelSource": "",
      "uTime": "1597026383085",
      "cTime": "1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格 | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| side | String | 订单方向 | 
| fillSz | String | 最新成交数量 | 
| fillPx | String | 最新成交价格 | 
| tradeId | String | 最近成交ID | 
| accFillSz | String | 累计成交数量 | 
| pendingFillSz | String | 待成交数量(包括待结算数量) | 
| pendingSettleSz | String | 待结算数量 | 
| canceledSz | String | 被取消数量 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段为"0" | 
| state | String | 订单状态 canceled:撤单成功filled:完全成交 | 
| cancelSource | String | 撤单原因 0: 系统撤单1: 用户撤单14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护34: 订单结算失败因为保证金不足35: 撤单因为其他订单保证金不足44:由于该币种的可用余额不足,无法在触发自动换币后进行兑换,您的订单已撤销,撤销订单后恢复的余额将用于自动换币。当该币种的总抵押借贷量达到平台抵押借贷风控上限时,则会触发自动换币。 | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如: 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式, 如 : 1597026383085 | 
获取历史订单记录(近三月)
获取最近三个月挂单,且完全成交的订单数据,包括三个月以前挂单,但近三个月才成交的订单数据。按照订单创建时间倒序排序。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/sprd/orders-history-archive
请求示例
GET /api/v5/sprd/orders-history-archive
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordType | String | 否 | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| state | String | 否 | 订单状态 canceled:撤单成功filled:完全成交 | 
| instType | String | 否 | 产品类型 SPOT:币币FUTURES:交割合约SWAP:永续合约订单任意一条腿的spread包含相应产品类型,则返回 | 
| instFamily | String | 否 | 交易品种,如 BTC-USDT订单任意一条腿的spread包含相应交易品种,则返回 | 
| beginId | String | 否 | 请求的起始订单ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束订单ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| begin | String | 否 | 筛选的开始时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| end | String | 否 | 筛选的结束时间戳,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
  "code": "0",
  "msg": "",
  "data": [
     {
      "sprdId": "BTC-USDT_BTC-UST-SWAP",
      "ordId": "312269865356374016",
      "clOrdId": "b1",
      "tag": "",
      "px": "999",
      "sz": "3",
      "ordType": "limit",
      "side": "buy",
      "fillSz": "0",
      "fillPx": "",
      "tradeId": "",
      "accFillSz": "0",
      "pendingFillSz": "2",
      "pendingSettleSz": "1",
      "canceledSz": "1",
      "state": "cancelled",
      "avgPx": "0",
      "cancelSource": "",
      "uTime": "1597026383085",
      "cTime": "1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| px | String | 委托价格 | 
| sz | String | 委托数量 | 
| ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| side | String | 订单方向 | 
| fillSz | String | 最新成交数量 | 
| fillPx | String | 最新成交价格 | 
| tradeId | String | 最近成交ID | 
| accFillSz | String | 累计成交数量 | 
| pendingFillSz | String | 待成交数量(包括待结算数量) | 
| pendingSettleSz | String | 待结算数量 | 
| canceledSz | String | 被取消数量 | 
| avgPx | String | 成交均价,如果成交数量为0,该字段为"0" | 
| state | String | 订单状态 canceled:撤单成功filled:完全成交 | 
| cancelSource | String | 撤单原因 0: 系统撤单1: 用户撤单14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护34: 订单结算失败因为保证金不足35: 撤单因为其他订单保证金不足 | 
| uTime | String | 订单状态更新时间,Unix时间戳的毫秒数格式,如: 1597026383085 | 
| cTime | String | 订单创建时间,Unix时间戳的毫秒数格式, 如 : 1597026383085 | 
获取历史成交数据(近七天)
获取近7天的订单成交明细信息. 结果按时间倒序返回。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/sprd/trades
请求示例
GET /api/v5/sprd/trades
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取私有交易
result = spreadAPI.get_trades()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| tradeId | String | 否 | 交易 ID | 
| ordId | String | 否 | 订单 ID | 
| beginId | String | 否 | 请求的起始交易ID,请求此ID之后(更新的数据)的分页内容,不包括 beginId | 
| endId | String | 否 | 请求的结束交易ID,请求此ID之前(更旧的数据)的分页内容,不包括 endId | 
| begin | String | 否 | 筛选的开始时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| end | String | 否 | 筛选的结束时间戳,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| limit | String | 否 | 返回结果的数量,最大为100,默认100条 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "sprdId": "BTC-USDT-SWAP_BTC-USDT-200329",
            "tradeId": "123",
            "ordId": "123445",
            "clOrdId": "b16",
            "tag": "",
            "fillPx": "999",
            "fillSz": "3",
            "state": "filled",
            "side": "buy",
            "execType": "M",
            "ts": "1597026383085",
            "legs": [
                {
                    "instId": "BTC-USDT-SWAP",
                    "px": "20000",
                    "sz": "3",
                    "szCont": "0.03",
                    "side": "buy",
                    "fillPnl": "",
                    "fee": "",
                    "feeCcy": "",
                    "tradeId": "1232342342"
                },
                {
                    "instId": "BTC-USDT-200329",
                    "px": "21000",
                    "sz": "3",
                    "szCont": "0.03",
                    "side": "sell",
                    "fillpnl": "",
                    "fee": "",
                    "feeCcy": "",
                    "tradeId": "5345646634"
                }
            ],
            "code": "",
            "msg": ""
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| tradeId | String | 交易ID | 
| ordId | String | 订单ID | 
| clOrdId | String | 客户自定义订单ID | 
| tag | String | 订单标签 | 
| fillPx | String | 成交价格 | 
| fillSz | String | 成交数量 | 
| side | String | 交易方向 buy:买sell:卖 | 
| state | String | 交易状态 filled:已成交rejected:被拒绝 | 
| execType | String | 流动性方向 T:takerM:maker | 
| ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| legs | Array of objects | 交易的腿 | 
| > instId | String | 产品 ID | 
| > px | String | 价格 | 
| > sz | String | 数量 | 
| > szCont | String | 成交合约数量 仅适用于合约,现货将返回"" | 
| > side | String | 交易方向 buy:买sell:卖 | 
| > fillPnl | String | 最新成交收益,适用于有成交的平仓订单。其他情况均为0。 | 
| > fee | String | 手续费金额或者返佣金额,手续费扣除为‘负数’,如-0.01;手续费返佣为‘正数’,如 0.01 | 
| > feeCcy | String | 交易手续费币种或者返佣金币种 | 
| > tradeId | String | 交易ID | 
| code | String | 错误码,默认0 | 
| msg | String | 错误提示,默认 "" | 
获取Spreads(公共)
获取可交易的Spreads。
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/sprd/spreads
请求示例
GET /api/v5/sprd/spreads?instId=BTC-USDT
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取价差产品
result = spreadAPI.get_spreads()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| baseCcy | string | 否 | Spread 币种,如 BTC | 
| instId | String | 否 | Spread 里包含的产品ID | 
| sprdId | String | 否 | Spread ID | 
| state | string | 否 | Spread 状态 live:交易中suspend:暂停中expired:订单过期 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [{
            "sprdId": "ETH-USD-SWAP_ETH-USD-231229",
            "sprdType": "inverse",
            "state": "live",
            "baseCcy": "ETH",
            "szCcy": "USD",
            "quoteCcy": "USD",
            "tickSz": "0.01",
            "minSz": "10",
            "lotSz": "10",
            "listTime": "1686903000159",
            "legs": [{
                    "instId": "ETH-USD-SWAP",
                    "side": "sell"
                },
                {
                    "instId": "ETH-USD-231229",
                    "side": "buy"
                }
            ],
            "expTime": "1703836800000",
            "uTime": "1691376905595"
        },
        {
            "sprdId": "BTC-USDT_BTC-USDT-SWAP",
            "sprdType": "linear",
            "state": "live",
            "baseCcy": "BTC",
            "szCcy": "BTC",
            "quoteCcy": "USDT",
            "tickSz": "0.0001",
            "minSz": "0.001",
            "lotSz": "1",
            "listTime": "1597026383085",
            "expTime": "1597029999085",
            "uTime": "1597028888085",
            "legs": [{
                    "instId": "BTC-USDT",
                    "side": "sell"
                },
                {
                    "instId": "BTC-USDT-SWAP",
                    "side": "buy"
                }
            ]
        },
        {
            "sprdId": "BTC-USDT_BTC-USDT-230317",
            "sprdType": "linear",
            "state": "live",
            "baseCcy": "BTC",
            "szCcy": "BTC",
            "quoteCcy": "USDT",
            "tickSz": "0.0001",
            "minSz": "0.001",
            "lotSz": "1",
            "listTime": "1597026383085",
            "expTime": "1597029999085",
            "uTime": "1597028888085",
            "legs": [{
                    "instId": "BTC-USDT",
                    "side": "sell"
                },
                {
                    "instId": "BTC-USDT-230317",
                    "side": "buy"
                }
            ]
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID | 
| sprdType | String | Spread类型,有效值为 linear,inverse,hybrid | 
| state | String | Spread状态 live:交易中suspend:暂停中expired:已过期 | 
| baseCcy | String | Spread币种,如 BTC | 
| szCcy | String | Spread数量单位,如 USD, BTC, ETH, USD。 | 
| quoteCcy | String | Spread计价单位。如 USDT,USD。 | 
| tickSz | String | 下单价格精度,如 0.0001。单位为Spread计价单位quoteCcy。 | 
| minSz | String | 最小下单数量。单位为Spread数量单位szCcy。 | 
| lotSz | String | 下单数量精度。单位为Spread数量单位szCcy。 | 
| listTime | String | 上线日期。Unix时间戳的毫秒数格式,如 1597026383085 | 
| expTime | String | 失效日期。Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 上次更新时间。Unix时间戳的毫秒数格式,如 1597026383085 | 
| legs | array of objects | 腿 | 
| > instId | String | 产品ID | 
| > side | String | 产品方向 buy:买入sell:卖出 | 
获取Spread产品深度(公共)
获取Spread产品深度列表
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/sprd/books
请求示例
GET /api/v5/sprd/books?sprdId=BTC-USDT_BTC-USDT-SWAP
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取深度
result = spreadAPI.get_order_book(sprdId="BTC-USDT_BTC-USDT-SWAP", sz=20)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 是 | spread ID,如BTC-USDT_BTC-USDT-SWAP | 
| sz | String | 否 | 深度档位数量。最大值为400。默认值为5。 | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "asks": [
                [
                    "41006.8", // 价格
                    "0.60038921", // 数量
                    "1" // 此价格上订单数量
                ]
            ],
            "bids": [
                [
                    "41006.3",
                    "0.30178218",
                    "2"
                ]
            ],
            "ts": "1629966436396"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| asks | Array of Arrays | 卖方深度 | 
| bids | Array of Arrays | 买方深度 | 
| ts | String | 深度产生的时间 | 
获取单个Spread产品行情信息(公共)
获取单个Spread产品行情信息,包括最新成交价,买一卖一价及数量。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/sprd-ticker
请求示例
GET /api/v5/market/sprd-ticker?sprdId=BTC-USDT_BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 是 | spread ID, 如 BTC-USDT_BTC-USDT-SWAP | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "sprdId": "BTC-USDT_BTC-USDT-SWAP",
            "last": "14.5",
            "lastSz": "0.5",
            "askPx": "8.5",
            "askSz": "12.0",
            "bidPx": "0.5",
            "bidSz": "12.0",
            "open24h": "4",
            "high24h": "14.5",
            "low24h": "-2.2",
            "vol24h": "6.67",
            "ts": "1715331406485"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID | 
| last | String | 最新成交价 | 
| lastSz | String | 最新成交的数量 | 
| askPx | String | 卖一价 | 
| askSz | String | 卖一价对应的数量 | 
| bidPx | String | 买一价 | 
| bidSz | String | 买一价对应的数量 | 
| open24h | String | 24小时开盘价 | 
| high24h | String | 24小时最高价 | 
| low24h | String | 24小时最低价 | 
| vol24h | String | 24小时交易量 正向及混合价差,单位为交易货币;反向价差,单位为美元 | 
| ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取公共成交数据(公共)
查询市场上的Spread成交信息数据,每次请求最多返回500条结果。结果按时间倒序返回。
限速:20次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/sprd/public-trades
请求示例
GET /api/v5/sprd/public-trades?sprdId=BTC-USDT_BTC-USDT-SWAP
import okx.SpreadTrading as SpreadTrading
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
spreadAPI = SpreadTrading.SpreadTradingAPI(apikey, secretkey, passphrase, False, flag)
# 获取公共交易信息
result = spreadAPI.get_public_trades(sprdId='ETH-USDT-SWAP_ETH-USDT-230929')
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 否 | Spread ID,例如BTC-USDT_BTC-USDT-SWAP | 
返回示例
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "sprdId": "BTC-USDT_BTC-USDC-SWAP",
            "side": "sell",
            "sz": "0.1",
            "px": "964.1",
            "tradeId": "242720719",
            "ts": "1654161641568"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| sprdId | String | spread ID | 
| tradeId | String | 交易ID | 
| px | String | 成交价格 | 
| sz | String | 成交数量 | 
| side | String | Taker的交易方向 buy:买sell:卖 | 
| ts | String | 交易时间,Unix时间戳的毫秒数格式, 如 : 1597026383085 | 
获取价差交易产品K线数据
获取K线数据。K线数据按请求的粒度分组返回,K线数据每个粒度最多可获取最近1,440条。
限速: 40次/2s
限速规则: IP
HTTP请求
GET /api/v5/market/sprd-candles
请求示例
GET /api/v5/market/sprd-candles?sprdId=BTC-USDT_BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 是 | Spread ID | 
| bar | String | 否 | 时间粒度,默认值1m,如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC+0开盘价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",
        "0"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "24912403",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| vol | String | 交易量 | 
| confirm | String | K线状态 0:K线未完结1:K线已完结 | 
获取价差交易产品历史K线数据
获取最近几年的历史k线数据
限速: 20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/sprd-history-candles
请求示例
GET /api/v5/market/sprd-history-candles?sprdId=BTC-USDT_BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| sprdId | String | 是 | Spread ID | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值1m,如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/2D/3D/1W/1M/3M] UTC+0开盘价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",
        "1"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "24912403",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| vol | String | 交易量 | 
| confirm | String | K线状态 0:K线未完结1:K线已完结 | 
倒计时全部撤单
在倒计时结束后,取消所有挂单。仅适用于价差交易。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/sprd/cancel-all-after
请求示例
POST /api/v5/sprd/cancel-all-after
{
   "timeOut":"30"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| timeOut | String | 是 | 取消挂单的倒计时,单位为秒 取值范围为 0, [10, 120] 0 代表不使用该功能 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "triggerTime":"1587971460",
            "ts":"1587971400"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| triggerTime | String | 触发撤单的时间 triggerTime=0 代表未使用该功能 | 
| ts | String | 请求被接收到的时间 | 
Websocket交易API
WS / 下单
只有当您的账户有足够的资金才能下单。
服务地址
/ws/v5/business (需要登录)
限速:20次/2s
限速规则:User ID
请求示例
{
  "id": "1512",
  "op": "sprd-order",
  "args": [
    {
       "sprdId":"BTC-USDT_BTC-USDT-SWAP",
       "clOrdId":"b15",
       "side":"buy",
       "ordType":"limit",
       "px":"2.15",
       "sz":"2"
    }
  ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作, sprd-order | 
| args | Array of objects | 是 | 请求参数 | 
| > sprdId | String | 是 | 产品ID,如 BTC-USDT_BTC-USDT-SWAP | 
| > clOrdId | String | 否 | 由用户设置的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| > tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-16位之间。 | 
| > side | String | 是 | 订单方向, buysell | 
| > ordType | String | 是 | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| > sz | String | 是 | 委托数量 | 
| > px | String | 是 | 委托价,仅适用于 limit、post_only、ioc类型的订单 | 
成功返回示例
{
    "id": "1512",
    "op": "sprd-order",
    "data": [{
        "clOrdId": "",
        "ordId": "12345689",
        "tag": "",
        "sCode": "0",
        "sMsg": ""
    }],
    "code": "0",
    "msg": ""
}
失败返回示例
{
    "id": "1512",
    "op": "sprd-order",
    "data": [{
        "clOrdId": "",
        "ordId": "",
        "tag": "",
        "sCode": "5XXXX",
        "sMsg": "not exist"
    }],
    "code": "1",
    "msg": ""
}
格式错误返回示例
{
    "id": "1512",
    "op": "sprd-order",
    "data": [],
    "code": "60013",
    "msg": "Invalid args"
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| op | String | 业务操作 | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID | 
| > tag | String | 订单标签 | 
| > sCode | String | 订单状态码,0 代表成功 | 
| > sMsg | String | 订单状态消息 | 
WS / 改单
修改当前未成交的订单
服务地址
/ws/v5/business (需要登录)
限速:20次/2s
限速规则:User ID
请求示例
{
   "id":"1512",
   "op":"sprd-amend-order",
   "args":[
      {
         "ordId":"2510789768709120",
         "newSz":"2"
      }
   ]
}
请求参数
| Parameter | Type | Required | Description | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作, sprd-amend-order | 
| args | Array of objects | 是 | 请求参数 | 
| > ordId | String | 可选 | 订单ID ordId 和 clOrdId必须传一个,若传两个,以 ordId 为主 | 
| > clOrdId | String | 可选 | 由用户设置的订单ID | 
| > reqId | String | 否 | 用户自定义修改事件ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| > newSz | String | 可选 | 修改的新数量,对于部分成交订单,该数量应包含已成交数量。 newSz或newPx至少传一个。 | 
| > newPx | String | 可选 | 修改后的新价格 | 
成功返回示例
{
  "id": "1512",
  "op": "sprd-amend-order",
  "data": [
    {
      "clOrdId": "",
      "ordId": "2510789768709120",
      "reqId": "b12344",
      "sCode": "0",
      "sMsg": ""
    }
  ],
  "code": "0",
  "msg": ""
}
失败返回示例
{
  "id": "1512",
  "op": "sprd-amend-order",
  "data": [
    {
      "clOrdId": "",
      "ordId": "2510789768709120",
      "reqId": "b12344",
      "sCode": "5XXXX",
      "sMsg": "order not exist"
    }
  ],
  "code": "1",
  "msg": ""
}
格式错误返回示例
{
  "id": "1512",
  "op": "sprd-amend-order",
  "data": [],
  "code": "60013",
  "msg": "Invalid args"
}
返回参数
| 参数 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| op | String | 操作 | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID | 
| > reqId | String | 用户自定义修改事件ID | 
| > sCode | String | 订单状态码,0 代表成功 | 
| > sMsg | String | 订单状态消息 | 
WS / 撤单
撤销当前未完成订单
服务地址
/ws/v5/business (需要登录)
限速:20次/2s
限速规则:User ID
请求示例
{
  "id": "1514",
  "op": "sprd-cancel-order",
  "args": [
    {
      "ordId": "2510789768709120"
    }
  ]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作, sprd-cancel-order | 
| args | Array of objects | 是 | 请求参数 | 
| > ordId | String | 可选 | 订单ID ordId和clOrdId必须传一个,若传两个,以 ordId 为主 | 
| > clOrdId | String | 可选 | 用户提供的订单ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度要在1-32位之间。 | 
成功返回示例
{
    "id": "1514",
    "op": "sprd-cancel-order",
    "data": [{
        "clOrdId": "",
        "ordId": "2510789768709120",
        "sCode": "0",
        "sMsg": ""
    }],
    "code": "0",
    "msg": ""
}
失败返回示例
{
    "id": "1514",
    "op": "sprd-cancel-order",
    "data": [{
        "clOrdId": "",
        "ordId": "2510789768709120",
        "sCode": "5XXXX",
        "sMsg": "Order not exist"
    }],
    "code": "1",
    "msg": ""
}
格式错误返回示例
{
    "id": "1514",
    "op": "sprd-cancel-order",
    "data": [],
    "code": "60013",
    "msg": "Invalid args"
}
返回参数
| 参数 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| op | String | 业务操作 | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID | 
| > sCode | String | 订单状态码,0 代表成功 | 
| > sMsg | String | 订单状态消息 | 
WS / 全部撤单
服务地址
/ws/v5/business (需要登录)
限速:5次/2s
限速规则:User ID
请求示例
{
    "id": "1512",
    "op": "sprd-mass-cancel",
    "args": [{
        "sprdId":"BTC-USDT_BTC-USDT-SWAP"
    }]
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 是 | 消息的唯一标识 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 支持的业务操作, sprd-mass-cancel | 
| args | Array of objects | 是 | 请求参数 | 
| > sprdId | String | 否 | 价差ID | 
成功返回示例
{
    "id": "1512",
    "op": "sprd-mass-cancel",
    "data": [
        {
            "result": true
        }
    ],
    "code": "0",
    "msg": ""
} 
格式错误返回示例
{
    "id": "1512",
    "op": "sprd-mass-cancel",
    "data": [],
    "code": "60013",
    "msg": "Invalid args"
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| op | String | 业务操作 | 
| code | String | 代码 | 
| msg | String | 消息 | 
| data | Array of objects | 请求成功后返回的数据 | 
| > result | Boolean | 撤单结果 true:全部撤单成功false:全部撤单失败 | 
WebSocket私有频道
- 实盘地址: wss://ws.okx.com:8443/ws/v5/business
- 模拟盘地址: wss://wspap.okx.com:8443/ws/v5/business
订单频道
通过订阅sprd-orders频道获取Spread订单信息,首次订阅不推送,只有当下单、撤单等事件触发时,推送数据。
服务地址
/ws/v5/business (需要登录)
请求示例:单个
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-orders",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "sprd-orders",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例:
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-orders",
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "sprd-orders",
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 sprd-orders | 
| > sprdId | String | 是 | Spread ID | 
成功返回示例:单个
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "sprd-orders",
    "sprdId": "BTC-USDT_BTC-UST-SWAP"
  },
  "connId": "a4d3ae55"
}
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "sprd-orders"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"sprd-orders\", \"instType\" : \"FUTURES\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 否 | Spread ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:单个
{
  "arg": {
        "channel": "sprd-orders",
        "sprdId": "BTC-USDT_BTC-USDT-SWAP",
        "uid": "614488474791936"
    },
  "data": [
     {
      "sprdId": "BTC-USDT_BTC-UST-SWAP",
      "ordId": "312269865356374016",
      "clOrdId": "b1",
      "tag": "",
      "px": "999",
      "sz": "3",
      "ordType": "limit",
      "side": "buy",
      "fillSz": "0",
      "fillPx": "",
      "tradeId": "",
      "accFillSz": "0",
      "pendingFillSz": "2",
      "pendingSettleSz": "1",
      "canceledSz": "1",
      "state": "live",
      "avgPx": "0",
      "cancelSource": "",
      "uTime": "1597026383085",
      "cTime": "1597026383085",
      "code": "0",
      "msg": "",
      "reqId": "",
      "amendResult": ""
    }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > sprdId | String | spread ID | 
| data | Array of objects | 订阅的数据 | 
| > sprdId | String | spread ID | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID来识别您的订单 | 
| > tag | String | 订单标签 | 
| > px | String | 委托价格 | 
| > sz | String | 原始委托数量,单位szCcy | 
| > ordType | String | 订单类型 market:市价单limit:限价单post_only:只做maker单ioc:立即成交并取消剩余 | 
| > side | String | 订单方向 buysell | 
| > fillSz | String | 最新成交数量,适用于结算成功的订单更新 | 
| > fillPx | String | 最新成交价格,适用于结算成功的订单更新 | 
| > tradeId | String | 最近成交ID | 
| > accFillSz | String | 累计成交数量 | 
| > pendingFillSz | String | 待成交数量,包括待结算数量 | 
| > pendingSettleSz | String | 待结算数量 | 
| > canceledSz | String | 撤单数量 | 
| > avgPx | String | 成交均价,如果成交数量为0,该字段为"0" | 
| > state | String | 订单状态 canceled:撤单成功live:等待成交partially_filled:部分成交filled:完全成交 | 
| > cancelSource | String | 撤单原因 0: 系统撤单1: 用户撤单14: 已撤单:IOC 委托订单未完全成交,仅部分成交,导致部分挂单被撤回15: 已撤单:该订单委托价不在限价范围内20: 系统倒计时撤单31: 当前只挂单订单 (Post only) 将会吃掉挂单深度32: 自成交保护34: 订单结算失败因为保证金不足35: 撤单因为其他订单保证金不足44:由于该币种的可用余额不足,无法在触发自动换币后进行兑换,您的订单已撤销,撤销订单后恢复的余额将用于自动换币。当该币种的总抵押借贷量达到平台抵押借贷风控上限时,则会触发自动换币。 | 
| > uTime | String | 订单更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > cTime | String | 订单创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > code | String | 错误码,默认为0 | 
| > msg | String | 错误消息,默认为"" | 
| > reqId | String | 修改订单时使用的request ID,如果没有修改,该字段为"" | 
| > amendResult | String | 修改订单的结果 -1:失败0:成功如果没有修改,该字段为"" | 
成交数据频道
通过订阅 sprd-trades 频道接收与用户成交信息相关的更新。
已成交(filled)和被拒绝(rejected)的交易都会通过此频道推送更新。
如果你的订单与多个订单相匹配,你有可能会收到多条更新推送。
服务地址
/ws/v5/business (需要登录)
请求示例:单个
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-trades",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "sprd-trades",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例:
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-trades"
    }
  ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
          "channel": "sprd-trades"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 sprd-trades | 
| > sprdId | String | 否 | Spread ID | 
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 否 | Spread ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "sprd-trades",
        "sprdId": "BTC-USDT_BTC-USDT-SWAP",
        "uid": "614488474791936"
    },
    "data":[
         {
            "sprdId":"BTC-USDT-SWAP_BTC-USDT-200329",
            "tradeId":"123",
            "ordId":"123445",
            "clOrdId": "b16",
            "tag":"",
            "fillPx":"999",
            "fillSz":"3",
            "state": "filled",
            "side":"buy",
            "execType":"M",
            "ts":"1597026383085",
            "legs": [
                {
                    "instId": "BTC-USDT-SWAP",
                    "px": "20000",
                    "sz": "3",
                    "szCont": "0.03",
                    "side": "buy",
                    "fillPnl": "",
                    "fee": "",
                    "feeCcy": "",
                    "tradeId": "1232342342"
                },
                {
                    "instId": "BTC-USDT-200329",
                    "px": "21000",
                    "sz": "3",
                    "szCont": "0.03",
                    "side": "sell",
                    "fillPnl": "",
                    "fee": "",
                    "feeCcy": "",
                    "tradeId": "5345646634"
                },
            ]
            "code": "",
            "msg": ""
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > sprdId | String | spread ID | 
| data | Array of objects | Subscribed data | 
| > sprdId | String | spread ID | 
| > tradeId | String | 交易ID | 
| > ordId | String | 订单ID | 
| > clOrdId | String | 由用户设置的订单ID | 
| > tag | String | 订单标签 | 
| > fillPx | String | 最新成交价 | 
| > fillSz | String | 最新成交数量 | 
| > side | String | 交易方向 buysell | 
| > state | String | 交易状态。 filled: 已成交rejected: 被拒绝 | 
| > execType | String | 流动性方向 T:takerM:maker | 
| >ts | String | 成交明细产生时间,Unix时间戳的毫秒数格式,如1597026383085 | 
| > legs | Array of objects | 交易的腿 | 
| >> instId | String | 产品 ID | 
| >> px | String | 价格 | 
| >> sz | String | 数量 | 
| >> szCont | String | 成交合约数量 仅适用于合约,现货将返回"" | 
| >> side | String | 交易方向 buy:买sell:卖 | 
| >> fillPnl | String | 最新成交收益,适用于有成交的平仓订单。其他情况均为0。 | 
| >> fee | String | 手续费金额或者返佣金额,手续费扣除为‘负数’,如-0.01;手续费返佣为‘正数’,如 0.01 | 
| >> feeCcy | String | 交易手续费币种或者返佣金币种 | 
| >> tradeId | String | 交易ID | 
| > code | String | 错误码,默认0 | 
| > msg | String | 错误提示,默认 "" | 
WebSocket公共频道
- 实盘地址: wss://ws.okx.com:8443/ws/v5/business
- 模拟盘地址: wss://wspap.okx.com:8443/ws/v5/business
深度频道
获取Spread深度数据。可用频道有:
- sprd-bbo-tbt: 首次推1档快照数据,以后定量推送,每10毫秒当1档快照数据有变化推送一次1档数据
- sprd-books5: 首次推5档快照数据,以后定量推送,每100毫秒当5档快照数据有变化推送一次5档数据
- sprd-books-l2-tbt: 首次推400档快照数据,以后增量推送,每10毫秒推送一次变化的数据
- 单个连接、交易产品维度,深度频道的推送顺序固定为:sprd-bbo-tbt -> sprd-books-l2-tbt -> sprd-books5
URL Path
/ws/v5/business
请求示例:sprd-books5
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-books5",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "sprd-books5",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求示例:sprd-books-l2-tbt
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-books-l2-tbt",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "sprd-books-l2-tbt",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 sprd-bbo-tbtsprd-books5sprd-books-l2-tbt | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 是 | spread ID | 
返回示例:sprd-books5
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "sprd-books5",
    "sprdId": "BTC-USDT_BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
返回示例:sprd-books-l2-tbt
{
  "id": "1512",
   "event":"subscribe",
   "arg":{
      "channel":"sprd-books-l2-tbt",
      "sprdId":"BTC-USDT_BTC-USDT-SWAP"
   },
   "connId":"214fdd24"
}
失败示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"args\":[{ \"channel\" : \"sprd-books5\", \"sprdId\" : \"BTC-USD_BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 sprd-bbo-tbtsprd-books5sprd-books-l2-tbt | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 是 | spread ID | 
| msg | String | 否 | 错误消息 | 
| code | String | 否 | 错误码 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例:sprd-books5
{
  "arg": {
    "channel": "sprd-books5",
    "sprdId": "BTC-USDT_BTC-USDT-SWAP"
  },
  "data": [
    {
      "asks": [
        ["111.06","55154","2"],
        ["111.07","53276","2"],
        ["111.08","72435","2"],
        ["111.09","70312","2"],
        ["111.1","67272","2"]],
      "bids": [
        ["111.05","57745","2"],
        ["111.04","57109","2"],
        ["111.03","69563","2"],
        ["111.02","71248","2"],
        ["111.01","65090","2"]],
      "ts": "1670324386802",
      "seqId":1724294007352168320
    }
  ]
}
推送示例:sprd-books-l2-tbt
{
   "arg":{
      "channel":"sprd-books-l2-tbt",
      "sprdId":"BTC-USDT_BTC-USDT-SWAP"
   },
   "action":"snapshot",
   "data":[
      {
         "asks":[
            ["1.9","1.1","3"],
            ["2.5","0.9","1"],
            ["3.2","4.921","1"],
            ["4.8","0.165","1"],
            ["5.2","4.921","1"]
          ......
         ],
         "bids":[
            ["1.8","0.165","1"],
            ["0.6","0.2","2"],
            ["0","23.49","1"],
            ["-0.1","1","1"],
            ["-0.6","1","1"],
            ["-3.9","4.921","1"]
            ......
         ],
         "ts":"1724391380926",
         "checksum":-1285595583,
         "prevSeqId":-1,
         "seqId":1724294007352168320
      }
   ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > sprdId | String | Spread ID | 
| action | String | 推送数据动作,增量推送数据还是全量推送数据 snapshot:全量update:增量 | 
| data | Array of objects | 订阅的数据 | 
| > asks | Array of strings | 卖方深度 | 
| > bids | Array of strings | 买方深度 | 
| > ts | String | 数据更新时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > checksum | Integer | 检验和 (下方注解)。仅适用 sprd-books-l2-tbt | 
| > prevSeqId | Integer | 上一个推送的序列号。仅适用 sprd-books-l2-tbt | 
| > seqId | Integer | 推送的序列号 (下方注解) | 
序列号
seqId是交易所行情的一个序号。如果用户通过多个websocket连接同一频道,收到的序列号会是相同的。每个sprdId对应一套。用户可以使用在增量推送频道的prevSeqId和seqId来构建消息序列。这将允许用户检测数据包丢失和消息的排序。正常场景下seqId的值大于prevSeqId。新消息中的prevSeqId与上一条消息的seqId匹配。最小序列号值为0,除了快照消息的prevSeqId为-1。
异常情况:
1. 如果一段时间内没有深度更新,OKX将发一条消息'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机制
此机制可以帮助用户校验深度数据的准确性。
深度合并
用户订阅增量推送深度频道成功后,首先获取初始全量深度数据,当获取到增量推送数据后,更新本地全量深度数据。
- 如果有相同价格,则比较数量;数量为0删除此深度,数量有变化则替换此数据。
- 如果没有相同价格,则按照价格优劣排序(bid为价格降序,ask为价格升序),将深度信息插入到全量数据中
计算校验和
先用深度合并后前25档bids和asks组成一个字符串(其中ask和bid中的价格和数量以冒号连接),再计算其crc32值(32位有符号整型)。
公共成交数据频道
订阅sprd-public-trades获取最近的成交数据,有成交数据就推送,每次推送仅包含一条成交数据。
URL Path
/ws/v5/business
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-public-trades",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "sprd-public-trades",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 sprd-public-trades | 
| > sprdId | String | 是 | Spread ID | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
      "channel": "sprd-public-trades",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"sprd-public-trades\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 是 | Spread ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "sprd-public-trades",
        "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    },
    "data": [
        {
            "sprdId": "BTC-USDT_BTC-USDT-SWAP",
            "tradeId": "2499206329160695808",
            "px": "-10",
            "sz": "0.001",
            "side": "sell",
            "ts": "1726801105519"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > sprdId | String | spread ID | 
| data | Array of objects | 订阅的数据 | 
| > sprdId | String | spread ID | 
| > tradeId | String | 交易 ID | 
| > px | String | 成交价格 | 
| sz | String | 成交数量 对于币币交易,成交数量的单位为交易货币 对于交割、永续以及期权,单位为张。 | 
| > side | String | 成交方向 buysell | 
| > ts | String | 成交时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
行情频道
订阅sprd-tickers获取产品的最新成交价、买一价、卖一价及数量等信息。
最快100ms推送一次,没有触发事件时最慢1s推送一次,触发推送的事件有:成交、买一卖一发生变动。
URL Path
/ws/v5/business
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "sprd-tickers",
      "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "sprd-tickers",
          "sprdId": "BTC-USDT_BTC-USDT-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 sprd-tickers | 
| > sprdId | String | 是 | spread ID | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "sprd-tickers",
    "sprdId": "BTC-USDT_BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"sprd-tickers\", \"instId\" : \"LTC-USD-200327\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > sprdId | String | 是 | Spread ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "sprd-tickers",
        "sprdId": "BTC-USDT_BTC-USDT-SWAP"
    },
    "data": [
        {
            "sprdId": "BTC-USDT_BTC-USDT-SWAP",
            "last": "4",
            "lastSz": "0.01",
            "askPx": "19.7",
            "askSz": "5.79",
            "bidPx": "5.9",
            "bidSz": "5.79",
            "open24h": "-7",
            "high24h": "19.6",
            "low24h": "-7",
            "vol24h": "9.87",
            "ts": "1715247061026"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > sprdId | String | spread ID | 
| data | Array of objects | 订阅的数据 | 
| > sprdId | String | spread ID | 
| > last | String | 最新成交价 | 
| > lastSz | String | 最新成交的数量 | 
| > askPx | String | 卖一价 | 
| > askSz | String | 卖一价对应的量 | 
| > bidPx | String | 买一价 | 
| > bidSz | String | 买一价对应的数量 | 
| > open24h | String | 24小时开盘价 | 
| > high24h | String | 24小时最高价 | 
| > low24h | String | 24小时最低价 | 
| > vol24h | String | 24小时交易量,单元为交易货币或美元 | 
| > ts | String | 数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
K线频道
该频道使用业务WebSocket,不需鉴权。
获取K线数据,推送频率最快是间隔1秒推送一次数据。
URL Path
/ws/v5/business
请求示例
{
   "id": "1512",
   "op":"subscribe",
   "args":[
      {
         "channel":"sprd-candle1D",
         "sprdId":"BTC-USDT_BTC-USDT-SWAP"
      }
   ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
      {
         "channel":"sprd-candle1D",
         "sprdId":"BTC-USDT_BTC-USDT-SWAP"
      }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 sprd-candle3Msprd-candle1Msprd-candle1Wsprd-candle1Dsprd-candle2Dsprd-candle3Dsprd-candle5Dsprd-candle12Hsprd-candle6Hsprd-candle4Hsprd-candle2Hsprd-candle1Hsprd-candle30msprd-candle15msprd-candle5msprd-candle3msprd-candle1msprd-candle3Mutcsprd-candle1Mutcsprd-candle1Wutcsprd-candle1Dutcsprd-candle2Dutcsprd-candle3Dutcsprd-candle5Dutcsprd-candle12Hutcsprd-candle6Hutc | 
| > sprdId | String | 是 | Spread ID | 
成功返回示例
{
  "id": "1512",
  "event": "subscribe",
  "arg": {
    "channel": "sprd-candle1D",
    "sprdId": "BTC-USDT_BTC-USDT-SWAP"
  },
  "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"sprd-candle1D\", \"instId\" : \"BTC-USD-191227\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| channel | String | 是 | 频道名 | 
| sprdId | String | 是 | Spread ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
推送示例
{
  "arg": {
    "channel": "sprd-candle1D",
    "sprdId": "BTC-USDT_BTC-USD-SWAP"
  },
  "data": [
    [
      "1597026383085",
      "8533.02",
      "8553.74",
      "8527.17",
      "8548.26",
      "45247",
      "0"
    ]
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > sprdId | String | Spread ID | 
| data | Array of Arrays | 订阅的数据 | 
| > ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > o | String | 开盘价格 | 
| > h | String | 最高价格 | 
| > l | String | 最低价格 | 
| > c | String | 收盘价格 | 
| > vol | String | 交易量 | 
| > confirm | String | K线状态 0:K线未完结1:K线已完结 | 
公共数据
公共数据功能模块下的API接口不需要身份验证。
REST API
获取交易产品基础信息
获取所有可交易产品的信息列表。
限速:20次/2s
限速规则:IP + Instrument Type
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:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种,仅适用于 交割/永续/期权 | 
| instId | String | 否 | 产品ID | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
      {
            "alias": "",
            "auctionEndTime": "",
            "baseCcy": "BTC",
            "category": "1",
            "ctMult": "",
            "ctType": "",
            "ctVal": "",
            "ctValCcy": "",
            "contTdSwTime": "1704876947000",
            "expTime": "",
            "futureSettlement": false,
            "instFamily": "",
            "instId": "BTC-USDT",
            "instType": "SPOT",
            "lever": "10",
            "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",
            "optType": "",
            "openType": "call_auction",
            "preMktSwTime": "",
            "quoteCcy": "USDT",
            "tradeQuoteCcyList": [
                "USDT"
            ],
            "settleCcy": "",
            "state": "live",
            "ruleType": "normal",
            "stk": "",
            "tickSz": "0.1",
            "uly": "",
            "instIdCode": 1000000000
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品id, 如 BTC-USDT | 
| uly | String | 标的指数,如 BTC-USD,仅适用于杠杆/交割/永续/期权 | 
| instFamily | String | 交易品种,如 BTC-USD,仅适用于杠杆/交割/永续/期权 | 
| category | String | |
| baseCcy | String | 交易货币币种,如 BTC-USDT中的BTC,仅适用于币币/币币杠杆 | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT中的USDT,仅适用于币币/币币杠杆 | 
| settleCcy | String | 盈亏结算和保证金币种,如 BTC仅适用于交割/永续/期权 | 
| ctVal | String | 合约面值,仅适用于 交割/永续/期权 | 
| ctMult | String | 合约乘数,仅适用于 交割/永续/期权 | 
| ctValCcy | String | 合约面值计价币种,仅适用于 交割/永续/期权 | 
| optType | String | 期权类型, C或P仅适用于期权 | 
| stk | String | 行权价格,仅适用于 期权 | 
| listTime | String | 上线时间 Unix时间戳的毫秒数格式,如 1597026383085 | 
| auctionEndTime | String | 1597026383085仅适用于通过集合竞价方式上线的 币币,其余情况返回""(已废弃,请使用contTdSwTime) | 
| contTdSwTime | String | 连续交易开始时间,从集合竞价、提前挂单切换到连续交易的时间,Unix时间戳格式,单位为毫秒。e.g. 1597026383085。仅适用于通过集合竞价或提前挂单上线的 SPOT/MARGIN,在其他情况下返回""。 | 
| preMktSwTime | String | 盘前永续合约转为普通永续合约的时间,Unix时间戳的毫秒数格式,如 1597026383085仅适用于盘前 SWAP | 
| openType | String | 开盘类型 fix_price: 定价开盘pre_quote: 提前挂单call_auction: 集合竞价只适用于 SPOT/MARGIN,其他业务线返回"" | 
| expTime | String | 产品下线时间 适用于 币币/杠杆/交割/永续/期权,对于交割/期权,为交割/行权日期;亦可以为产品下线时间,有变动就会推送。 | 
| lever | String | 该 instId支持的最大杠杆倍数,不适用于币币、期权 | 
| tickSz | String | 下单价格精度,如 0.0001对于期权来说,是梯度中的最小下单价格精度,如果想要获取期权价格梯度,请使用"获取期权价格梯度"接口 | 
| lotSz | String | 下单数量精度 合约的数量单位是 张,现货的数量单位是交易货币 | 
| minSz | String | 最小下单数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| ctType | String | 合约类型 linear:正向合约inverse:反向合约仅适用于 交割/永续 | 
| alias | String | 合约日期别名 this_week:本周next_week:次周this_month:本月next_month:次月quarter:季度next_quarter:次季度third_quarter:第三季度仅适用于 交割不建议使用,用户应通过 expTime 字段获取合约的交割日期 | 
| state | String | 产品状态 live:交易中suspend:暂停中preopen:预上线,交割和期权合约轮转生成到开始交易;部分交易产品上线前test:测试中(测试产品,不可交易) | 
| ruleType | String | 交易规则类型 normal:普通交易pre_market:盘前交易 | 
| maxLmtSz | String | 限价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxMktSz | String | 市价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| maxLmtAmt | String | 限价单的单笔最大美元价值 | 
| maxMktAmt | String | 市价单的单笔最大美元价值 仅适用于 币币/币币杠杆 | 
| maxTwapSz | String | 时间加权单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币。单笔最小委托数量为 minSz*2 | 
| maxIcebergSz | String | 冰山委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxTriggerSz | String | 计划委托委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| futureSettlement | Boolean | 交割合约是否支持每日结算 适用于 全仓交割 | 
| tradeQuoteCcyList | Array of strings | 可用于交易的计价币种列表,如 ["USD", "USDC”]. | 
| instIdCode | Integer | 产品唯一标识代码。 对于简单二进制编码,您必须使用 instIdCode而不是instId。对于同一 instId,实盘和模拟盘的值可能会不一样。 | 
获取预估交割/行权价格
获取交割合约和期权预估交割/行权价。交割/行权预估价只有交割/行权前一小时才有返回值
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/estimated-price
请求示例
GET /api/v5/public/estimated-price?instId=BTC-USD-200214
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取预估交割/行权价格
result = publicDataAPI.get_estimated_price(
    instId="BTC-USD-200214",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-200214仅适用于 交割/期权 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    {
        "instType":"FUTURES",
        "instId":"BTC-USDT-201227",
        "settlePx":"200",
        "ts":"1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 FUTURES:交割合约OPTION:期权 | 
| instId | String | 产品ID, 如 BTC-USD-200214 | 
| settlePx | String | 预估交割/行权价格 | 
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取交割和行权记录
获取3个月内的交割合约的交割记录和期权的行权记录
限速:40次/2s
限速规则:IP + (Instrument Type + instFamily)
HTTP请求
GET /api/v5/public/delivery-exercise-history
请求示例
GET /api/v5/public/delivery-exercise-history?instType=OPTION&uly=BTC-USD
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取交割和行权记录
result = publicDataAPI.get_delivery_exercise_history(
    instType="FUTURES",
    uly="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 是 | 交易品种 | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ts":"1597026383085",
            "details":[
                {
                    "type":"delivery",
                    "insId":"BTC-USD-190927",
                    "px":"0.016"
                }
            ]
        },
        {
            "ts":"1597026383085",
            "details":[
                {
                    "insId":"BTC-USD-200529-6000-C",
                    "type":"exercised",
                    "px":"0.016"
                },
                {
                    "insId":"BTC-USD-200529-8000-C",
                    "type":"exercised",
                    "px":"0.016"
                }
            ]
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 交割/行权日期,Unix时间戳的毫秒数格式,如 1597026383085 | 
| details | Array of objects | 详细数据 | 
| > insId | String | 交割/行权的合约ID | 
| > px | String | 交割/行权的价格 | 
| > type | String | 类型 delivery:交割exercised:实值已行权expired_otm:虚值已过期 | 
获取交割预估结算价格
获取交割合约预估结算价。只有结算前一小时才有返回值。
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/estimated-settlement-info
请求示例
GET /api/v5/public/estimated-settlement-info?instId=XRP-USDT-250307
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 XRP-USDT-250307仅适用于 交割 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "estSettlePx": "2.5666068562369959",
            "instId": "XRP-USDT-250307",
            "nextSettleTime": "1741248000000",
            "ts": "1741246429748"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID, 如 XRP-USDT-250307 | 
| nextSettleTime | String | 下一次结算时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| estSettlePx | String | 预估结算价格 | 
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取交割结算记录
获取3个月内的交割合约的结算记录
限速:40次/2s
限速规则:IP + (Instrument Family)
HTTP请求
GET /api/v5/public/settlement-history
请求示例
GET /api/v5/public/settlement-history?instFamily=XRP-USDT
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instFamily | String | 是 | 交易品种 | 
| after | String | 否 | 请求此时间戳之前(不包含)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(不包含)的分页内容,传的值为对应接口的 ts | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "details": [
                {
                    "instId": "XRP-USDT-250307",
                    "settlePx": "2.5192078615298715"
                }
            ],
            "ts": "1741161600000"
        },
        {
            "details": [
                {
                    "instId": "XRP-USDT-250307",
                    "settlePx": "2.5551316341327384"
                }
            ],
            "ts": "1741075200000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 结算日期,Unix时间戳的毫秒数格式,如 1597026383085 | 
| details | Array of objects | 详细数据 | 
| > instId | String | 产品ID | 
| > settlePx | String | 结算价格 | 
获取永续合约当前资金费率
获取当前资金费率
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/funding-rate
请求示例
GET /api/v5/public/funding-rate?instId=BTC-USD-SWAP
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取永续合约当前资金费率
result = publicDataAPI.get_funding_rate(
    instId="BTC-USD-SWAP",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID ,如 BTC-USD-SWAP,或ANY以返回所有永续合约的资金费率信息仅适用于 永续 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "formulaType": "noRate",
            "fundingRate": "0.0000182221218054",
            "fundingTime": "1743609600000",
            "impactValue": "",
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "interestRate": "",
            "maxFundingRate": "0.00375",
            "method": "current_period",
            "minFundingRate": "-0.00375",
            "nextFundingRate": "",
            "nextFundingTime": "1743638400000",
            "premium": "0.0000910113652644",
            "settFundingRate": "0.0000145824401745",
            "settState": "settled",
            "ts": "1743588686291"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 SWAP:永续合约 | 
| instId | String | 产品ID,如 BTC-USD-SWAP或ANY | 
| method | String | 资金费收取逻辑 current_period:当期收next_period:跨期收 | 
| formulaType | String | 公式类型 noRate:旧资金费率计算公式withRate:新资金费率计算公式 | 
| fundingRate | String | 资金费率 | 
| nextFundingRate | String | 当收取逻辑为 current_period时,nextFundingRate字段将返回"" | 
| fundingTime | String | 资金费时间 ,Unix时间戳的毫秒数格式,如 1597026383085 | 
| nextFundingTime | String | 下一期资金费时间 ,Unix时间戳的毫秒数格式,如 1622851200000 | 
| minFundingRate | String | 资金费率下限 | 
| maxFundingRate | String | 资金费率上限 | 
| interestRate | String | 利率 | 
| impactValue | String | 深度加权金额(计价币数量) | 
| settState | String | 资金费率结算状态 processing:结算中settled:已结算 | 
| settFundingRate | String | 若 settState = processing,该字段代表用于本轮结算的资金费率;若 settState =settled,该字段代表用于上轮结算的资金费率 | 
| premium | String | 溢价指数 公式:[max (0,深度加权买价 - 指数价格) – max (0,指数价格 – 深度加权卖价)] / 指数价格 | 
| ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取永续合约历史资金费率
获取历史资金费率,最多返回近三个月数据
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/funding-rate-history
请求示例
GET /api/v5/public/funding-rate-history?instId=BTC-USD-SWAP
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取永续合约历史资金费率
result = publicDataAPI.funding_rate_history(
    instId="BTC-USD-SWAP",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID ,如 BTC-USD-SWAP仅适用于 永续 | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 fundingTime | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 fundingTime | 
| limit | String | 否 | 分页返回的结果集数量,最大为400,不填默认返回400条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "formulaType": "noRate",
            "fundingRate": "0.0000746604960499",
            "fundingTime": "1703059200000",
            "instId": "BTC-USD-SWAP",
            "instType": "SWAP",
            "method": "next_period",
            "realizedRate": "0.0000746572360545"
        },
        {
            "formulaType": "noRate",
            "fundingRate": "0.000227985782722",
            "fundingTime": "1703030400000",
            "instId": "BTC-USD-SWAP",
            "instType": "SWAP",
            "method": "next_period",
            "realizedRate": "0.0002279755647389"
        }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 SWAP:永续合约 | 
| instId | String | 产品ID,如 BTC-USD-SWAP | 
| formulaType | String | 公式类型 noRate:旧资金费率计算公式withRate:新资金费率计算公式 | 
| fundingRate | String | 预计资金费率 | 
| realizedRate | String | 实际资金费率 | 
| fundingTime | String | 资金费时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| method | String | 资金费收取逻辑 current_period:当期收next_period:跨期收 | 
获取持仓总量
查询单个交易产品的市场的持仓总量
限速:20次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/open-interest
请求示例
GET /api/v5/public/open-interest?instType=SWAP
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取持仓总量
result = publicDataAPI.get_open_interest(
    instType="FUTURES",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 可选 | 交易品种 适用于 交割/永续/期权期权下必传 | 
| instId | String | 否 | 产品ID,如 BTC-USDT-SWAP仅适用于 交割/永续/期权 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    {
        "instType":"SWAP",
        "instId":"BTC-USDT-SWAP",
        "oi":"5000",
        "oiCcy":"555.55",
        "oiUsd": "50000",
        "ts":"1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instId | String | 产品ID | 
| oi | String | 持仓量(按 张折算) | 
| oiCcy | String | 持仓量(按 币折算) | 
| oiUsd | String | 持仓量(按 USD折算) | 
| ts | String | 数据返回时间,Unix时间戳的毫秒数格式 ,如 1597026383085 | 
获取限价
查询单个交易产品的最高买价和最低卖价
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/price-limit
请求示例
GET /api/v5/public/price-limit?instId=BTC-USDT-SWAP
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取限价
result = publicDataAPI.get_price_limit(
    instId="BTC-USD-SWAP",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    {
        "instType":"SWAP",
        "instId":"BTC-USDT-SWAP",
        "buyLmt":"17057.9",
        "sellLmt":"16388.9",
        "ts":"1597026383085",
        "enabled": true
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 SPOT:币币MARGIN:杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权若产品ID支持杠杆交易,则返回 MARGIN;否则,返回SPOT。 | 
| instId | String | 产品ID ,如 BTC-USDT-SWAP | 
| buyLmt | String | 最高买价 当enabled为false时,返回"" | 
| sellLmt | String | 最低卖价 当enabled为false时,返回"" | 
| ts | String | 限价数据更新时间 ,Unix时间戳的毫秒数格式,如 1597026383085 | 
| enabled | Boolean | 限价是否生效 true:限价生效false:限价不生效 | 
获取期权定价
查询期权详细信息
限速:20次/2s
限速规则:IP + instFamily
HTTP请求
GET /api/v5/public/opt-summary
请求示例
GET /api/v5/public/opt-summary?uly=BTC-USD
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取期权定价
result = publicDataAPI.get_opt_summary(
    uly="BTC-USD",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instFamily | String | 是 | 交易品种,仅适用于期权 | 
| expTime | String | 否 | 合约到期日,格式为"YYMMDD",如 "200527" | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
      {
            "askVol": "3.7207056835937498",
            "bidVol": "0",
            "delta": "0.8310206676289528",
            "deltaBS": "0.9857332101544538",
            "fwdPx": "39016.8143629068452065",
            "gamma": "-1.1965483553276135",
            "gammaBS": "0.000011933182397798109",
            "instId": "BTC-USD-220309-33000-C",
            "instType": "OPTION",
            "lever": "0",
            "markVol": "1.5551965233045728",
            "realVol": "0",
            "volLv": "0",
            "theta": "-0.0014131955002093717",
            "thetaBS": "-66.03526900575946",
            "ts": "1646733631242",
            "uly": "BTC-USD",
            "vega": "0.000018173851073258973",
            "vegaBS": "0.7089307622132419"
        },
        {
            "askVol": "1.7968814062499998",
            "bidVol": "0",
            "delta": "-0.014668822072611904",
            "deltaBS": "-0.01426678984554619",
            "fwdPx": "39016.8143629068452065",
            "gamma": "0.49483062407551576",
            "gammaBS": "0.000011933182397798109",
            "instId": "BTC-USD-220309-33000-P",
            "instType": "OPTION",
            "lever": "0",
            "markVol": "1.5551965233045728",
            "realVol": "0",
            "volLv": "0",
            "theta": "-0.0014131955002093717",
            "thetaBS": "-54.93377294845015",
            "ts": "1646733631242",
            "uly": "BTC-USD",
            "vega": "0.000018173851073258973",
            "vegaBS": "0.7089307622132419"
        }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 OPTION:期权 | 
| instId | String | 产品ID,如 BTC-USD-200103-5500-C | 
| uly | String | 标的指数 | 
| delta | String | 期权价格对 uly价格的敏感度 | 
| gamma | String | delta对 uly价格的敏感度 | 
| vega | String | 期权价格对隐含波动率的敏感度 | 
| theta | String | 期权价格对剩余期限的敏感度 | 
| deltaBS | String | BS模式下期权价格对 uly价格的敏感度 | 
| gammaBS | String | BS模式下delta对 uly价格的敏感度 | 
| vegaBS | String | BS模式下期权价格对隐含波动率的敏感度 | 
| thetaBS | String | BS模式下期权价格对剩余期限的敏感度 | 
| lever | String | 杠杆倍数 | 
| markVol | String | 标记波动率 | 
| bidVol | String | bid波动率 | 
| askVol | String | ask波动率 | 
| realVol | String | 已实现波动率(目前该字段暂未启用) | 
| volLv | String | 价平期权的隐含波动率 | 
| fwdPx | String | 远期价格 | 
| ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取免息额度和币种折算率等级
获取免息额度和币种折算率等级
限速:2 次/2s
限速规则:IP
HTTP 请求
GET /api/v5/public/discount-rate-interest-free-quota
请求示例
GET /api/v5/public/discount-rate-interest-free-quota?ccy=BTC
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取免息额度和币种折算率等级
result = publicDataAPI.discount_interest_free_quota()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种 | 
| discountLv | String | 否 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "0",
            "ccy": "BTC",
            "collateralRestrict": false,
            "details": [
                {
                    "discountRate": "0.98",
                    "liqPenaltyRate": "0.02",
                    "maxAmt": "20",
                    "minAmt": "0",
                    "tier": "1",
                    "disCcyEq": "1000"
                },
                {
                    "discountRate": "0.9775",
                    "liqPenaltyRate": "0.0225",
                    "maxAmt": "25",
                    "minAmt": "20",
                    "tier": "2",
                    "disCcyEq": "2000"
                }
            ],
            "discountLv": "1",
            "minDiscountRate": "0"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种 | 
| colRes | String | 平台维度质押限制状态 0:限制未触发1:限制未触发,但该币种接近平台质押上限2:限制已触发。该币种不可用作新订单的保证金,这可能会导致下单失败。但它仍会被计入账户有效保证金,保证金率不会收到影响。更多详情,请参阅平台总质押借币上限说明。 | 
| collateralRestrict | Boolean | truefalse | 
| amt | String | 免息金额 | 
| discountLv | String | |
| minDiscountRate | String | 最小折算率,针对数量超过最后一档的最大值时 | 
| details | Array of objects | 新的币种折算率详情 | 
| > discountRate | String | 折算率 | 
| > maxAmt | String | 梯度区间上限,单位为币种,如 BTC,"" 表示正无穷 | 
| > minAmt | String | 梯度区间下限,单位为币种,如 BTC,最小值是0 | 
| > tier | String | 档位 | 
| > liqPenaltyRate | String | 强平罚金费率 | 
| > disCcyEq | 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 | 
获取标记价格
为了防止个别用户恶意操控市场导致合约价格波动剧烈,我们根据现货指数和合理基差设定标记价格。
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/public/mark-price
请求示例
GET /api/v5/public/mark-price?instType=SWAP
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取标记价格
result = publicDataAPI.get_mark_price(
    instType="SWAP",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instFamily | String | 否 | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 否 | 产品ID,如 BTC-USD-SWAP | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    {
        "instType":"SWAP",
        "instId":"BTC-USDT-SWAP",
        "markPx":"200",
        "ts":"1597026383085"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| instId | String | 产品ID,如 BTC-USD-200214 | 
| markPx | String | 标记价格 | 
| ts | String | 接口数据返回时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取衍生品仓位档位
全部仓位档位对应信息,当前最高可开杠杆倍数由您的借币持仓和维持保证金率决定。
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/position-tiers
请求示例
GET /api/v5/public/position-tiers?tdMode=cross&instType=SWAP&instFamily=BTC-USDT
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取衍生品仓位档位
result = publicDataAPI.get_position_tiers(
    instType="SWAP",
    tdMode="cross",
    uly="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| tdMode | String | 是 | 保证金模式 isolated:逐仓 ;cross:全仓 | 
| instFamily | String | 可选 | 交易品种,支持多instFamily,半角逗号分隔,最大不超过5个 当产品类型是 永续/交割/期权之一时,instFamily必填 | 
| instId | String | 可选 | 产品ID,支持多instId,半角逗号分隔,最大不超过5个 仅适用 币币杠杆,instId和ccy必须传一个,若传两个,以instId为主 | 
| ccy | String | 可选 | 保证金币种 仅适用杠杆全仓,该值生效时,返回的是 跨币种保证金模式和组合保证金模式下的借币量 | 
| tier | String | 否 | 查指定档位 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
    {
            "baseMaxLoan": "50",
            "imr": "0.1",
            "instId": "BTC-USDT",
            "instFamily": "",
            "maxLever": "10",
            "maxSz": "50",
            "minSz": "0",
            "mmr": "0.03",
            "optMgnFactor": "0",
            "quoteMaxLoan": "500000",
            "tier": "1",
            "uly": ""
        }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uly | String | 标的指数 适用于 交割/永续/期权 | 
| instFamily | String | 交易品种 适用于 交割/永续/期权 | 
| instId | String | 币对 | 
| tier | String | 仓位档位 | 
| minSz | String | 该档位最少借币量或者持仓数量 杠杆/期权/永续/交割最小持仓量 默认0当 ccy参数生效时,返回ccy的最小借币量 | 
| maxSz | String | 该档位最多借币量或者持仓数量 杠杆/期权/永续/交割当 ccy参数生效时,返回ccy的最大借币量 | 
| mmr | String | 仓位维持保证金率 | 
| imr | String | 最低初始维持保证金率 | 
| maxLever | String | 最高可用杠杆倍数 | 
| optMgnFactor | String | 期权保证金系数 (仅适用于期权) | 
| quoteMaxLoan | String | 计价货币  最大借币量(仅适用于杠杆,且 instId参数生效时),如 BTC-USDT   里的 USDT最大借币量 | 
| baseMaxLoan | String | 交易货币  最大借币量(仅适用于杠杆,且 instId参数生效时),如 BTC-USDT   里的 BTC最大借币量 | 
获取市场借币杠杆利率和借币限额
限速:2次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/interest-rate-loan-quota
请求示例
GET /api/v5/public/interest-rate-loan-quota
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取市场借币杠杆利率和借币限额
result = publicDataAPI.get_interest_rate_loan_quota()
print(result)
返回结果
{
    "code": "0",
    "data": [
        {
            "basic": [
                {
                    "ccy": "USDT",
                    "quota": "500000",
                    "rate": "0.00043728"
                },
                {
                    "ccy": "BTC",
                    "quota": "10",
                    "rate": "0.00019992"
                }
            ],
            "vip": [
                {
                    "irDiscount": "",
                    "loanQuotaCoef": "6",
                    "level": "VIP1"
                },
                {
                    "irDiscount": "",
                    "loanQuotaCoef": "7",
                    "level": "VIP2"
                }
            ],
            "regular": [
                {
                    "irDiscount": "",
                    "loanQuotaCoef": "1",
                    "level": "Lv1"
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| basic | Array of objects | 基础利率和借币限额 | 
| > ccy | String | 币种 | 
| > rate | String | 基础杠杆日利率 | 
| > quota | String | 基础借币限额 | 
| vip | Array of objects | 专业用户 | 
| > level | String | 账户交易手续费等级,如 VIP1 | 
| > loanQuotaCoef | String | 借币限额系数,借币限额 = 基础借币限额 * 该系数 | 
| > irDiscount | String | |
| regular | Array of objects | 普通用户 | 
| > level | String | 账户交易手续费等级,如 Lv1 | 
| > loanQuotaCoef | String | 借币限额系数,借币限额 = 基础借币限额 * 该系数 | 
| > irDiscount | String | 
获取衍生品标的指数
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/underlying
请求示例
GET /api/v5/public/underlying?instType=FUTURES
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取衍生品标的指数
result = publicDataAPI.get_underlying(
    instType="FUTURES"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "LTC-USDT",
            "BTC-USDT",
            "ETC-USDT"
        ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uly | Array of strings | 标的指数 如:BTC-USDT | 
获取风险保证金余额
通过该接口获取系统风险保证金余额信息
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/insurance-fund
请求示例
GET /api/v5/public/insurance-fund?instType=SWAP&uly=BTC-USD
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 获取风险保证金余额
result = publicDataAPI.get_insurance_fund(
    instType="SWAP",
    uly="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| type | String | 否 | 风险保证金类型 regular_update:定期更新liquidation_balance_deposit:强平注入bankruptcy_loss:穿仓亏损platform_revenue:平台收入注入adl:自动减仓历史数据默认返回全部类型 | 
| instFamily | String | 可选 | 交易品种 交割/永续/期权情况下,instFamily必传 | 
| ccy | String | 可选 | 币种, 仅适用 币币杠杆,且必填写 | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "details": [
                {
                    "adlType": "",
                    "amt": "",
                    "balance": "1343.1308",
                    "ccy": "ETH",
                    "maxBal": "",
                    "maxBalTs": "",
                    "ts": "1704883083000",
                    "type": "regular_update"
                }
            ],
            "instFamily": "ETH-USD",
            "instType": "OPTION",
            "total": "1369179138.7489"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| total | String | 平台风险保证金总计,单位为USD | 
| instFamily | String | 交易品种 适用于 交割/永续/期权 | 
| instType | String | 产品类型 | 
| details | Array of objects | 风险保证金详情 | 
| > balance | String | 风险保证金总量 | 
| > amt | String | 风险保证金更新数量 在type为 liquidation_balance_deposit,bankruptcy_loss,platform_revenue时适用 | 
| > ccy | String | 风险保证金总量对应的币种 | 
| > type | String | 风险保证金类型 | 
| > maxBal | String | 过去八小时内的风险保证金余额最大值 仅在type为 adl时适用 | 
| > maxBalTs | String | 过去八小时内风险保证金余额最大值对应的时间戳,Unix时间戳的毫秒数格式,如 1597026383085仅在type为 adl时适用 | 
| > decRate | String | 仅在type为 adl时适用 | 
| > adlType | String | 关于自动减仓的事件 rate_adl_start:由于风险保证金下降率过高造成的自动减仓开始bal_adl_start:由于风险保证金余额下降过高造成的自动减仓开始pos_adl_start:由于强平单的规模积累到一定程度的自动减仓开始(仅适用于盘前交易市场)adl_end:自动减仓结束仅在type为 adl时适用 | 
| > ts | String | 风险保证金更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
张币转换
由币转换为张,或者张转换为币。
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/convert-contract-coin
请求示例
GET /api/v5/public/convert-contract-coin?instId=BTC-USD-SWAP&px=35000&sz=0.888
import okx.PublicData as PublicData
flag = "0"  # 实盘:0 , 模拟盘:1
publicDataAPI = PublicData.PublicAPI(flag=flag)
# 张币转换
result = publicDataAPI.get_convert_contract_coin(
    instId="BTC-USD-SWAP",
    px="35000",
    sz="0.888"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 转换类型 1:币转张2:张转币默认为 1 | 
| instId | String | 是 | 产品ID,仅适用于 交割/永续/期权 | 
| sz | String | 是 | 数量,币转张时,为币的数量,张转币时,为张的数量。 | 
| px | String | 可选 | 委托价格 币本位合约的张币转换时必填 U本位合约,usdt 与张的转换时,必填;coin 与张的转换时,可不填 期权的张币转换时,可不填。 | 
| unit | String | 否 | 币的单位 coin:币usds:usdt/usdc默认为 coin,仅适用于交割/永续的U本位合约 | 
| opType | String | 否 | 将要下单的类型 open:开仓时将sz舍位close:平仓时将sz四舍五入默认值为 close适用于 交割/永续 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "instId": "BTC-USD-SWAP",
            "px": "35000",
            "sz": "311",
            "type": "1",
            "unit": "coin"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 转换类型 1:币转张2:张转币 | 
| instId | String | 产品ID | 
| px | String | 委托价格 | 
| sz | String | 数量 张转币时,为币的数量;币转张时,为张的数量。 | 
| unit | String | 币的单位 coin:币usds:usdt/usdc | 
获取期权价格梯度
获取期权价格梯度信息
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/instrument-tick-bands
请求示例
GET /api/v5/public/instrument-tick-bands?instType=OPTION
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instType | String | 是 | 产品类型 OPTION:期权 | 
| instFamily | String | 否 | 交易品种,仅适用于期权 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instType": "OPTION",
            "instFamily": "BTC-USD",
            "tickBand": [
                {
                    "minPx": "0",
                    "maxPx": "100",
                    "tickSz": "0.1"
                },
                {
                    "minPx": "100",
                    "maxPx": "10000",
                    "tickSz": "1"
                }
            ]
        },
        {
            "instType": "OPTION",
            "instFamily": "ETH-USD",
            "tickBand": [
                {
                    "minPx": "0",
                    "maxPx": "100",
                    "tickSz": "0.1"
                },
                {
                    "minPx": "100",
                    "maxPx": "10000",
                    "tickSz": "1"
                }
            ]
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instType | String | 产品类型 | 
| instFamily | String | 交易品种 | 
| tickBand | Array of objects | 下单价格精度梯度 | 
| > minPx | String | 最低下单价格 | 
| > maxPx | String | 最高下单价格 | 
| > tickSz | String | 下单价格精度,如 0.0001 | 
获取溢价历史数据
获取最近6个月的溢价历史数据
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/public/premium-history
请求示例
GET /api/v5/public/premium-history?instId=BTC-USDT-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USDT-SWAP适用于 永续 | 
| after | String | 否 | 请求此时间戳(不包含)之前的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳(不包含)之后的分页内容,传的值为对应接口的 ts | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100。默认返回100条。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "instId": "BTC-USDT-SWAP",
            "premium": "0.0000578896878167",
            "ts": "1713925924000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 产品ID ,如 BTC-USDT-SWAP | 
| premium | String | 溢价指数 公式:[max (0,深度加权买价 - 指数价格) – max (0,指数价格 – 深度加权卖价)] / 指数价格 | 
| ts | String | 数据产生的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取指数行情
获取指数行情数据
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/index-tickers
请求示例
GET /api/v5/market/index-tickers?instId=BTC-USDT
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取指数行情
result = marketDataAPI.get_index_tickers(
    instId="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteCcy | String | 可选 | 指数计价单位, 目前只有 USD/USDT/BTC/USDC为计价单位的指数,quoteCcy和instId必须填写一个 | 
| instId | String | 可选 | 指数,如 BTC-USD与 uly含义相同。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "instId": "BTC-USDT",
            "idxPx": "43350",
            "high24h": "43649.7",
            "sodUtc0": "43444.1",
            "open24h": "43640.8",
            "low24h": "43261.9",
            "sodUtc8": "43328.7",
            "ts": "1649419644492"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 指数 | 
| idxPx | String | 最新指数价格 | 
| high24h | String | 24小时指数最高价格 | 
| low24h | String | 24小时指数最低价格 | 
| open24h | String | 24小时指数开盘价格 | 
| sodUtc0 | String | UTC 0 时开盘价 | 
| sodUtc8 | String | UTC+8 时开盘价 | 
| ts | String | 指数价格更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取指数K线数据
指数K线数据每个粒度最多可获取最近1,440条。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/index-candles
请求示例
GET /api/v5/market/index-candles?instId=BTC-USD
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取指数K线数据
result = marketDataAPI.get_index_candlesticks(
    instId="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 现货指数,如 BTC-USD与 uly含义相同。 | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值 1m如 [ 1m/3m/5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/1W/1M/3M]UTC+0开盘价k线:[ 6Hutc/12Hutc/1Dutc/1Wutc/1Mutc/3Mutc] | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     [
        "1597026383085",
        "3.721",
        "3.743",
        "3.677",
        "3.708",
        "0"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
获取指数历史K线数据
获取最近几年的指数K线数据
限速:10次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/history-index-candles
请求示例
GET /api/v5/market/history-index-candles?instId=BTC-USD
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 现货指数,如 BTC-USD与 uly含义相同。 | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值 1m如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/1W/1M] UTC+0开盘价k线:[/6Hutc/12Hutc/1Dutc/1Wutc/1Mutc] | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     [
        "1597026383085",
        "3.721",
        "3.743",
        "3.677",
        "3.708",
        "1"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
获取标记价格K线数据
标记价格K线数据每个粒度最多可获取最近1,440条。
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/mark-price-candles
请求示例
GET /api/v5/market/mark-price-candles?instId=BTC-USD-SWAP
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取标记价格K线数据
result = marketDataAPI.get_mark_price_candlesticks(
    instId="BTC-USD-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-SWAP | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值 1m如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/1W/1M/3M] UTC+0开盘价k线:[6Hutc/12Hutc/1Dutc/1Wutc/1Mutc/3Mutc] | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     [
        "1597026383085",
        "3.721",
        "3.743",
        "3.677",
        "3.708",
        "0"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
获取标记价格历史K线数据
获取最近几年的标记价格K线数据
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/history-mark-price-candles
请求示例
GET /api/v5/market/history-mark-price-candles?instId=BTC-USD-SWAP
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | String | 是 | 产品ID,如 BTC-USD-SWAP | 
| after | String | 否 | 请求此时间戳之前(更旧的数据)的分页内容,传的值为对应接口的 ts | 
| before | String | 否 | 请求此时间戳之后(更新的数据)的分页内容,传的值为对应接口的 ts, 单独使用时,会返回最新的数据。 | 
| bar | String | 否 | 时间粒度,默认值 1m如 [1m/3m/5m/15m/30m/1H/2H/4H] UTC+8开盘价k线:[6H/12H/1D/1W/1M] UTC+0开盘价k线:[6Hutc/12Hutc/1Dutc/1Wutc/1Mutc] | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
     [
        "1597026383085",
        "3.721",
        "3.743",
        "3.677",
        "3.708",
        "1"
    ],
    [
        "1597026383085",
        "3.731",
        "3.799",
        "3.494",
        "3.72",
        "1"
    ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| o | String | 开盘价格 | 
| h | String | 最高价格 | 
| l | String | 最低价格 | 
| c | String | 收盘价格 | 
| confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
获取法币汇率
该接口提供的是2周的平均汇率数据
限速:1次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/exchange-rate
请求示例
GET /api/v5/market/exchange-rate
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取法币汇率
result = marketDataAPI.get_exchange_rate(
)
print(result)
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "usdCny": "7.162"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| usdCny | String | 人民币兑美元汇率 | 
获取指数成分数据
查询市场上的指数成分信息数据
限速:20次/2s
限速规则:IP
HTTP请求
GET /api/v5/market/index-components
请求示例
GET /api/v5/market/index-components?index=BTC-USD
import okx.MarketData as MarketData
flag = "0"  # 实盘:0 , 模拟盘:1
marketDataAPI =  MarketData.MarketAPI(flag=flag)
# 获取指数成分数据
result = marketDataAPI.get_index_components(
    index="BTC-USD"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| index | String | 是 | 指数,如 BTC-USDT与 uly含义相同。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": {
        "components": [
            {
                "symbol": "BTC/USDT",
                "symPx": "52733.2",
                "wgt": "0.25",
                "cnvPx": "52733.2",
                "exch": "OKEx"
            },
            {
                "symbol": "BTC/USDT",
                "symPx": "52739.87000000",
                "wgt": "0.25",
                "cnvPx": "52739.87000000",
                "exch": "Binance"
            },
            {
                "symbol": "BTC/USDT",
                "symPx": "52729.1",
                "wgt": "0.25",
                "cnvPx": "52729.1",
                "exch": "Huobi"
            },
            {
                "symbol": "BTC/USDT",
                "symPx": "52739.47929397",
                "wgt": "0.25",
                "cnvPx": "52739.47929397",
                "exch": "Poloniex"
            }
        ],
        "last": "52735.4123234925",
        "index": "BTC-USDT",
        "ts": "1630985335599"
    }
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| index | String | 指数名称 | 
| last | String | 最新指数价格 | 
| ts | String | 数据产生时间,Unix时间戳的毫秒数格式, 如 1597026383085 | 
| components | String | 成分 | 
| > exch | String | 交易所名称 | 
| > symbol | String | 采集的币对名称 | 
| > symPx | String | 采集的币对价格 | 
| > wgt | String | 权重 | 
| > cnvPx | String | 换算成指数后的价格 | 
获取经济日历数据
获取过去三个月的宏观经济日历数据。三个月前的历史数据仅开放给交易费等级VIP1及以上的用户。
限速:1次/5s
限速规则:IP
HTTP请求
GET /api/v5/public/economic-calendar
请求示例
GET /api/v5/public/economic-calendar
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| region | string | 否 | 国家,地区或实体 afghanistan,albania,algeria,andorra,angola,antigua_and_barbuda,argentina,armenia,aruba,australia,austria,azerbaijan,bahamas,bahrain,bangladesh,barbados,belarus,belgium,belize,benin,bermuda,bhutan,bolivia,bosnia_and_herzegovina,botswana,brazil,brunei,bulgaria,burkina_faso,burundi,cambodia,cameroon,canada,cape_verde,cayman_islands,central_african_republic,chad,chile,china,colombia,comoros,congo,costa_rica,croatia,cuba,cyprus,czech_republic,denmark,djibouti,dominica,dominican_republic,east_timor,ecuador,egypt,el_salvador,equatorial_guinea,eritrea,estonia,ethiopia,euro_area,european_union,faroe_islands,fiji,finland,france,g20,g7,gabon,gambia,georgia,germany,ghana,greece,greenland,grenada,guatemala,guinea,guinea_bissau,guyana,hungary,haiti,honduras,hong_kong,hungary,imf,indonesia,iceland,india,indonesia,iran,iraq,ireland,isle_of_man,israel,italy,ivory_coast,jamaica,japan,jordan,kazakhstan,kenya,kiribati,kosovo,kuwait,kyrgyzstan,laos,latvia,lebanon,lesotho,liberia,libya,liechtenstein,lithuania,luxembourg,macau,macedonia,madagascar,malawi,malaysia,maldives,mali,malta,mauritania,mauritius,mexico,micronesia,moldova,monaco,mongolia,montenegro,morocco,mozambique,myanmar,namibia,nepal,netherlands,new_caledonia,new_zealand,nicaragua,niger,nigeria,north_korea,northern_mariana_islands,norway,opec,oman,pakistan,palau,palestine,panama,papua_new_guinea,paraguay,peru,philippines,poland,portugal,puerto_rico,qatar,russia,republic_of_the_congo,romania,russia,rwanda,slovakia,samoa,san_marino,sao_tome_and_principe,saudi_arabia,senegal,serbia,seychelles,sierra_leone,singapore,slovakia,slovenia,solomon_islands,somalia,south_africa,south_korea,south_sudan,spain,sri_lanka,st_kitts_and_nevis,st_lucia,sudan,suriname,swaziland,sweden,switzerland,syria,taiwan,tajikistan,tanzania,thailand,togo,tonga,trinidad_and_tobago,tunisia,turkey,turkmenistan,uganda,ukraine,united_arab_emirates,united_kingdom,united_states,uruguay,uzbekistan,vanuatu,venezuela,vietnam,world,yemen,zambia,zimbabwe | 
| importance | string | 否 | 重要性 1: 低2: 中等3: 高 | 
| before | String | 否 | 查询发布日期(date)之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| after | String | 否 | 查询发布日期(date)之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085默认值为请求时刻的时间戳 | 
| limit | String | 否 | 分页返回结果的数量,最大为100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "actual": "7.8%",
            "calendarId": "330631",
            "category": "Harmonised Inflation Rate YoY",
            "ccy": "",
            "date": "1700121600000",
            "dateSpan": "0",
            "event": "Harmonised Inflation Rate YoY",
            "forecast": "7.8%",
            "importance": "1",
            "prevInitial": "",
            "previous": "9%",
            "refDate": "1698710400000",
            "region": "Slovakia",
            "uTime": "1700121605007",
            "unit": "%"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| calendarId | string | 经济日历ID | 
| date | string | actual字段值的预期发布时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| region | string | 国家,地区或实体 | 
| category | string | 类别名 | 
| event | string | 事件名 | 
| refDate | string | 当前事件指向的日期 | 
| actual | string | 事件实际值 | 
| previous | string | 当前事件上个周期的最新实际值。 若发生数据修正,该字段存储上个周期修正后的实际值。 | 
| forecast | string | 由权威经济学家共同得出的预测值 | 
| dateSpan | string | 0:事件的具体发生时间已知1:事件的具体发生日期已知,但时间未知 | 
| importance | string | 重要性 1: 低2: 中等3: 高 | 
| uTime | string | 当前事件的最新更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| prevInitial | string | 该事件上一周期的初始值 仅在修正发生时有值 | 
| ccy | string | 事件实际值对应的货币 | 
| unit | string | 事件实际值对应的单位 | 
获取历史市场数据
获取OKX历史市场数据。
限速:每2秒5次请求
限速规则:IP
HTTP请求
GET /api/v5/public/market-data-history
请求示例
GET /api/v5/public/market-data-history?module=1&instType=SWAP&instFamilyList=BTC-USDT&dateAggrType=daily&begin=1756604295000&end=1756777095000
请求参数
| 参数名称 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| module | String | 是 | 数据模块类型 1: 交易历史2: 1分钟K线3: 资金费率6: 50档位深度 | 
| instType | String | 是 | 产品类型 SPOTFUTURESSWAPOPTION | 
| instIdList | String | 可选 | 产品ID列表,例如 BTC-USDT或ANY表示所有产品(ANY仅支持 module =1,2,3& dateAggrType =daily)多个产品请用英文逗号分隔,如 BTC-USDT,ETH-USDT最大长度 = 10 仅适用于instType = SPOT | 
| instFamilyList | String | 可选 | 交易品种列表,例如 BTC-USDT或ANY表示所有产品(ANY仅支持 module =1,2,3& dateAggrType =daily)多个品种请用英文逗号分隔,如 BTC-USDT,ETH-USDT最大长度 = 10 (当module = 6& instType =OPTION时为1)仅适用于instType ≠ SPOT | 
| dateAggrType | String | 是 | 日期聚合类型 daily(不支持 module =3& instFamilyList ≠ANY)monthly(不支持module =6) | 
| begin | String | 是 | 开始时间戳,Unix时间戳格式为毫秒数(包含该时间) 日度最大范围:20天,月度最大范围:20个月 | 
| end | String | 是 | 结束时间戳,Unix时间戳格式为毫秒数(包含该时间) 当module = 6& instType =OPTION时,仅返回end指定日期的数据 | 
返回示例
{
  "code": "0",
  "data": [{
    "dateAggrType": "daily",
    "details": [{
      "dateRangeEnd": "1756656000000",
      "dateRangeStart": "1756569600000",
      "groupDetails": [{
        "dateTs": "1756656000000",
        "filename": "BTC-USDT-SWAP-trades-2025-09-01.zip",
        "sizeMB": "10.82",
        "url": "https://static.okx.com/cdn/okex/traderecords/trades/daily/20250901/BTC-USDT-SWAP-trades-2025-09-01.zip"
      },
      {
        "dateTs": "1756569600000",
        "filename": "BTC-USDT-SWAP-trades-2025-08-31.zip",
        "sizeMB": "4.82",
        "url": "https://static.okx.com/cdn/okex/traderecords/trades/daily/20250831/BTC-USDT-SWAP-trades-2025-08-31.zip"
      }],
      "groupSizeMB": "15.64",
      "instFamily": "BTC-USDT",
      "instId": "",
      "instType": "SWAP"
    }],
    "totalSizeMB": "15.64",
    "ts": "1756882260390"
  }],
  "msg": ""
}
返回示例,当没有数据文件时
{
    "code": "0",
    "data": [
        {
            "dateAggrType": "monthly",
            "details": [],
            "totalSizeMB": "0",
            "ts": "1756889595507"
        }
    ],
    "msg": ""
}
返回参数
| 参数名称 | 类型 | 描述 | 
|---|---|---|
| ts | String | 响应时间戳,Unix时间戳格式为毫秒数 | 
| totalSizeMB | String | 所有数据文件总大小,单位MB | 
| dateAggrType | String | 日期聚合类型 dailymonthly | 
| details | Array | |
| > instId | String | 产品ID | 
| > instFamily | String | 交易品种 | 
| > dateRangeStart | String | 数据范围开始日期,Unix时间戳格式为毫秒数(包含该时间) | 
| > dateRangeEnd | String | 数据范围结束日期,Unix时间戳格式为毫秒数(包含该时间) | 
| > groupSizeMB | String | 数据组大小,单位MB | 
| > groupDetails | Array | |
| >> filename | String | 数据文件名,例如 BTC-USDT-SWAP-trades-2025-05-15.zip | 
| >> dataTs | String | 数据日期时间戳,Unix时间戳格式为毫秒数 | 
| >> sizeMB | String | 文件大小,单位MB | 
| >> url | String | 下载链接 | 
WebSocket
产品频道
当有产品状态变化时(如期货交割、期权行权、新合约/币对上线、人工暂停/恢复交易等),推送产品的增量数据。
(2022年12月28日起不再推送全量数据,点此查看详情);
URL Path
/ws/v5/public
请求示例
{ 
  "id": "1512",
  "op": "subscribe",  
  "args":   [    
    {     
      "channel": "instruments",
      "instType": "SPOT"
    }
  ] 
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "instruments",
          "instType": "SPOT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 instruments | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
成功返回示例
{
  "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "instruments",
        "instType": "SPOT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"instruments\", \"instType\" : \"FUTURES\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 SPOT:币币MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "instruments",
    "instType": "SPOT"
  },
  "data": [
    {
        "alias": "",
        "auctionEndTime": "",
        "baseCcy": "BTC",
        "category": "1",
        "ctMult": "",
        "ctType": "",
        "ctVal": "",
        "ctValCcy": "",
        "contTdSwTime": "1704876947000",
        "expTime": "",
        "futureSettlement": false,
        "instFamily": "",
        "instId": "BTC-USDT",
        "instType": "SPOT",
        "lever": "10",
        "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",
        "optType": "",
        "openType": "call_auction",
        "preMktSwTime": "",
        "quoteCcy": "USDT",
        "settleCcy": "",
        "state": "live",
        "ruleType": "normal",
        "stk": "",
        "tickSz": "0.1",
        "uly": "",
        "instIdCode": 1000000000
    }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID,如 BTC-USDT | 
| > category | String | |
| > uly | String | 标的指数,如 BTC-USD,仅适用于交割/永续/期权 | 
| > instFamily | String | 交易品种,如 BTC-USD,仅适用于交割/永续/期权 | 
| > baseCcy | String | 交易货币币种,如 BTC-USDT中BTC,仅适用于币币/币币杠杆 | 
| > quoteCcy | String | 计价货币币种,如 BTC-USDT中USDT,仅适用于币币/币币杠杆 | 
| > settleCcy | String | 盈亏结算和保证金币种,如 BTC,仅适用于交割/永续/期权 | 
| > ctVal | String | 合约面值 | 
| > ctMult | String | 合约乘数 | 
| > ctValCcy | String | 合约面值计价币种 | 
| > optType | String | 期权类型 C:看涨期权P:看跌期权仅适用于 期权 | 
| > stk | String | 行权价格,仅适用于 期权 | 
| > listTime | String | 上线时间 | 
| > auctionEndTime | String | 1597026383085仅适用于通过集合竞价方式上线的 币币,其余情况返回""(已废弃,请使用contTdSwTime) | 
| > contTdSwTime | String | 连续交易开始时间,从集合竞价、提前挂单切换到连续交易的时间,Unix时间戳格式,单位为毫秒。e.g. 1597026383085。仅适用于通过集合竞价或提前挂单上线的 SPOT/MARGIN,在其他情况下返回""。 | 
| > preMktSwTime | String | 盘前永续合约转为普通永续合约的时间,Unix时间戳的毫秒数格式,如 1597026383085仅适用于盘前 SWAP | 
| > openType | String | 开盘类型 fix_price: 定价开盘pre_quote: 提前挂单call_auction: 集合竞价只适用于 SPOT/MARGIN,其他业务线返回"" | 
| > expTime | String | 产品下线时间 适用于 币币/杠杆/交割/永续/期权,对于交割/期权,为自然的交割/行权时间;如果币币/杠杆/交割/永续产品人工下线,为产品下线时间,有变动就会推送。 | 
| > lever | String | 该产品支持的最大杠杆倍数 不适用于 币币/期权。可用来区分币币杠杆和币币 | 
| > tickSz | String | 下单价格精度,如 0.0001对于期权来说,是梯度中的最小下单价格精度。 | 
| > lotSz | String | 下单数量精度 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > minSz | String | 最小下单数 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > ctType | String | 合约类型 linear:正向合约inverse:反向合约仅适用于 交割/永续 | 
| > alias | String | 合约日期别名 this_week:本周next_week:次周this_month:本月next_month:次月quarter:季度next_quarter:次季度仅适用于 交割不建议使用,用户应通过 expTime 字段获取合约的交割日期 | 
| > state | String | 产品状态 live:交易中suspend:暂停中expired:已过期preopen:预上线,交割和期权合约轮转生成到开始交易;部分交易产品上线前test:测试中(测试产品,不可交易) | 
| > ruleType | String | 交易规则类型 normal:普通交易pre_market:盘前交易 | 
| > maxLmtSz | String | 限价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > maxMktSz | String | 市价单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| > maxTwapSz | String | 时间加权单的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > maxIcebergSz | String | 冰山委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > maxTriggerSz | String | 计划委托委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是交易货币 | 
| > maxStopSz | String | 止盈止损市价委托的单笔最大委托数量 合约的数量单位是 张,现货的数量单位是USDT | 
| > futureSettlement | Boolean | 交割合约是否支持每日结算 适用于 全仓交割 | 
| > instIdCode | Integer | 产品唯一标识代码。 对于简单二进制编码,您必须使用 instIdCode而不是instId。对于同一 instId,实盘和模拟盘的值可能会不一样。 | 
持仓总量频道
获取持仓总量,每3s有数据更新推送一次数据
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "open-interest",
        "instId": "LTC-USD-SWAP"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "open-interest",
          "instId": "LTC-USD-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 open-interest | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "open-interest",
        "instId": "LTC-USD-SWAP"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"open-interest\", \"instId\" : \"LTC-USD-SWAP\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "open-interest",
        "instId": "BTC-USDT-SWAP"
    },
    "data": [
        {
            "instId": "BTC-USDT-SWAP",
            "instType": "SWAP",
            "oi": "2216113.01000000309",
            "oiCcy": "22161.1301000000309",
            "oiUsd": "1939251795.54769270396321",
            "ts": "1743041250440"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID,如 BTC-USDT-SWAP | 
| > oi | String | 持仓量,按张为单位 | 
| > oiCcy | String | 持仓量,按币为单位,如 BTC | 
| > oiUsd | String | 持仓量(按 USD折算) | 
| > ts | String | 数据更新的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
资金费率频道
获取永续合约资金费率,30秒到90秒内推送一次数据
URL Path
/ws/v5/public
请求示例
{
   "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "funding-rate",
        "instId": "BTC-USD-SWAP"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "funding-rate",
          "instId": "BTC-USD-SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 funding-rate | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
   "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "funding-rate",
        "instId": "BTC-USD-SWAP"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
   "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"funding-rate\", \"instId\" : \"BTC-USD-SWAP\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
   "arg":{
      "channel":"funding-rate",
      "instId":"BTC-USD-SWAP"
   },
   "data":[
      {
         "fundingRate":"0.0001875391284828",
         "fundingTime":"1700726400000",
         "instId":"BTC-USD-SWAP",
         "instType":"SWAP",
         "method": "current_period",
         "maxFundingRate":"0.00375",
         "minFundingRate":"-0.00375",
         "nextFundingRate":"",
         "nextFundingTime":"1700755200000",
         "premium": "0.0001233824646391",
         "settFundingRate":"0.0001699799259033",
         "settState":"settled",
         "ts":"1700724675402"
      }
   ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型, SWAP | 
| > instId | String | 产品ID,如 BTC-USD-SWAP | 
| > method | String | 资金费收取逻辑 current_period:当期收next_period:跨期收 | 
| > formulaType | String | 公式类型 noRate:旧资金费率计算公式withRate:新资金费率计算公式 | 
| > fundingRate | String | 资金费率 | 
| > fundingTime | String | 最新的到期结算的资金费时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > nextFundingRate | String | |
| > nextFundingTime | String | 下一期资金费时间,Unix时间戳的毫秒数格式,如 1622851200000 | 
| > minFundingRate | String | 下一期的预测资金费率下限 | 
| > maxFundingRate | String | 下一期的预测资金费率上限 | 
| > interestRate | String | 利率 | 
| > impactValue | String | 深度加权金额(计价币数量) | 
| > settState | String | 资金费率结算状态 processing:结算中settled:已结算 | 
| > settFundingRate | String | 若 settState = processing,该字段代表用于本轮结算的资金费率;若 settState =settled,该字段代表用于上轮结算的资金费率 | 
| > premium | String | 溢价指数 公式:[max (0,深度加权买价 - 指数价格) – max (0,指数价格 – 深度加权卖价)] / 指数价格 | 
| > ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
限价频道
获取交易产品的最高买价和最低卖价。限价有变化时,每 200 毫秒推送一次数据,限价没变化时,不推送数据
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "price-limit",
        "instId": "LTC-USD-190628"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "price-limit",
          "instId": "LTC-USD-190628"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 price-limit | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "price-limit",
        "instId": "LTC-USD-190628"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"price-limit\", \"instId\" : \"LTC-USD-190628\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "price-limit",
        "instId": "LTC-USD-190628"
    },
    "data": [{
        "instId": "LTC-USD-190628",
        "buyLmt": "200",
        "sellLmt": "300",
        "ts": "1597026383085",
        "enabled": true
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID,如 BTC-USD-SWAP | 
| > buyLmt | String | 最高买价 当enabled为false时,返回"" | 
| > sellLmt | String | 最低卖价 当enabled为false时,返回"" | 
| > ts | String | 限价数据更新时间 ,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > enabled | Boolean | 限价是否生效 true:限价生效false:限价不生效 | 
期权定价频道
获取所有期权合约详细定价信息,一次性推送所有
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "opt-summary",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "opt-summary",
          "instFamily": "BTC-USD"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 opt-summary | 
| > instFamily | String | 是 | 交易品种 | 
返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "opt-summary",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"opt-summary\", \"instFamily\" : \"BTC-USD\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instFamily | String | 是 | 交易品种 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "opt-summary",
        "instFamily": "BTC-USD"
    },
    "data": [
        {
            "instType": "OPTION",
            "instId": "BTC-USD-241013-70000-P",
            "uly": "BTC-USD",
            "delta": "-1.1180902625",
            "gamma": "2.2361957091",
            "vega": "0.0000000001",
            "theta": "0.0000032334",
            "lever": "8.465747567",
            "markVol": "0.3675503331",
            "bidVol": "0",
            "askVol": "1.1669998535",
            "realVol": "",
            "deltaBS": "-0.9999672034",
            "gammaBS": "0.0000000002",
            "thetaBS": "28.2649858387",
            "vegaBS": "0.0000114332",
            "ts": "1728703155650",
            "fwdPx": "62604.6993093463",
            "volLv": "0.2044711229"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instFamily | String | 交易品种 | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型, OPTION | 
| > instId | String | 产品ID | 
| > uly | String | 标的指数 | 
| > delta | String | 期权价格对 uly价格的敏感度 | 
| > gamma | String | delta对 uly价格的敏感度 | 
| > vega | String | 期权价格对隐含波动率的敏感度 | 
| > theta | String | 期权价格对剩余期限的敏感度 | 
| > deltaBS | String | BS模式下期权价格对 uly价格的敏感度 | 
| > gammaBS | String | BS模式下delta对 uly价格的敏感度 | 
| > vegaBS | String | BS模式下期权价格对隐含波动率的敏感度 | 
| > thetaBS | String | BS模式下期权价格对剩余期限的敏感度 | 
| > lever | String | 杠杆倍数 | 
| > markVol | String | 标记波动率 | 
| > bidVol | String | bid波动率 | 
| > askVol | String | ask波动率 | 
| > realVol | String | 已实现波动率,目前该字段暂未启用 | 
| > volLv | String | 价平期权的隐含波动率 | 
| > fwdPx | String | 远期价格 | 
| > ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
预估交割/行权/结算价格频道
获取交割合约和期权预估交割/行权/结算价。只有交割/行权/结算前一小时开始推送预估价,有价格变化就推送。
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "estimated-price",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "estimated-price",
          "instType": "FUTURES",
          "instFamily": "BTC-USD"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 estimated-price | 
| > instType | String | 是 | 产品类型 FUTURES:交割合约OPTION:期权 | 
| > instFamily | String | 可选 | 交易品种 instFamily和instId必须指定一个 | 
| > instId | String | 可选 | 产品ID instFamily和instId必须指定一个 | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "estimated-price",
        "instType": "FUTURES",
        "instFamily": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"estimated-price\", \"instId\" : \"FUTURES\",\"instFamily\" :\"BTC-USD\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instType | String | 是 | 产品类型 FUTURES:交割OPTION:期权 | 
| > instFamily | String | 否 | 交易品种 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "estimated-price",
        "instType": "FUTURES",
        "instFamily": "XRP-USDT"
    },
    "data": [{
        "instId": "XRP-USDT-250307",
        "instType": "FUTURES",
        "settlePx": "2.4230631578947368",
        "settleType": "settlement",
        "ts": "1741244598708"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 FUTURES:交割OPTION:期权 | 
| > instFamily | String | 交易品种 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID,如 BTC-USD-170310 | 
| > settleType | String | 类型 settlement:结算delivery:交割exercise:行权 | 
| > settlePx | String | 预估价 | 
| > ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
标记价格频道
获取标记价格,标记价格有变化时,每200ms推送一次数据,标记价格没变化时,每10s推送一次数据
URL Path
/ws/v5/public
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "mark-price",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "mark-price",
        "instId": "BTC-USDT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 mark-price | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
  "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "mark-price",
        "instId": "BTC-USDT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"mark-price\", \"instId\" : \"LTC-USD-190628\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 否 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
  "arg": {
    "channel": "mark-price",
    "instId": "BTC-USDT"
  },
  "data": [
    {
      "instType": "MARGIN",
      "instId": "BTC-USDT",
      "markPx": "42310.6",
      "ts": "1630049139746"
    }
  ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 交易品种 | 
| > instId | String | 产品ID | 
| > markPx | String | 标记价格 | 
| > ts | String | 标记价格数据更新时间 ,Unix时间戳的毫秒数格式,如 1597026383085 | 
指数行情频道
获取指数的行情数据。每100ms有变化就推送一次数据,否则一分钟推一次。
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "index-tickers",
        "instId": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "index-tickers",
          "instId": "BTC-USDT"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 index-tickers | 
| > instId | String | 是 | 指数,以USD、USDT、BTC、USDC 为计价货币的指数,如 BTC-USDT与 uly含义相同。 | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "index-tickers",
        "instId": "BTC-USDT"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"index-tickers\", \"instId\" : \"BTC-USDT\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 index-tickers | 
| > instId | String | 是 | 指数,以USD、USDT、BTC、USDC 为计价货币的指数,如 BTC-USDT | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "index-tickers",
        "instId": "BTC-USDT"
    },
    "data": [{
        "instId": "BTC-USDT",
        "idxPx": "0.1",
        "high24h": "0.5",
        "low24h": "0.1",
        "open24h": "0.1",
        "sodUtc0": "0.1",
        "sodUtc8": "0.1",
        "ts": "1597026383085"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 指数 | 
| data | Array of objects | 订阅的数据 | 
| > instId | String | 指数,以USD、USDT、BTC 为计价货币的指数,如 BTC-USDT | 
| > idxPx | String | 最新指数价格 | 
| > open24h | String | 24小时开盘价 | 
| > high24h | String | 24小时指数最高价格 | 
| > low24h | String | 24小时指数最低价格 | 
| > sodUtc0 | String | UTC 0 时开盘价 | 
| > sodUtc8 | String | UTC+8 时开盘价 | 
| > ts | String | 指数价格更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
标记价格K线频道
获取标记价格的K线数据,推送频率最快是间隔1秒推送一次数据。
URL Path
/ws/v5/business
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "mark-price-candle1D",
        "instId": "BTC-USD-190628"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "mark-price-candle1D",
          "instId": "BTC-USD-190628"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 mark-price-candle3Mmark-price-candle1Mmark-price-candle1Wmark-price-candle1Dmark-price-candle2Dmark-price-candle3Dmark-price-candle5Dmark-price-candle12Hmark-price-candle6Hmark-price-candle4Hmark-price-candle2Hmark-price-candle1Hmark-price-candle30mmark-price-candle15mmark-price-candle5mmark-price-candle3mmark-price-candle1mmark-price-candle3Mutcmark-price-candle1Mutcmark-price-candle1Wutcmark-price-candle1Dutcmark-price-candle2Dutcmark-price-candle3Dutcmark-price-candle5Dutcmark-price-candle12Hutcmark-price-candle6Hutc | 
| > instId | String | 是 | 产品ID | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "mark-price-candle1D",
        "instId": "BTC-USD-190628"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"mark-price-candle1D\", \"instId\" : \"BTC-USD-190628\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 是 | 产品ID | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "mark-price-candle1D",
        "instId": "BTC-USD-190628"
    },
    "data": [
        ["1597026383085", "3.721", "3.743", "3.677", "3.708", "0"],
        ["1597026383085", "3.731", "3.799", "3.494", "3.72", "1"]
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 产品ID | 
| data | Array of Arrays | 订阅的数据 | 
| > ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > o | String | 开盘价格 | 
| > h | String | 最高价格 | 
| > l | String | 最低价格 | 
| > c | String | 收盘价格 | 
| > confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
指数K线频道
获取指数的K线数据,推送频率最快是间隔1秒推送一次数据。
URL Path
/ws/v5/business
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "index-candle30m",
        "instId": "BTC-USD"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/business")
    await ws.start()
    args = [
        {
          "channel": "index-candle30m",
          "instId": "BTC-USD"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 index-candle3Mindex-candle1Mindex-candle1Windex-candle1Dindex-candle2Dindex-candle3Dindex-candle5Dindex-candle12Hindex-candle6Hindex-candle4Hindex -candle2Hindex-candle1Hindex-candle30mindex-candle15mindex-candle5mindex-candle3mindex-candle1mindex-candle3Mutcindex-candle1Mutcindex-candle1Wutcindex-candle1Dutcindex-candle2Dutcindex-candle3Dutcindex-candle5Dutcindex-candle12Hutcindex-candle6Hutc | 
| > instId | String | 是 | 现货指数,如 BTC-USD与 uly含义相同。 | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "index-candle30m",
        "instId": "BTC-USD"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"index-candle30m\", \"instId\" : \"BTC-USD\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | subscribeunsubscribe | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 | 
| > instId | String | 否 | 现货指数 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "index-candle30m",
        "instId": "BTC-USD"
    },
    "data": [
        ["1597026383085", "3811.31", "3811.31", "3811.31", "3811.31","0"]
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instId | String | 现货指数 | 
| data | Array of Arrays | 订阅的数据 | 
| > ts | String | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > o | String | 开盘价格 | 
| > h | String | 最高价格 | 
| > l | String | 最低价格 | 
| > c | String | 收盘价格 | 
| > confirm | String | K线状态 0代表 K 线未完结,1代表 K 线已完结。 | 
平台公共爆仓单频道
获取爆仓单信息。对于交割和永续合约,强平数据代表每个交易对在任何一秒内的最多一个强平订单。因此,显示的强平数据并不准确代表欧易的总强平量,亦不应被当做总强平量使用。
URL Path
/ws/v5/public
请求示例
{
  "id": "1512",
  "op": "subscribe",
  "args": [
    {
      "channel": "liquidation-orders",
      "instType": "SWAP"
    }
  ]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [
        {
          "channel": "liquidation-orders",
          "instType": "SWAP"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道 | 
| > channel | String | 是 | 频道名 liquidation-orders | 
| > instType | String | 是 | 产品类型 MARGIN:币币杠杆SWAP:永续合约FUTURES:交割合约OPTION:期权 | 
返回结果
{
  "id": "1512",
    "arg": {
        "channel": "liquidation-orders",
        "instType": "SWAP"
    },
    "data": [
        {
            "details": [
                {
                    "bkLoss": "0",
                    "bkPx": "0.007831",
                    "ccy": "",
                    "posSide": "short",
                    "side": "buy",
                    "sz": "13",
                    "ts": "1692266434010"
                }
            ],
            "instFamily": "IOST-USDT",
            "instId": "IOST-USDT-SWAP",
            "instType": "SWAP",
            "uly": "IOST-USDT"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| id | String | 消息的唯一标识 | 
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > instType | String | 产品类型 | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instId | String | 产品ID,如 BTC-USD-SWAP | 
| > uly | String | 标的指数 适用于 交割/永续/期权 | 
| > details | Array of objects | 详细内容 | 
| >> side | String | 订单方向 buy:买sell:卖仅适用于 交割/永续 | 
| >> posSide | String | 持仓模式方向 long:开平仓模式开多short:开平仓模式开空net:买卖模式 | 
| >> bkPx | String | 破产价格,与系统爆仓账号委托成交的价格,仅适用于 交割/永续 | 
| >> sz | String | 强平数量 适用于 杠杆/交割/永续对于 杠杆,单位为交易货币。对于 交割/永续,单位为张。 | 
| >> bkLoss | String | 穿仓亏损数量 | 
| >> ccy | String | 强平币种 适用于 币币杠杆 | 
| >> ts | String | 强平发生的时间,Unix时间戳的毫秒数格式,如 1597026383085/ | 
自动减仓预警频道
自动减仓预警。
普通状态(normal)下,每分钟推送一次,展示风险保证金的余额等信息。
预警状态下或有自动减仓风险(warning/adl)时,每1秒推送一次数据,展示风险保证金的实时下降率等信息。
更多自动减仓细节,请见自动减仓机制介绍
服务地址
/ws/v5/public
请求示例
{
   "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "adl-warning",
        "instType": "FUTURES",
        "instFamily": "BTC-USDT"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "adl-warning",
        "instType": "FUTURES",
        "instFamily": "BTC-USDT"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 adl-warning | 
| > instType | String | 是 | 产品类型 FUTURES:交割合约SWAP:永续合约OPTION:期权 | 
| > instFamily | String | 否 | 交易品种 | 
成功返回示例
{
   "id": "1512",
   "event":"subscribe",
   "arg":{
      "channel":"adl-warning",
      "instType":"FUTURES",
      "instFamily":"BTC-USDT"
   },
   "connId":"48d8960a"
}
失败返回示例
{
   "id": "1512",
   "event":"error",
   "msg":"Illegal request: { \"event\": \"subscribe\", \"arg\": { \"channel\": \"adl-warning\", \"instType\": \"FUTURES\", \"instFamily\": \"BTC-USDT\" } }",
   "code":"60012",
   "connId":"48d8960a"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 adl-warning | 
| > instType | String | 是 | 产品类型 | 
| > instFamily | String | 否 | 交易品种 | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
   "arg":{
      "channel":"adl-warning",
      "instType":"FUTURES",
      "instFamily":"BTC-USDT"
   },
   "data":[
      {
         "maxBal":"",
         "adlRecBal":"8000.0",
         "bal":"280784384.9564228289548144",
         "instType":"FUTURES",
         "ccy": "USDT",
         "instFamily":"BTC-USDT",
         "maxBalTs":"",
         "adlType":"",
         "state":"normal",
         "adlBal":"0",
         "ts":"1700210763001"
      }
   ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 请求订阅的频道 | 
| > channel | String | 频道名 adl-warning | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 | 
| data | Array of objects | 订阅的数据 | 
| > instType | String | 产品类型 | 
| > instFamily | String | 交易品种 | 
| > state | String | 状态 normal:普通状态warning:预警状态adl:已开启自动减仓 | 
| > bal | String | 实时风险保证金余额 | 
| > ccy | String | 风险保证金余额对应币种 | 
| > maxBal | String | 过去八小时内的风险保证金余额最大值 仅在状态为 warning及adl时推送,状态为normal时推送空字符串"" | 
| > maxBalTs | String | 过去八小时内风险保证金余额最大值对应的时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > adlType | String | 关于自动减仓的事件 rate_adl_start:由于风险保证金下降率过高造成的自动减仓开始bal_adl_start:由于风险保证金余额下降过高造成的自动减仓开始pos_adl_start:由于强平单的规模积累到一定程度的自动减仓开始(仅适用于盘前交易市场)adl_end:自动减仓结束 | 
| > adlBal | String | 触发自动减仓的风险保证金余额 | 
| > adlRecBal | String | 自动减仓结束的风险保证金余额 | 
| > ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > decRate | String | 仅在状态为 warning及adl时推送,状态为normal时推送空字符串"" | 
| > adlRate | String | |
| > adlRecRate | String | 
经济日历频道
获取最新经济日历数据。 该频道仅开放给交易费等级VIP1及以上的用户。
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512"  
    "op": "subscribe",
    "args": [
      {
          "channel": "economic-calendar"
      }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
      {
          "channel": "economic-calendar"
      }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 economic-calendar | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "economic-calendar"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
  "id": "1512",
  "event": "error",
  "code": "60012",
  "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"economic-calendar\", \"instId\" : \"LTC-USD-190628\"}]}",
  "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 economic-calendar | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "economic-calendar"
    },
    "data": [
        {
            "calendarId": "319275",
            "date": "1597026383085",
            "region": "United States",
            "category": "Manufacturing PMI",
            "event": "S&P Global Manufacturing PMI Final",
            "refDate": "1597026383085",
            "actual": "49.2",
            "previous": "47.3",
            "forecast": "49.3",
            "importance": "2",
            "prevInitial": "",
            "ccy": "",
            "unit": "",
            "ts": "1698648096590"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| data | Array of objects | 订阅的数据 | 
| > event | string | 事件名 | 
| > region | string | 国家,地区或实体 | 
| > category | string | 类别名 | 
| > actual | string | 事件实际值 | 
| > previous | string | 当前事件上个周期的最新实际值 若发生数据修正,该字段存储上个周期修正后的实际值 | 
| > forecast | string | 由权威经济学家共同得出的预测值 | 
| > prevInitial | string | 该事件上一周期的初始值 仅在修正发生时有值 | 
| > date | string | actual字段值的预期发布时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > refDate | string | 当前事件指向的日期 | 
| > calendarId | string | 经济日历ID | 
| > unit | string | 事件实际值对应的单位 | 
| > ccy | string | 事件实际值对应的货币 | 
| > importance | string | 重要性 1: 低2: 中等3: 高 | 
| > ts | string | 推送时间 | 
交易大数据
REST API
获取交易大数据支持币种
获取支持交易大数据的币种
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/trading-data/support-coin
请求示例
GET /api/v5/rubik/stat/trading-data/support-coin
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取交易大数据支持币种
result = tradingDataAPI.get_support_coin()
print(result)
返回结果
{
    "code": "0",
    "data": {
        "contract": [
            "ADA",
            "BTC",
        ],
        "option": [
            "BTC"
        ],
        "spot": [
            "ADA",
            "BTC",
        ]
    },
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| contract | Array of strings | 合约交易大数据接口功能支持的币种 | 
| option | Array of strings | 期权交易大数据接口功能支持的币种 | 
| spot | Array of strings | 现货交易大数据接口功能支持的币种 | 
获取合约持仓量历史
获取交割及永续合约的历史持仓量数据。每个粒度最多可获取最近1,440条数据。
对于时间粒度period=1D,数据时间范围最早至2024年1月1日;对于其他时间粒度period,最早至2024年2月初。
限速:10次/2s
限速规则:IP + Instrument ID
HTTP请求
GET /api/v5/rubik/stat/contracts/open-interest-history
请求示例
GET /api/v5/rubik/stat/contracts/open-interest-history?instId=BTC-USDT-SWAP
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取持仓量历史
result = tradingDataAPI.get_open_interest_history(
    instId="BTC-USDT-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | string | 是 | 产品ID,如 BTC-USDT-SWAP 仅适用于 交割/永续 | 
| period | string | 否 | 时间粒度,默认值 5m, 如 [5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/2D/3D/5D/1W/1M/3M]UTC+0开盘价k线: [ 6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/5Dutc/1Wutc/1Mutc/3Mutc] | 
| end | string | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| begin | string | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | string | 否 | 分页返回的结果集数量,最大为 100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "1701417600000",    // timestamp
            "731377.57500501",   // open interest (oi, contracts)
            "111",              // open interest (oiCcy, coin)
            "8888888"         // open interest (oiUsd, USD)
        ],
        [
            "1701417500000",    // timestamp
            "731377.57500501",   // open interest (oi, contracts)
            "111",              // open interest (oiCcy, coin)
            "8888888"         // open interest (oiUsd, USD)
        ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| oi | String | 合约单位的持仓量 | 
| oiCcy | String | 币种单位的持仓量 | 
| oiUsd | String | USD单位的持仓量 | 
返回值数组顺序分别为是:[ts, oi, oiCcy, oiUsd]
获取主动买入/卖出情况
获取taker主动买入和卖出的交易量
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/taker-volume
请求示例
GET /api/v5/rubik/stat/taker-volume?ccy=BTC&instType=SPOT
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取主动买入/卖出情况
result = tradingDataAPI.get_taker_volume(
    ccy="BTC",
    instType="SPOT"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| instType | String | 是 | 产品类型 SPOT:币币CONTRACTS:衍生品 | 
| begin | String | 否 | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| end | String | 否 | 结束时间,Unix时间戳的毫秒数格式,如 1597026383011 | 
| period | String | 否 | 时间粒度,默认值 5m。支持[5m/1H/1D]5m粒度最多只能查询两天之内的数据1H粒度最多只能查询30天之内的数据1D粒度最多只能查询180天之内的数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630425600000",
            "7596.2651",
            "7149.4855"
        ],
        [
            "1630339200000",
            "5312.7876",
            "7002.7541"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| sellVol | String | 卖出量 | 
| buyVol | String | 买入量 | 
获取合约主动买入/卖出情况
获取合约维度taker主动买入和卖出的交易量。每个粒度最多可获取最近1,440条数据。
对于时间粒度period=1D,数据时间范围最早至2024年1月1日;对于其他时间粒度period,最早至2024年2月初。
限速: 5次/2s
限速规则: IP + Instrument ID
HTTP请求
GET /api/v5/rubik/stat/taker-volume-contract
请求示例
GET /api/v5/rubik/stat/taker-volume-contract?instId=BTC-USDT-SWAP
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取合约taker主动买入和卖出的交易量
result = tradingDataAPI.get_contract_taker_volume(
    instId="BTC-USDT-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | string | 是 | 产品ID,如 BTC-USDT 仅适用于 交割/永续 | 
| period | string | 否 | 时间粒度,默认值 5m, 如 [5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/2D/3D/5D/1W/1M/3M]UTC+0开盘价k线: [ 6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/5Dutc/1Wutc/1Mutc/3Mutc] | 
| unit | string | 否 | 买入、卖出的单位,默认值是 10: 币1: 合约2: U | 
| end | string | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| begin | string | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | string | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "1701417600000",    // timestamp
            "200",              // taker sell volume
            "380"               // taker buy volume
        ],
        [
            "1701417600000",    // timestamp
            "100",              // taker sell volume
            "300"               // taker buy volume
        ]
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| sellVol | String | 卖出量 | 
| buyVol | String | 买入量 | 
返回值数组顺序分别为是:[ts, sellVol, buyVol]
获取杠杆多空比
获取借入计价货币与借入交易货币的累计数额比值。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/margin/loan-ratio
请求示例
GET /api/v5/rubik/stat/margin/loan-ratio?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取杠杆多空比
result = tradingDataAPI.get_margin_lending_ratio(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| begin | String | 否 | 开始时间,如 1597026383085 | 
| end | String | 否 | 结束时间,如 1597026383011 | 
| period | String | 否 | 时间粒度 m:分钟,H:小时,D:天默认值 5m,支持[5m/1H/1D]5m粒度最多只能查询两天之内的数据1H粒度最多只能查询30天之内的数据1D粒度最多只能查询180天之内的数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630492800000",
            "0.4614"
        ],
        [
            "1630492500000",
            "0.5767"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| ratio | String | 多空比值 | 
获取精英交易员合约多空持仓人数比
获取精英交易员交割永续净开多持仓用户数与净开空持仓用户数的比值。精英交易员指持仓价值前5%的用户。每个粒度最多可获取最近1,440条数据。数据时间范围最早至2024年3月22日。
限速: 5次/2s
限速规则: IP + Instrument ID
HTTP请求
GET /api/v5/rubik/stat/contracts/long-short-account-ratio-contract-top-trader
请求示例
GET /api/v5/rubik/stat/contracts/long-short-account-ratio-contract-top-trader?instId=BTC-USDT-SWAP
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取精英交易员合约多空持仓人数比
result = tradingDataAPI.get_top_trader_long_short_account_ratio(
    instId="BTC-USDT-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | string | 是 | 产品ID,如 BTC-USDT-SWAP 仅适用于 交割/永续 | 
| period | string | 否 | 时间粒度,默认值 5m, 如 [5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/2D/3D/5D/1W/1M/3M]UTC+0开盘价k线: [ 6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/5Dutc/1Wutc/1Mutc/3Mutc] | 
| end | string | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| begin | string | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | string | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "1701417600000",    // timestamp
            "1.1739"            // long/short account num ratio of top traders
        ],
        [
            "1701417600000",    // timestamp
            "0.1236"            // long/short account num ratio of top traders
        ],
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| longShortAcctRatio | String | 多空人数比 | 
返回值数组顺序分别为是:[ts, longShortAcctRatio]
获取精英交易员合约多空持仓仓位比
获取交割永续开多、开空仓位占总持仓的比值。精英交易员指持仓价值前5%的用户。每个粒度最多可获取最近1,440条数据。数据时间范围最早至2024年3月22日。
限速: 5次/2s
限速规则: IP + Instrument ID
HTTP请求
GET /api/v5/rubik/stat/contracts/long-short-position-ratio-contract-top-trader
请求示例
GET /api/v5/rubik/stat/contracts/long-short-position-ratio-contract-top-trader?instId=BTC-USDT-SWAP
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取精英交易员合约多空持仓仓位比
result = tradingDataAPI.get_top_trader_long_short_position_ratio(
    instId="BTC-USDT-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | string | 是 | 产品ID,如 BTC-USDT-SWAP仅适用于 交割/永续 | 
| period | string | 否 | 时间粒度,默认值 5m, 如 [5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/2D/3D/5D/1W/1M/3M]UTC+0开盘价k线: [ 6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/5Dutc/1Wutc/1Mutc/3Mutc] | 
| end | string | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| begin | string | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | string | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "1701417600000",    // timestamp
            "1.1739"            // long/short position num ratio of top traders
        ],
        [
            "1701417600000",    // timestamp
            "0.1236"            // long/short position num ratio of top traders
        ],
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| longShortPosRatio | String | 多空仓位占总持仓比值 | 
返回值数组顺序分别为是:[ts, longShortPosRatio]
获取合约多空持仓人数比
获取交割永续净开多持仓用户数与净开空持仓用户数的比值。每个粒度最多可获取最近1,440条数据。
对于时间粒度period=1D,数据时间范围最早至2024年1月1日;对于其他时间粒度period,最早至2024年2月初。
限速: 5次/2s
限速规则: IP + Instrument ID
HTTP请求
GET /api/v5/rubik/stat/contracts/long-short-account-ratio-contract
请求示例
GET /api/v5/rubik/stat/contracts/long-short-account-ratio-contract?instId=BTC-USDT-SWAP
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取合约净开多持仓用户数与净开空持仓用户数的比值
result = tradingDataAPI.get_contract_long_short_ratio(
    instId="BTC-USDT-SWAP"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| instId | string | 是 | 产品ID,如 BTC-USDT 仅适用于 交割/永续 | 
| period | string | 否 | 时间粒度,默认值 5m, 如 [5m/15m/30m/1H/2H/4H]UTC+8开盘价k线:[ 6H/12H/1D/2D/3D/5D/1W/1M/3M]UTC+0开盘价k线: [ 6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/5Dutc/1Wutc/1Mutc/3Mutc] | 
| end | string | 否 | 筛选的结束时间戳 ts,Unix 时间戳为毫秒数格式,如 1597027383085 | 
| begin | string | 否 | 筛选的开始时间戳 ts,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | string | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        [
            "1701417600000",    // timestamp
            "1.1739"            // long/short account num ratio of traders
        ],
        [
            "1701417600000",    // timestamp
            "0.1236"            // long/short account num ratio of traders
        ],
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| longShortAcctRatio | String | 多空人数比 | 
返回值数组顺序分别为是:[ts, longAcctPosRatio]
获取多空持仓人数比
获取交割永续净开多持仓用户数与净开空持仓用户数的比值。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/contracts/long-short-account-ratio
请求示例
GET /api/v5/rubik/stat/contracts/long-short-account-ratio?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取合约多空持仓人数比
result = tradingDataAPI.get_long_short_ratio(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| begin | String | 否 | 开始时间,如 1597026383085 | 
| end | String | 否 | 结束时间,如 1597026383011 | 
| period | String | 否 | 时间粒度,默认值 5m。支持[5m/1H/1D]5m粒度最多只能查询两天之内的数据1H粒度最多只能查询30天之内的数据1D粒度最多只能查询180天之内的数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630502100000",
            "1.25"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| ratio | String | 多空人数比 | 
获取合约持仓量及交易量
获取交割永续的持仓量和交易量。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/contracts/open-interest-volume
请求示例
GET /api/v5/rubik/stat/contracts/open-interest-volume?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取合约持仓量及交易量
result = tradingDataAPI.get_contracts_interest_volume(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| begin | String | 否 | 开始时间,如 1597026383085 | 
| end | String | 否 | 结束时间,如 1597026383011 | 
| period | String | 否 | 时间粒度,默认值 5m。支持[5m/1H/1D]5m粒度最多只能查询两天之内的数据1H粒度最多只能查询30天之内的数据1D粒度最多只能查询180天之内的数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630502400000",
            "1713028741.6898",
            "39800873.554"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| oi | String | 持仓总量(USD) | 
| vol | String | 交易总量(USD) | 
获取期权持仓量及交易量
获取期权的持仓量和交易量。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/option/open-interest-volume
请求示例
GET /api/v5/rubik/stat/option/open-interest-volume?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 获取期权持仓量及交易量
result = tradingDataAPI.get_options_interest_volume(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| period | String | 否 | 时间粒度,默认值 8H。支持[8H/1D]每个粒度最多只能查询72条数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630368000000",
            "3458.1000",
            "78.8000"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| oi | String | 持仓总量,单位为请求参数的 ccy | 
| vol | String | 交易总量,单位为请求参数的 ccy | 
看涨/看跌期权合约 持仓总量比/交易总量比
获取看涨期权和看跌期权的持仓量比值,以及交易量比值。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/option/open-interest-volume-ratio
请求示例
GET /api/v5/rubik/stat/option/open-interest-volume-ratio?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 看涨/看跌期权合约 持仓总量比/交易总量比
result = tradingDataAPI.get_put_call_ratio(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| period | String | 否 | 时间粒度,默认值 8H。支持[8H/1D]每个粒度最多只能查询72条数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630512000000",
            "2.7261",
            "2.3447"
        ],
        [
            "1630425600000",
            "2.8101",
            "2.3438"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| oiRatio | String | 看涨/看跌 持仓总量比 | 
| volRatio | String | 看涨/看跌 交易总量比 | 
看涨看跌持仓总量及交易总量(按到期日分)
获取每个到期日上看涨期权和看跌期权的持仓量和交易量。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/option/open-interest-volume-expiry
请求示例
GET /api/v5/rubik/stat/option/open-interest-volume-expiry?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 看涨看跌持仓总量及交易总量(按到期日分)
result = tradingDataAPI.get_interest_volume_expiry(
    ccy="BTC"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| period | String | 否 | 时间粒度,默认值 8H。支持[8H/1D]每个粒度仅展示最新的一份数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630540800000",
            "20210902",
            "6.4",
            "18.4",
            "0.7",
            "0.4"
        ],
        [
            "1630540800000",
            "20210903",
            "47",
            "36.6",
            "1",
            "10.7"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| expTime | String | 到期日(格式: YYYYMMDD,如 "20210623") | 
| callOI | String | 看涨持仓总量(以 币为单位) | 
| putOI | String | 看跌持仓总量(以 币为单位) | 
| callVol | String | 看涨交易总量(以 币为单位) | 
| putVol | String | 看跌交易总量(以 币为单位) | 
看涨看跌持仓总量及交易总量(按执行价格分)
获取看涨期权和看跌期权的taker主动买入和卖出的交易量。
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/option/open-interest-volume-strike
请求示例
GET /api/v5/rubik/stat/option/open-interest-volume-strike?ccy=BTC&expTime=20210901
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 看涨看跌持仓总量及交易总量(按执行价格分)
result = tradingDataAPI.get_interest_volume_strike(
    ccy="BTC",
    expTime="20210623"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| expTime | String | 是 | 到期日(格式: YYYYMMdd,如 "20210623") | 
| period | String | 否 | 时间粒度,默认值 8H。支持[8H/1D]每个粒度仅展示最新的一份数据 | 
返回结果
{
    "code": "0",
    "data": [
        [
            "1630540800000",
            "10000",
            "0",
            "0.5",
            "0",
            "0"
        ],
        [
            "1630540800000",
            "14000",
            "0",
            "5.2",
            "0",
            "0"
        ]
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| strike | String | 执行价格 | 
| callOI | String | 看涨持仓总量(以 币为单位) | 
| putOI | String | 看跌持仓总量(以 币为单位) | 
| callVol | String | 看涨交易总量(以 币为单位) | 
| putVol | String | 看跌交易总量(以 币为单位) | 
看跌/看涨期权合约 主动买入/卖出量
该指标展示某一时刻,单位时间内看跌/看涨期权的主动(taker)买入/卖出交易量
限速:5次/2s
限速规则:IP
HTTP请求
GET /api/v5/rubik/stat/option/taker-block-volume
请求示例
GET /api/v5/rubik/stat/option/taker-block-volume?ccy=BTC
import okx.TradingData as TradingData_api
flag = "0"  # 实盘: 0, 模拟盘: 1
tradingDataAPI = TradingData_api.TradingDataAPI(flag=flag)
# 看跌/看涨期权合约 主动买入/卖出量
result = tradingDataAPI.get_taker_block_volume(
    ccy="BTC",
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| period | String | 否 | 时间粒度,默认值 8H。支持[8H/1D]每个粒度仅展示最新的一份数据 | 
返回结果
{
    "code": "0",
    "data": [
        "1630512000000",
        "8.55",
        "67.3",
        "16.05",
        "16.3",
        "126.4",
        "40.7"
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 数据产生时间 | 
| callBuyVol | String | 看涨买入量 以结算货币为单位 | 
| callSellVol | String | 看涨卖出量 以结算货币为单位 | 
| putBuyVol | String | 看跌买入量 以结算货币为单位 | 
| putSellVol | String | 看跌卖出量 以结算货币为单位 | 
| callBlockVol | String | 看涨大单 | 
| putBlockVol | String | 看跌大单 | 
资金账户
资金功能模块下的API接口需要身份验证。
REST API
获取币种列表
获取当前用户KYC实体支持的币种列表。
限速:6 次/s
限速规则:User ID
权限:读取
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)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询,币种之间半角逗号分隔 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
        "burningFeeRate": "",
        "canDep": true,
        "canInternal": true,
        "canWd": true,
        "ccy": "BTC",
        "chain": "BTC-Bitcoin",
        "ctAddr": "",
        "depEstOpenTime": "",
        "depQuotaFixed": "",
        "depQuoteDailyLayer2": "",
        "fee": "0.00005",
        "logoLink": "https://static.coinall.ltd/cdn/oksupport/asset/currency/icon/btc20230419112752.png",
        "mainNet": true,
        "maxFee": "0.00005",
        "maxFeeForCtAddr": "",
        "maxWd": "500",
        "minDep": "0.0005",
        "minDepArrivalConfirm": "1",
        "minFee": "0.00005",
        "minFeeForCtAddr": "",
        "minInternal": "0.0001",
        "minWd": "0.0005",
        "minWdUnlockConfirm": "2",
        "name": "Bitcoin",
        "needTag": false,
        "usedDepQuotaFixed": "",
        "usedWdQuota": "0",
        "wdEstOpenTime": "",
        "wdQuota": "10000000",
        "wdTickSz": "8"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| name | String | 币种名称,不显示则无对应名称 | 
| logoLink | String | 币种Logo链接 | 
| chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| ctAddr | String | 合约地址 | 
| canDep | Boolean | 当前是否可充值 false:不可链上充值true:可以链上充值 | 
| canWd | Boolean | 当前是否可提币 false:不可链上提币true:可以链上提币 | 
| canInternal | Boolean | 当前是否可内部转账 false:不可内部转账true:可以内部转账 | 
| depEstOpenTime | String | 充值预期开放时间,Unix时间戳的毫秒数格式,如 1597026383085如果 canDep为true,则返回"" | 
| wdEstOpenTime | String | 提币预期开放时间,Unix时间戳的毫秒数格式,如 1597026383085如果 canWd为true,则返回"" | 
| minDep | String | 币种单笔最小充值量 | 
| minWd | String | 币种单笔最小 链上提币量 | 
| minInternal | String | 币种单笔最小 内部转账量无单笔最大 内部转账量限制,受24小时内提币额度(wdQuota)限制 | 
| maxWd | String | 币种单笔最大 链上提币量 | 
| wdTickSz | String | 提币精度,表示小数点后的位数。提币手续费精度与提币精度保持一致。 内部转账提币精度为小数点后8位。 | 
| wdQuota | String | 过去24小时内提币额度(包含 链上提币和内部转账),单位为USD | 
| usedWdQuota | String | 过去24小时内已用提币额度,单位为 USD | 
| fee | String | 固定的提币手续费数量 适用于 链上提币 | 
| minFee | String | 适用于 链上提币该字段已废弃 | 
| maxFee | String | 适用于 链上提币该字段已废弃 | 
| minFeeForCtAddr | String | 适用于 链上提币该字段已废弃 | 
| maxFeeForCtAddr | String | 适用于 链上提币该字段已废弃 | 
| burningFeeRate | String | 燃烧费率,如 0.05代表5%。部分币种会收取燃烧费用。燃烧费用按照提币数量(不含gas fee) 乘以 燃烧费率,在提币数量基础上扣除。 适用于 链上提币 | 
| mainNet | Boolean | 当前链是否为主链 | 
| needTag | Boolean | 当前链提币是否需要标签(tag/memo)信息,如 EOS该字段为true | 
| minDepArrivalConfirm | String | 充值到账最小网络确认数。币已到账但不可提。 | 
| minWdUnlockConfirm | String | 提现解锁最小网络确认数 | 
| depQuotaFixed | String | 充币固定限额,单位为 USD没有充币限制则返回"" | 
| usedDepQuotaFixed | String | 已用充币固定额度,单位为 USD没有充币限制则返回"" | 
| depQuoteDailyLayer2 | String | Layer2网络每日充值上限 | 
获取资金账户余额
获取资金账户所有资产列表,查询各币种的余额、冻结和可用等信息。
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/balances
请求示例
GET /api/v5/asset/balances
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_balances()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
            "availBal": "37.11827078",
            "bal": "37.11827078",
            "ccy": "ETH",
            "frozenBal": "0"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| bal | String | 余额 | 
| frozenBal | String | 冻结余额 | 
| availBal | String | 可用余额 | 
获取不可交易资产
获取当前用户 KYC 实体支持的不可交易资产列表。
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/non-tradable-assets
请求示例
GET /api/v5/asset/non-tradable-assets
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
result = fundingAPI.get_non_tradable_assets()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "bal": "989.84719571",
            "burningFeeRate": "",
            "canWd": true,
            "ccy": "CELT",
            "chain": "CELT-OKTC",
            "ctAddr": "f403fb",
            "fee": "2",
            "feeCcy": "USDT",
            "logoLink": "https://static.coinall.ltd/cdn/assets/imgs/221/460DA8A592400393.png",
            "minWd": "0.1",
            "name": "",
            "needTag": false,
            "wdAll": false,
            "wdTickSz": "8"
        },
        {
            "bal": "0.001",
            "burningFeeRate": "",
            "canWd": true,
            "ccy": "MEME",
            "chain": "MEME-ERC20",
            "ctAddr": "09b760",
            "fee": "5",
            "feeCcy": "USDT",
            "logoLink": "https://static.coinall.ltd/cdn/assets/imgs/207/2E664E470103C613.png",
            "minWd": "0.001",
            "name": "MEME Inu",
            "needTag": false,
            "wdAll": false,
            "wdTickSz": "8"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 CELT | 
| name | String | 币种中文名称,不显示则无对应名称 | 
| logoLink | String | 币种Logo链接 | 
| bal | String | 可提余额 | 
| canWd | Boolean | 是否可提 false: 不可提true: 可提 | 
| chain | String | 支持提币的链 | 
| minWd | String | 币种单笔最小提币量 | 
| wdAll | Boolean | 该币种资产是否必须一次性全部提取 | 
| fee | String | 提币固定手续费。提币手续费精度为小数点后8位。 | 
| feeCcy | String | 提币固定手续费单位 | 
| burningFeeRate | String | 燃烧费率,如 0.05代表5%。部分币种会收取燃烧费用。燃烧费用按照提币数量(不含gas fee) 乘以 燃烧费率,在提币数量基础上扣除。 | 
| ctAddr | String | 合约地址后6位 | 
| wdTickSz | String | 提币精度,表示小数点后的位数 | 
| needTag | Boolean | 提币的链是否需要标签(tag/memo)信息 | 
获取账户资产估值
查看账户资产估值
限速:1次/s
限速规则:User ID
权限:读取
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)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 资产估值对应的单位 BTC 、USDT USD 、CNY 、JPY、KRW、RUB、EUR VND 、IDR 、INR、PHP、THB、TRY AUD 、SGD 、ARS、SAR、AED、IQD 默认为 BTC为单位的估值 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "details": {
                "classic": "124.6",
                "earn": "1122.73",
                "funding": "0.09",
                "trading": "2544.28"
            },
            "totalBal": "3790.09",
            "ts": "1637566660769"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| totalBal | String | 账户总资产估值 | 
| ts | String | 数据更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| details | Object | 各个账户的资产估值 | 
| > funding | String | 资金账户 | 
| > trading | String | 交易账户 | 
| > classic | String | 经典账户 (已废弃) | 
| > earn | String | 金融账户 | 
资金划转
调用时,API Key 需要有交易权限。
支持母账户的资金账户划转到交易账户,母账户到子账户的资金账户和交易账户划转。
子账户默认可转出至母账户,划转到同一母账户下的其他子账户,需要先调用 设置子账户主动转出权限 接口进行授权。
限速:2 次/s
限速规则:User ID + Currency
权限:交易
HTTP 请求
POST /api/v5/asset/transfer
请求示例
# 母账户USDT从资金账户划转1.5USDT到交易账户
POST /api/v5/asset/transfer
body 
{
    "ccy":"USDT",
    "amt":"1.5",
    "from":"6",
    "to":"18"
}
# 母账户从资金账户划转1.5USDT到子账户的资金账户
POST /api/v5/asset/transfer
body 
{
    "ccy":"USDT",
    "type":"1",
    "amt":"1.5",
    "from":"6",
    "to":"6",
    "subAcct":"mini"
}
# 子账户从资金账户划转1.5USDT到另一子账户的资金账户
POST /api/v5/asset/transfer
body 
{
    "ccy":"USDT",
    "type":"4",
    "amt":"1.5",
    "from":"6",
    "to":"6",
    "subAcct":"mini"
}
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.funds_transfer(
    ccy="USDT",
    amt="1.5",
    from_="6",
    to="18"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 划转类型 0:账户内划转1:母账户转子账户(仅适用于母账户APIKey)2:子账户转母账户(仅适用于母账户APIKey)3:子账户转母账户(仅适用于子账户APIKey)4:子账户转子账户(仅适用于子账户APIKey,且目标账户需要是同一母账户下的其他子账户。子账户主动转出权限默认是关闭的,权限调整参考 设置子账户主动转出权限。)默认是 0如果您希望通过母账户API Key控制子账户之间的划转,参考接口 子账户间资金划转 | 
| ccy | String | 是 | 划转币种,如 USDT | 
| amt | String | 是 | 划转数量 | 
| from | String | 是 | 转出账户 6:资金账户18:交易账户 | 
| to | String | 是 | 转入账户 6:资金账户18:交易账户 | 
| subAcct | String | 可选 | 子账户名称 当 type为1/2/4时,该字段必填 | 
| loanTrans | Boolean | 否 | 是否支持 现货模式/跨币种保证金模式/组合保证金模式下的借币转出true:支持借币转出false:不支持借币转出默认为 false | 
| omitPosRisk | String | 否 | 是否忽略仓位风险 默认为 false仅适用于 组合保证金模式 | 
| clientId | String | 否 | 客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "transId": "754147",
      "ccy": "USDT",
      "clientId": "",
      "from": "6",
      "amt": "0.1",
      "to": "18"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| transId | String | 划转 ID | 
| ccy | String | 划转币种 | 
| from | String | 转出账户 | 
| amt | String | 划转量 | 
| to | String | 转入账户 | 
| clientId | String | 客户自定义ID | 
获取资金划转状态
获取最近2个星期内的资金划转状态数据
限速:10 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/transfer-state
请求示例
GET /api/v5/asset/transfer-state?transId=1&type=1
import okx.Funding as Funding
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘: 0, 模拟盘: 1
fundingAPI = Funding.FundingAPI(apikey, secretkey, passphrase, False, flag)
# 获取资金划转状态
result = fundingAPI.transfer_state(
    transId="248424899",
    type="0"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| transId | String | 可选 | 划转ID transId和clientId必须传一个,若传两个,以transId为主 | 
| clientId | String | 可选 | 客户自定义ID | 
| type | String | 否 | 划转类型 0:账户内划转1:母账户转子账户(仅适用于母账户APIKey)2:子账户转母账户(仅适用于母账户APIKey)3:子账户转母账户(仅适用于子账户APIKey)4:子账户转子账户(仅适用于子账户APIKey,且目标账户需要是同一母账户下的其他子账户)默认是 0对于Custody账户该参数可以不传或者传0。 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "1.5",
            "ccy": "USDT",
            "clientId": "",
            "from": "18",
            "instId": "", //已废弃
            "state": "success",
            "subAcct": "test",
            "to": "6",
            "toInstId": "", //已废弃
            "transId": "1",
            "type": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| transId | String | 划转 ID | 
| clientId | String | 客户自定义 ID | 
| ccy | String | 划转币种 | 
| amt | String | 划转量 | 
| type | String | 划转类型 0:账户内划转1:母账户转子账户(仅适用于母账户APIKey)2:子账户转母账户(仅适用于母账户APIKey)3:子账户转母账户(仅适用于子账户APIKey)4:子账户转子账户(仅适用于子账户APIKey,且目标账户需要是同一母账户下的其他子账户) | 
| from | String | 转出账户 6:资金账户18:交易账户 | 
| to | String | 转入账户 6:资金账户18:交易账户 | 
| subAcct | String | 子账户名称 | 
| instId | String | 已废弃 | 
| toInstId | String | 已废弃 | 
| state | String | 转账状态 success:成功pending:处理中failed:失败 | 
获取资金流水
查询最近一个月内资金账户账单流水
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/bills
请求示例
GET /api/v5/asset/bills
GET /api/v5/asset/bills?type=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.get_bills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种 | 
| type | String | 否 | 账单类型 1:充值2:提现13:撤销提现20:转出至子账户(主体是母账户)21:从子账户转入(主体是母账户)22:转出到母账户(主体是子账户)23:母账户转入(主体是子账户)28:领取47:系统冲正48:活动得到49:活动送出68:手续费返佣(通过返佣卡)72:收币73:送币74:送币退还75:[活期简单赚币] 申购76:[活期简单赚币] 赎回77:[Jumpstart] 派发78:[Jumpstart] 锁定80:[DEFI/锁仓挖矿] 产品申购82:[DEFI/锁仓挖矿] 产品赎回83:挖矿收益84:违约金89:存币收益116:法币创建订单117:法币完成订单118:法币取消订单124:[Jumpstart] 解锁130:从交易账户转入131:转出至交易账户132:[P2P] 客服冻结133:[P2P] 客服解冻134:[P2P] 客服转交135:跨链兑换137:[ETH质押] 申购138:[ETH质押] 兑换139:[ETH质押] 收益146:客户回馈150:节点返佣151:邀请奖励152:经纪商返佣160:双币赢申购161:双币赢回款162:双币赢收益163:双币赢退款172:[节点计划] 助力人返佣173:[节点计划] 手续费返现174:Jumpstart支付175:锁定质押物176:借款转入177:添加质押物178:减少质押物179:还款180:释放质押物181:偿还空投糖果185:[经纪商] 闪兑返佣187:[经纪商] 闪兑划转189:盲盒奖励195:不可交易资产提币196:不可交易资产提币撤销197:不可交易资产充值198:不可交易资产减少199:不可交易资产增加200:买入202:价格锁定申购203:价格锁定回款204:价格锁定收益205:价格锁定退款207:双币赢精简版申购208:双币赢精简版回款209:双币赢精简版收益210:双币赢精简版退款212:[活期借币] 多币种借贷锁定质押物215:[活期借币] 多币种借贷释放质押物217:[活期借币] 多币种借贷借款转入218:[活期借币] 多币种借贷还款232:[活期借币] 利息补贴转出220:已下架数字货币221:提币手续费支出222:提币手续费退款223:合约带单分润225:鲨鱼鳍申购226:鲨鱼鳍回款227:鲨鱼鳍收益228:鲨鱼鳍退款229:空投发放232:利息补贴入账233:经纪商佣金补偿240:雪球申購241:雪球回款242:雪球收益243:雪球交易失败249:海鸥申购250:海鸥回款251:海鸥收益252:海鸥退款263:策略分润265:信号收入266:现货带单分润270:DCD经纪商划转271:DCD经纪商返佣272:[闪兑] 买入数字货币/法币273:[闪兑] 卖出数字货币/法币284:[Custody] 转出交易子账户285:[Custody] 转入交易子账户286:[Custody] 转出托管资金账户287:[Custody] 转入托管资金账户288:[Custody] 托管资金入金289:[Custody] 托管资金出金299:推荐节点返佣300:手续费折扣返现303:雪球做市商转账304:[定期简单赚币] 订单提交305:[定期简单赚币] 订单赎回306:[定期简单赚币] 本金发放307:[定期简单赚币] 收益发放 (提前终止订单补偿)308:[定期简单赚币] 收益发放309:[定期简单赚币] 补偿收益发放 (订单延期补偿)311:系统转入小额资产313:发送礼物314:收到礼物315:礼物退回328:[SOL质押] 流动性质押收益329:[SOL质押] 流动性质押申购330:[SOL质押] 流动性质押铸币331:[SOL质押] 流动性质押赎回332:[SOL质押] 流动性质押结算333:体验金收益339:[定期简单赚币] 订单提交340:[定期简单赚币] 订单失败退款341:[定期简单赚币] 订单赎回342:[定期简单赚币] 本金发放343:[定期简单赚币] 收益发放344:[定期简单赚币] 补偿收益发放345:[机构借贷] 本金还款346:[机构借贷] 利息还款347:[机构借贷] 逾期罚款348:[BTC质押] 申购349:[BTC质押] 赎回350:[BTC质押] 收益351:[机构借贷] 发放贷款354:策略奖励发放361:已关闭的子账户余额转入372:资产锁定373:解除资产锁定400:自动赚币(USDG赚币)利息 | 
| clientId | String | 否 | 转账或提币的客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100,不填默认返回 100 条 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "billId": "12344",
      "ccy": "BTC",
      "clientId": "",
      "balChg": "2",
      "bal": "12",
      "type": "1",
      "ts": "1597026383085",
      "notes": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| billId | String | 账单 ID | 
| ccy | String | 账户余额币种 | 
| clientId | String | 转账或提币的客户自定义ID | 
| balChg | String | 账户层面的余额变动数量 | 
| bal | String | 账户层面的余额数量 | 
| type | String | 账单类型 | 
| notes | String | 备注 | 
| ts | String | 账单创建时间,Unix 时间戳的毫秒数格式,如 1597026383085 | 
获取资金流水全历史
查询资金账户的所有历史账单流水记录,可追溯至2021年2月1日。
限速:1 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/bills-history
请求示例
GET /api/v5/asset/bills-history
GET /api/v5/asset/bills-history?type=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.get_bills_history()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种 | 
| type | String | 否 | 账单类型 1:充值2:提现13:撤销提现20:转出至子账户(主体是母账户)21:从子账户转入(主体是母账户)22:转出到母账户(主体是子账户)23:母账户转入(主体是子账户)28:领取47:系统冲正48:活动得到49:活动送出68:手续费返佣(通过返佣卡)72:收币73:送币74:送币退还75:[活期简单赚币] 申购76:[活期简单赚币] 赎回77:[Jumpstart] 派发78:[Jumpstart] 锁定80:[DEFI/锁仓挖矿] 产品申购82:[DEFI/锁仓挖矿] 产品赎回83:挖矿收益84:违约金89:存币收益116:法币创建订单117:法币完成订单118:法币取消订单124:[Jumpstart] 解锁130:从交易账户转入131:转出至交易账户132:[P2P] 客服冻结133:[P2P] 客服解冻134:[P2P] 客服转交135:跨链兑换137:[ETH质押] 申购138:[ETH质押] 兑换139:[ETH质押] 收益146:客户回馈150:节点返佣151:邀请奖励152:经纪商返佣160:双币赢申购161:双币赢回款162:双币赢收益163:双币赢退款172:[节点计划] 助力人返佣173:[节点计划] 手续费返现174:Jumpstart支付175:锁定质押物176:借款转入177:添加质押物178:减少质押物179:还款180:释放质押物181:偿还空投糖果185:[经纪商] 闪兑返佣187:[经纪商] 闪兑划转189:盲盒奖励195:不可交易资产提币196:不可交易资产提币撤销197:不可交易资产充值198:不可交易资产减少199:不可交易资产增加200:买入202:价格锁定申购203:价格锁定回款204:价格锁定收益205:价格锁定退款207:双币赢精简版申购208:双币赢精简版回款209:双币赢精简版收益210:双币赢精简版退款212:[活期借币] 多币种借贷锁定质押物215:[活期借币] 多币种借贷释放质押物217:[活期借币] 多币种借贷借款转入218:[活期借币] 多币种借贷还款232:[活期借币] 利息补贴转出220:已下架数字货币221:提币手续费支出222:提币手续费退款223:合约带单分润225:鲨鱼鳍申购226:鲨鱼鳍回款227:鲨鱼鳍收益228:鲨鱼鳍退款229:空投发放232:利息补贴入账233:经纪商佣金补偿240:雪球申購241:雪球回款242:雪球收益243:雪球交易失败249:海鸥申购250:海鸥回款251:海鸥收益252:海鸥退款263:策略分润265:信号收入266:现货带单分润270:DCD经纪商划转271:DCD经纪商返佣272:[闪兑] 买入数字货币/法币273:[闪兑] 卖出数字货币/法币284:[Custody] 转出交易子账户285:[Custody] 转入交易子账户286:[Custody] 转出托管资金账户287:[Custody] 转入托管资金账户288:[Custody] 托管资金入金289:[Custody] 托管资金出金299:推荐节点返佣300:手续费折扣返现303:雪球做市商转账304:[定期简单赚币] 订单提交305:[定期简单赚币] 订单赎回306:[定期简单赚币] 本金发放307:[定期简单赚币] 收益发放 (提前终止订单补偿)308:[定期简单赚币] 收益发放309:[定期简单赚币] 补偿收益发放 (订单延期补偿)311:系统转入小额资产313:发送礼物314:收到礼物315:礼物退回328:[SOL质押] 流动性质押收益329:[SOL质押] 流动性质押申购330:[SOL质押] 流动性质押铸币331:[SOL质押] 流动性质押赎回332:[SOL质押] 流动性质押结算333:体验金收益339:[定期简单赚币] 订单提交340:[定期简单赚币] 订单失败退款341:[定期简单赚币] 订单赎回342:[定期简单赚币] 本金发放343:[定期简单赚币] 收益发放344:[定期简单赚币] 补偿收益发放345:[机构借贷] 本金还款346:[机构借贷] 利息还款347:[机构借贷] 逾期罚款348:[BTC质押] 申购349:[BTC质押] 赎回350:[BTC质押] 收益351:[机构借贷] 发放贷款354:策略奖励发放361:已关闭的子账户余额转入372:资产锁定373:解除资产锁定400:自动赚币(USDG赚币)利息 | 
| clientId | String | 否 | 转账或提币的客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| after | String | 否 | 查询在此之前的内容,值为时间戳或账单记录ID,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100,不填默认返回 100 条 | 
| pagingType | String | 否 | 分页类型 1:按账单记录时间戳分页2:按账单记录ID分页默认值为 1 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "billId": "12344",
      "ccy": "BTC",
      "clientId": "",
      "balChg": "2",
      "bal": "12",
      "type": "1",
      "ts": "1597026383085",
      "notes": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| billId | String | 账单 ID | 
| ccy | String | 账户余额币种 | 
| clientId | String | 转账或提币的客户自定义ID | 
| balChg | String | 账户层面的余额变动数量 | 
| bal | String | 账户层面的余额数量 | 
| type | String | 账单类型 | 
| notes | String | 备注 | 
| ts | String | 账单创建时间,Unix 时间戳的毫秒数格式,如 1597026383085 | 
获取充值地址信息
获取各个币种的充值地址,包括曾使用过的老地址。
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/deposit-address
请求示例
GET /api/v5/asset/deposit-address?ccy=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(
    ccy="USDT"
)
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "chain": "BTC-Bitcoin",
            "ctAddr": "",
            "ccy": "BTC",
            "to": "6",
            "addr": "39XNxK1Ryqgg3Bsyn6HzoqV4Xji25pNkv6",
            "verifiedName":"John Corner",
            "selected": true
        },
        {
            "chain": "BTC-OKC",
            "ctAddr": "",
            "ccy": "BTC",
            "to": "6",
            "addr": "0x66d0edc2e63b6b992381ee668fbcb01f20ae0428",
            "verifiedName":"John Corner",
            "selected": true
        },
        {
            "chain": "BTC-ERC20",
            "ctAddr": "5807cf",
            "ccy": "BTC",
            "to": "6",
            "addr": "0x66d0edc2e63b6b992381ee668fbcb01f20ae0428",
            "verifiedName":"John Corner",
            "selected": true
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| addr | String | 充值地址 | 
| tag | String | 部分币种充值需要标签,若不需要则不返回此字段 | 
| memo | String | 部分币种充值需要 memo,若不需要则不返回此字段 | 
| pmtId | String | 部分币种充值需要此字段(payment_id),若不需要则不返回此字段 | 
| addrEx | Object | 充值地址备注,部分币种充值需要,若不需要则不返回此字段 如币种 TONCOIN的充值地址备注标签名为comment,则该字段返回:{'comment':'123456'} | 
| ccy | String | 币种,如 BTC | 
| chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| to | String | 转入账户 6:资金账户18:交易账户某些主体用户(如巴西)只支持充值到交易账户 | 
| verifiedName | String | (接受方)已验证姓名 | 
| selected | Boolean | 该地址是否为页面选中的地址 | 
| ctAddr | String | 合约地址后6位 | 
获取充值记录
根据币种,充值状态,时间范围获取充值记录,按照时间倒序排列,默认返回 100 条数据。
支持Websocket订阅,参考 充值信息频道。
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/deposit-history
请求示例
# 查询最近的充值记录
GET /api/v5/asset/deposit-history
# 查询从2022年06月01日到2022年07月01日之间的BTC的充值记录
GET /api/v5/asset/deposit-history?ccy=BTC&after=1654041600000&before=1656633600000
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)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种名称,如 BTC | 
| depId | String | 否 | 充值记录 ID | 
| fromWdId | String | 否 | 内部转账发起者提币申请 ID 如果该笔充值来自于内部转账,则该字段展示内部转账发起者的提币申请 ID | 
| txId | String | 否 | 区块转账哈希记录 | 
| type | String | 否 | 充值方式 3:内部转账4:链上充值 | 
| state | String | 否 | 充值状态 0:等待确认1:确认到账2:充值成功8:因该币种暂停充值而未到账,恢复充值后自动到账11:命中地址黑名单12:账户或充值被冻结13:子账户充值拦截14:KYC限额17:钱包地址正等待国际转账规则认证 | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1654041600000 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1656633600000 | 
| limit | string | 否 | 返回的结果集数量,默认为100,最大为100,不填默认返回100条 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
        "actualDepBlkConfirm": "2",
        "amt": "1",
        "areaCodeFrom": "",
        "ccy": "USDT",
        "chain": "USDT-TRC20",
        "depId": "88****33",
        "from": "",
        "fromWdId": "",
        "state": "2",
        "to": "TN4hGjVXMzy*********9b4N1aGizqs",
        "ts": "1674038705000",
        "txId": "fee235b3e812********857d36bb0426917f0df1802"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| amt | String | 充值数量 | 
| from | String | 充值账户 如果该笔充值来自于内部转账,则该字段展示内部转账发起者的账户信息,可以是手机号、邮箱、账户名称,其他情况返回"" | 
| areaCodeFrom | String | 如果 from为手机号,该字段为该手机号的区号 | 
| to | String | 到账地址 如果该笔充值来自于链上充值,则该字段展示链上地址,其他情况返回"" | 
| txId | String | 区块转账哈希记录 | 
| ts | String | 充值记录创建时间,Unix 时间戳的毫秒数格式,如 1655251200000 | 
| state | String | 充值状态 0:等待确认1:确认到账2:充值成功8:因该币种暂停充值而未到账,恢复充值后自动到账11:命中地址黑名单12:账户或充值被冻结13:子账户充值拦截14:KYC限额 | 
| depId | String | 充值记录 ID | 
| fromWdId | String | 内部转账发起者提币申请 ID 如果该笔充值来自于内部转账,则该字段展示内部转账发起者的提币申请 ID,其他情况返回"" | 
| actualDepBlkConfirm | String | 最新的充币网络确认数 | 
提币
支持资金账户资产提币。普通子账户不支持提币。
限速:6次/s
限速规则:User ID
权限:提币
HTTP请求
POST /api/v5/asset/withdrawal
请求示例
# 链上提币
POST /api/v5/asset/withdrawal
body
{
    "amt":"1",
    "dest":"4",
    "ccy":"BTC",
    "chain":"BTC-Bitcoin",
    "toAddr":"17DKe3kkkkiiiiTvAKKi2vMPbm1Bz3CMKw"
}
# 内部转账
POST /api/v5/asset/withdrawal
body
{
    "amt":"10",
    "dest":"3",
    "ccy":"USDT",
    "areaCode":"86",
    "toAddr":"15651000000"
}
# 特定主体用户需要提供接收方信息
POST /api/v5/asset/withdrawal
body
{
    "amt":"1",
    "dest":"4",
    "ccy":"BTC",
    "chain":"BTC-Bitcoin",
    "toAddr":"17DKe3kkkkiiiiTvAKKi2vMPbm1Bz3CMKw",
    "rcvrInfo":{
        "walletType":"exchange",
        "exchId":"did:ethr:0xfeb4f99829a9acdf52979abee87e83addf22a7e1",
        "rcvrFirstName":"Bruce",
        "rcvrLastName":"Wayne"
    }
}
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.withdrawal(
    ccy="USDT",
    toAddr="TXtvfb7cdrn6VX9H49mgio8bUxZ3DGfvYF",
    amt="100",
    dest="4",
    chain="USDT-TRC20"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种,如 USDT | 
| amt | String | 是 | 提币数量 该数量不包含手续费。提币时需预留足够的手续费。 链上提币所需网络手续费可以通过接口 获取币种列表 获取 内部转账无需手续费 | 
| dest | String | 是 | 提币方式 3:内部转账4:链上提币 | 
| toAddr | String | 是 | toAddr必须是认证过的地址/账户。如果选择链上提币,某些数字货币地址格式为地址:标签,如ARDOR-7JF3-8F2E-QUWZ-CAN7F:123456如果选择内部转账, toAddr必须是接收方地址,可以是UID(仅白名单用户)、邮箱、手机或者账户名(只有子账户才有账户名)。 | 
| toAddrType | String | 否 | 地址类型 1: 钱包地址、邮箱、手机号、登录账户名2: UID(仅白名单用户,且仅适用于 dest=3) | 
| chain | String | 可选 | 币种链信息 如 USDT下有USDT-ERC20,USDT-TRC20多个链如果不填此参数,则默认为主链 对于无效资产提币,不填此参数,则默认为唯一的提币链 适用于 链上提币,链信息可以通过接口 获取币种列表 获取 | 
| areaCode | String | 可选 | 手机区号,如 86当 toAddr为手机号时,该参数必填适用于 内部转账 | 
| rcvrInfo | Object | 可选 | 接收方信息 特定主体用户做 链上提币/闪电网络提币需要提供此信息 | 
| > walletType | String | 是 | 钱包类型 exchange:提币到交易所钱包private:提币到私人钱包对于钱包接收方为公司的, rcvrFirstName可以填公司名称,rcvrLastName可以填"N/A",地址信息可以填写公司注册地址。 | 
| > exchId | String | 可选 | 交易所 ID 可以通过 获取交易所列表(公共) 接口查询支持的交易所 如果交易所不在支持的交易所列表中,该字段填 0适用于walletType= exchange | 
| > rcvrFirstName | String | 可选 | 接收方名字,如 Bruce | 
| > rcvrLastName | String | 可选 | 接收方姓氏,如 Wayne | 
| > rcvrCountry | String | 可选 | 接收方所在国家,如 United States必须输入英文国家名称,或者两字母国家代码(ISO 3166-1)。输入内容参考下方国家信息表中 国家名称(英),国家代码 | 
| > rcvrCountrySubDivision | String | 可选 | 接收方所在州/省,如 California | 
| > rcvrTownName | String | 可选 | 接收方所在城镇,如 San Jose | 
| > rcvrStreetName | String | 可选 | 接收方所在街道地址,如 Clementi Avenue 1 | 
| clientId | String | 否 | 客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "amt": "0.1",
        "wdId": "67485",
        "ccy": "BTC",
        "clientId": "",
        "chain": "BTC-Bitcoin"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 提币币种 | 
| chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| amt | String | 提币数量 | 
| wdId | String | 提币申请ID | 
| clientId | String | 客户自定义ID | 
国家信息表
| 国家名称(英) | 国家名称(中) | 国家代码 | 
|---|---|---|
| Afghanistan | 阿富汗 | AF | 
| Albania | 阿尔巴尼亚 | AL | 
| Algeria | 阿尔及利亚 | DZ | 
| Andorra | 安道尔 | AD | 
| Angola | 安哥拉 | AO | 
| Anguilla | 安圭拉 | AI | 
| Antigua and Barbuda | 安提瓜和巴布达 | AG | 
| Argentina | 阿根廷 | AR | 
| Armenia | 亚美尼亚 | AM | 
| Australia | 澳大利亚 | AU | 
| Austria | 奥地利 | AT | 
| Azerbaijan | 阿塞拜疆 | AZ | 
| Bahamas | 巴哈马 | BS | 
| Bahrain | 巴林 | BH | 
| Bangladesh | 孟加拉国 | BD | 
| Barbados | 巴巴多斯 | BB | 
| Belarus | 白俄罗斯 | BY | 
| Belgium | 比利时 | BE | 
| Belize | 伯利兹 | BZ | 
| Benin | 贝宁 | BJ | 
| Bermuda | 百慕大 | BM | 
| Bhutan | 不丹 | BT | 
| Bolivia | 玻利维亚 | BO | 
| Bosnia and Herzegovina | 波斯尼亚和黑塞哥维那 (波黑) | BA | 
| Botswana | 博茨瓦纳 | BW | 
| Brazil | 巴西 | BR | 
| British Virgin Islands | 英属维尔京群岛 | VG | 
| Brunei | 文莱 | BN | 
| Bulgaria | 保加利亚 | BG | 
| Burkina Faso | 布基纳法索 | BF | 
| Burundi | 布隆迪 | BI | 
| Cambodia | 柬埔寨 | KH | 
| Cameroon | 喀麦隆 | CM | 
| Canada | 加拿大 | CA | 
| Cape Verde | 佛得角 | CV | 
| Cayman Islands | 开曼群岛 | KY | 
| Central African Republic | 中非共和国 | CF | 
| Chad | 乍得 | TD | 
| Chile | 智利 | CL | 
| Colombia | 哥伦比亚 | CO | 
| Comoros | 科摩罗 | KM | 
| Congo (Republic) | 刚果共和国 | CG | 
| Congo (Democratic Republic) | 刚果民主共和国 | CD | 
| Costa Rica | 哥斯达黎加 | CR | 
| Cote d´Ivoire (Ivory Coast) | 象牙海岸 | CI | 
| Croatia | 克罗地亚 | HR | 
| Cuba | 古巴 | CU | 
| Cyprus | 塞浦路斯 | CY | 
| Czech Republic | 捷克共和国 | CZ | 
| Denmark | 丹麦 | DK | 
| Djibouti | 吉布提 | DJ | 
| Dominica | 多米尼克 | DM | 
| Dominican Republic | 多明尼加共和国 | DO | 
| Ecuador | 厄瓜多尔 | EC | 
| Egypt | 埃及 | EG | 
| El Salvador | 萨尔瓦多 | SV | 
| Equatorial Guinea | 赤道几内亚 | GQ | 
| Eritrea | 厄立特里亚 | ER | 
| Estonia | 爱沙尼亚 | EE | 
| Ethiopia | 埃塞俄比亚 | ET | 
| Fiji | 斐济 | FJ | 
| Finland | 芬兰 | FI | 
| France | 法国 | FR | 
| Gabon | 加蓬 | GA | 
| Gambia | 冈比亚 | GM | 
| Georgia | 格鲁吉亚 | GE | 
| Germany | 德国 | DE | 
| Ghana | 加纳 | GH | 
| Greece | 希腊 | GR | 
| Grenada | 格林纳达 | GD | 
| Guatemala | 危地马拉 | GT | 
| Guinea | 几内亚 | GN | 
| Guinea-Bissau | 几内亚比绍 | GW | 
| Guyana | 圭亚那 | GY | 
| Haiti | 海地 | HT | 
| Honduras | 洪都拉斯 | HN | 
| Hong Kong | 香港 | HK | 
| Hungary | 匈牙利 | HU | 
| Iceland | 冰岛 | IS | 
| India | 印度 | IN | 
| Indonesia | 印度尼西亚 | ID | 
| Iran | 伊朗 | IR | 
| Iraq | 伊拉克 | IQ | 
| Ireland | 爱尔兰 | IE | 
| Israel | 以色列 | IL | 
| Italy | 意大利 | IT | 
| Jamaica | 牙买加 | JM | 
| Japan | 日本 | JP | 
| Jordan | 约旦 | JO | 
| Kazakhstan | 哈萨克斯坦 | KZ | 
| Kenya | 肯尼亚 | KE | 
| Kiribati | 基里巴斯 | KI | 
| North Korea | 朝鲜 | KP | 
| South Korea | 韩国 | KR | 
| Kuwait | 科威特 | KW | 
| Kyrgyzstan | 吉尔吉斯斯坦 | KG | 
| Laos | 老挝 | LA | 
| Latvia | 拉脱维亚 | LV | 
| Lebanon | 黎巴嫩 | LB | 
| Lesotho | 莱索托 | LS | 
| Liberia | 利比里亚 | LR | 
| Libya | 利比亚 | LY | 
| Liechtenstein | 列支敦士登 | LI | 
| Lithuania | 立陶宛 | LT | 
| Luxembourg | 卢森堡 | LU | 
| Macau | 澳门 | MO | 
| Macedonia | 马其顿 | MK | 
| Madagascar | 马达加斯加 | MG | 
| Malawi | 马拉维 | MW | 
| Malaysia | 马来西亚 | MY | 
| Maldives | 马尔代夫 | MV | 
| Mali | 马里 | ML | 
| Malta | 马耳他 | MT | 
| Marshall Islands | 马绍尔群岛 | MH | 
| Mauritania | 毛里塔尼亚 | MR | 
| Mauritius | 毛里求斯 | MU | 
| Mexico | 墨西哥 | MX | 
| Micronesia | 密克罗尼西亚 | FM | 
| Moldova | 摩尔多瓦 | MD | 
| Monaco | 摩纳哥 | MC | 
| Mongolia | 蒙古 | MN | 
| Montenegro | 黑山 | ME | 
| Morocco | 摩洛哥 | MA | 
| Mozambique | 莫桑比克 | MZ | 
| Myanmar (Burma) | 缅甸 | MM | 
| Namibia | 纳米比亚 | NA | 
| Nauru | 瑙鲁 | NR | 
| Nepal | 尼泊尔 | NP | 
| Netherlands | 荷兰 | NL | 
| New Zealand | 新西兰 | NZ | 
| Nicaragua | 尼加拉瓜 | NI | 
| Niger | 尼日尔 | NE | 
| Nigeria | 尼日利亚 | NG | 
| Norway | 挪威 | NO | 
| Oman | 阿曼 | OM | 
| Pakistan | 巴基斯坦 | PK | 
| Palau | 帕劳 | PW | 
| Panama | 巴拿马 | PA | 
| Papua New Guinea | 巴布亚新几内亚 | PG | 
| Paraguay | 巴拉圭 | PY | 
| Peru | 秘鲁 | PE | 
| Philippines | 菲律宾 | PH | 
| Poland | 波兰 | PL | 
| Portugal | 葡萄牙 | PT | 
| Qatar | 卡塔尔 | QA | 
| Romania | 罗马尼亚 | RO | 
| Russia | 俄国 | RU | 
| Rwanda | 卢旺达 | RW | 
| Saint Kitts and Nevis | 圣基茨和尼维斯 | KN | 
| Saint Lucia | 圣卢西亚 | LC | 
| Saint Vincent and the Grenadines | 圣文森特和格林纳丁斯 | VC | 
| Samoa | 萨摩亚 | WS | 
| San Marino | 圣马力诺 | SM | 
| Sao Tome and Principe | 圣多美和普林西比 | ST | 
| Saudi Arabia | 沙特阿拉伯 | SA | 
| Senegal | 塞内加尔 | SN | 
| Serbia | 塞尔维亚 | RS | 
| Seychelles | 塞舌尔 | SC | 
| Sierra Leone | 塞拉利昂 | SL | 
| Singapore | 新加坡 | SG | 
| Slovakia | 斯洛伐克 | SK | 
| Slovenia | 斯洛文尼亚 | SI | 
| Solomon Islands | 所罗门群岛 | SB | 
| Somalia | 索马里 | SO | 
| South Africa | 南非 | ZA | 
| Spain | 西班牙 | ES | 
| Sri Lanka | 斯里兰卡 | LK | 
| Sudan | 苏丹 | SD | 
| Suriname | 苏里南 | SR | 
| Swaziland | 斯威士兰 | SZ | 
| Sweden | 瑞典 | SE | 
| Switzerland | 瑞士 | CH | 
| Syria | 叙利亚 | SY | 
| Taiwan | 台湾 | TW | 
| Tajikistan | 塔吉克斯坦 | TJ | 
| Tanzania | 坦桑尼亚 | TZ | 
| Thailand | 泰国 | TH | 
| Timor-Leste (East Timor) | 东帝汶 | TL | 
| Togo | 多哥 | TG | 
| Tonga | 汤加 | TO | 
| Trinidad and Tobago | 特里尼达和多巴哥 | TT | 
| Tunisia | 突尼斯 | TN | 
| Turkey | 土耳其 | TR | 
| Turkmenistan | 土库曼斯坦 | TM | 
| Tuvalu | 图瓦卢 | TV | 
| U.S. Virgin Islands | 美属维尔京群岛 | VI | 
| Uganda | 乌干达 | UG | 
| Ukraine | 乌克兰 | UA | 
| United Arab Emirates | 阿拉伯联合酋长国 | AE | 
| United Kingdom | 英国 | GB | 
| United States | 美国 | US | 
| Uruguay | 乌拉圭 | UY | 
| Uzbekistan | 乌兹别克斯坦 | UZ | 
| Vanuatu | 瓦努阿图 | VU | 
| Vatican City | 梵蒂冈城 | VA | 
| Venezuela | 委内瑞拉 | VE | 
| Vietnam | 越南 | VN | 
| Yemen | 也门 | YE | 
| Zambia | 赞比亚 | ZM | 
| Zimbabwe | 津巴布韦 | ZW | 
| Kosovo | 科索沃 | XK | 
| South Sudan | 南苏丹 | SS | 
| China | 中国 | CN | 
| Palestine | 巴勒斯坦 | PS | 
| Curacao | 库拉索 | CW | 
| Dominican Republic | 多明尼加共和国 | DO | 
| Dominican Republic | 多明尼加共和国 | DO | 
| Gibraltar | 英属直布罗陀 | GI | 
| New Caledonia | 新喀里多尼亚 | NC | 
| Cook Islands | 库克群岛 | CK | 
| Reunion | 留尼旺 | RE | 
| Guernsey | 根西岛 | GG | 
| Guadeloupe | 瓜德罗普 | GP | 
| Martinique | 马提尼克 | MQ | 
| French Polynesia | 法属波利尼西亚 | PF | 
| Faroe Islands | 法罗群岛 | FO | 
| Greenland | 格陵兰岛 | GL | 
| Jersey | 泽西岛 | JE | 
| Aruba | 阿鲁巴 | AW | 
| Puerto Rico | 波多黎各 | PR | 
| Isle of Man | 曼岛 | IM | 
| Guam | 关岛 | GU | 
| Sint Maarten | 荷属圣马丁 | SX | 
| Turks and Caicos | 特克斯和凯科斯群岛 | TC | 
| Åland Islands | 奥兰群岛 | AX | 
| Caribbean Netherlands | 荷属加勒比 | BQ | 
| British Indian Ocean Territory | 英属印度洋领地 | IO | 
| Christmas as Island | 圣诞岛 | CX | 
| Cocos (Keeling) Islands | 科科斯 (基林) 群岛 | CC | 
| Falkland Islands (Islas Malvinas) | 福克兰群岛 (马尔维纳斯群岛) | FK | 
| Mayotte | 马约特 | YT | 
| Niue | 纽埃 | NU | 
| Norfolk Island | 诺福克岛 | NF | 
| Northern Mariana Islands | 北马里亚纳群岛 | MP | 
| Pitcairn Islands | 皮特凯恩群岛 | PN | 
| Saint Helena, Ascension and Tristan da Cunha | 圣赫勒拿、阿森松岛和特里斯坦-达库尼亚 | SH | 
| Collectivity of Saint Martin | 法属圣马丁 | MF | 
| Saint Pierre and Miquelon | 圣皮埃尔和密克隆 | PM | 
| Tokelau | 托克劳 | TK | 
| Wallis and Futuna | 瓦利斯和富图纳 | WF | 
| American Samoa | 美属萨摩亚 | AS | 
撤销提币
可以撤销普通提币,但不支持撤销闪电网络上的提币。
限速:6次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/asset/cancel-withdrawal
请求示例
POST /api/v5/asset/cancel-withdrawal
body {
   "wdId":"1123456"
}
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.cancel_withdrawal(
    wdId="123456"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| wdId | String | 是 | 提币申请ID | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "wdId": "1123456"   
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| wdId | String | 提币申请ID | 
获取提币记录
根据币种,提币状态,时间范围获取提币记录,按照时间倒序排列,默认返回100条数据。
支持Websocket订阅,参考 提币信息频道。
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/withdrawal-history
请求示例
# 查询最近的提币记录
GET /api/v5/asset/withdrawal-history
# 查询从2022年06月01日到2022年07月01日之间的BTC的提币记录
GET /api/v5/asset/withdrawal-history?ccy=BTC&after=1654041600000&before=1656633600000
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种名称,如 BTC | 
| wdId | String | 否 | 提币申请ID | 
| clientId | String | 否 | 客户自定义ID 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| txId | String | 否 | 区块转账哈希记录 | 
| type | String | 否 | 提币方式 3:内部转账4:链上提币 | 
| state | String | 否 | 提币状态 19:热钱包余额不足17:钱包地址正等待国际转账规则认证10:等待划转0:等待提币4/5/6/8/9/12:等待客服审核7:审核通过> 0,17,19可撤销,其他状态不可撤销1:正在将您的交易广播到链上15:交易待确认16:根据当地法律法规,您的提币最多可能需要 24 小时才能到账-3:撤销中-2:已撤销-1:失败2:提币成功 | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1654041600000 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1656633600000 | 
| limit | string | 否 | 返回的结果集数量,默认为100,最大为100,不填默认返回100条 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "note": "",
      "chain": "ETH-Ethereum",
      "fee": "0.007",
      "feeCcy": "ETH",
      "ccy": "ETH",
      "clientId": "",
      "toAddrType": "1",
      "amt": "0.029809",
      "txId": "0x35c******b360a174d",
      "from": "156****359",
      "areaCodeFrom": "86",
      "to": "0xa30d1fab********7CF18C7B6C579",
      "areaCodeTo": "",
      "state": "2",
      "ts": "1655251200000",
      "nonTradableAsset": false,
      "wdId": "15447421"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种 | 
| chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| nonTradableAsset | Boolean | 是否为不可交易资产 true:不可交易资产,false:可交易资产 | 
| amt | String | 数量 | 
| ts | String | 提币申请时间,Unix 时间戳的毫秒数格式,如 1655251200000 | 
| from | String | 提币账户 可以是 邮箱/手机号/子账户名 | 
| areaCodeFrom | String | 如果 from为手机号,该字段为该手机号的区号 | 
| to | String | 收币地址 | 
| areaCodeTo | String | 如果 to为手机号,该字段为该手机号的区号 | 
| toAddrType | String | 地址类型 1: 钱包地址、邮箱、手机号、登录账户名2: UID | 
| tag | String | 部分币种提币需要标签,若不需要则不返回此字段 | 
| pmtId | String | 部分币种提币需要此字段(payment_id),若不需要则不返回此字段 | 
| memo | String | 部分币种提币需要此字段,若不需要则不返回此字段 | 
| addrEx | Object | 提币地址备注,部分币种提币需要,若不需要则不返回此字段。如币种TONCOIN的提币地址备注标签名为comment,则该字段返回:{'comment':'123456'} | 
| txId | String | 提币哈希记录 内部转账该字段返回"" | 
| fee | String | 提币手续费数量 | 
| feeCcy | String | 提币手续费币种,如 USDT | 
| state | String | 提币状态 | 
| wdId | String | 提币申请ID | 
| clientId | String | 客户自定义ID | 
| note | String | 备注信息 | 
获取充值/提现的详细状态
获取充值与提现的详细状态信息与预估完成时间。
限速:1次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/deposit-withdraw-status
请求示例
# 查询充值
GET /api/v5/asset/deposit-withdraw-status?txId=xxxxxx&to=1672734730284&ccy=USDT&chain=USDT-ERC20
# 查询提现
GET /api/v5/asset/deposit-withdraw-status?wdId=200045249
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| wdId | String | 可选 | 提币申请ID,用于查询资金提现 wdId与txId必传其一也仅可传其一 | 
| txId | String | 可选 | 区块转账哈希记录ID,用于查询资金充值 wdId与txId必传其一也仅可传其一 | 
| ccy | String | 可选 | 币种,如 USDT查询充值时必填,需要与 txId一并提供 | 
| to | String | 可选 | 资金充值到账账户地址 查询充值时必填,需要与 txId一并提供 | 
| chain | String | 可选 | 币种链信息,如 USDT-ERC20 查询充值时必填,需要与 txId一并提供 | 
返回结果
{
    "code":"0",
    "data":[
        {
            "wdId": "200045249",
            "txId": "16f3638329xxxxxx42d988f97", 
            "state": "Pending withdrawal: Wallet is under maintenance, please wait.",
            "estCompleteTime": "01/09/2023, 8:10:48 PM"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| estCompleteTime | String | 预估完成时间 时区为 UTC+8;格式为 MM/dd/yyyy, h:mm:ss AM/PM estCompleteTime仅为预估完成时间,仅供参考 | 
| state | String | 充值/提现的现处于的详细阶段提示 冒号前面代表阶段,后面代表状态 | 
| txId | String | 区块转账哈希记录 提币如果 txId已经生成,则返回,否则返回"" | 
| wdId | String | 提币申请ID 如查询的是充值,该字段返回"" | 
获取交易所列表(公共)
公共接口无须鉴权
限速:6次/s
限速规则:IP
HTTP请求
GET /api/v5/asset/exchange-list
请求示例
GET /api/v5/asset/exchange-list
请求参数
无
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
        "exchId": "did:ethr:0xfeb4f99829a9acdf52979abee87e83addf22a7e1",
        "exchName": "1xbet"
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| exchName | String | 交易所名称,如 1xbet | 
| exchId | String | 交易所 ID,如 did:ethr:0xfeb4f99829a9acdf52979abee87e83addf22a7e1 | 
申请月结单 (近一年)
申请最近一年的月结单。
限速:20 次/月
限速规则:User ID
权限:读取
HTTP Request
POST /api/v5/asset/monthly-statement
请求示例
POST /api/v5/asset/monthly-statement
body
{
    "month":"Jan"
}
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| month | String | 否 | 月份,默认上一个月。有效值是 Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ts": "1646892328000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ts | String | 下载链接生成时间,Unix时间戳的毫秒数格式 ,如, 1597026383085 | 
获取月结单 (近一年)
获取近一年的月结单
限速:10 次/2s
限速规则:User ID
权限:读取
HTTP Request
GET /api/v5/asset/monthly-statement
请求示例
GET /api/v5/asset/monthly-statement?month=Jan
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| month | String | 是 | 月份, 有效值是 Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec | 
返回结果
{
    "code": "0",
    "data": [
        {
            "fileHref": "http://xxx",
            "state": "finished",
            "ts": 1646892328000
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fileHref | String | 文件链接 | 
| ts | Int | 下载链接生成时间,Unix时间戳的毫秒数格式 ,如 1597026383085 | 
| state | String | 下载链接状态 finished:已生成ongoing:进行中 | 
获取闪兑币种列表
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/convert/currencies
请求示例
GET /api/v5/asset/convert/currencies
请求参数
无
返回结果
{
    "code": "0",
    "data": [
        {
            "min": "",  // 已废弃
            "max": "",  // 已废弃
            "ccy": "BTC"
        },
        {
            "min": "",
            "max": "",
            "ccy": "ETH"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| min | String | |
| max | String | 
获取闪兑币对信息
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/convert/currency-pair
请求示例
GET /api/v5/asset/convert/currency-pair?fromCcy=USDT&toCcy=BTC
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| fromCcy | String | 是 | 消耗币种,如 USDT | 
| toCcy | String | 是 | 获取币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "baseCcy": "BTC",
            "baseCcyMax": "0.5",
            "baseCcyMin": "0.0001",
            "instId": "BTC-USDT",
            "quoteCcy": "USDT",
            "quoteCcyMax": "10000",
            "quoteCcyMin": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| instId | String | 币对,如 BTC-USDT | 
| baseCcy | String | 交易货币币种,如 BTC-USDT中的BTC | 
| baseCcyMax | String | 交易货币支持闪兑的最大值 | 
| baseCcyMin | String | 交易货币支持闪兑的最小值 | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT中的USDT | 
| quoteCcyMax | String | 计价货币支持闪兑的最大值 | 
| quoteCcyMin | String | 计价货币支持闪兑的最小值 | 
闪兑预估询价
限速:10次/s
限速规则:User ID
限速:1次/5s
限速规则:Instrument ID
权限:交易
HTTP请求
POST /api/v5/asset/convert/estimate-quote
请求示例
POST /api/v5/asset/convert/estimate-quote
body
{
    "baseCcy": "ETH",
    "quoteCcy": "USDT",
    "side": "buy",
    "rfqSz": "30",
    "rfqSzCcy": "USDT"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| baseCcy | String | 是 | 交易货币币种,如 BTC-USDT中的BTC | 
| quoteCcy | String | 是 | 计价货币币种,如 BTC-USDT中的USDT | 
| side | String | 是 | 交易方向 买: buy卖:sell描述的是对于baseCcy的交易方向 | 
| rfqSz | String | 是 | 询价数量 | 
| rfqSzCcy | String | 是 | 询价币种 | 
| clQReqId | String | 否 | 客户端自定义的订单标识 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 适用于broker用户 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "baseCcy": "ETH",
            "baseSz": "0.01023052",
            "clQReqId": "",
            "cnvtPx": "2932.40104429",
            "origRfqSz": "30",
            "quoteCcy": "USDT",
            "quoteId": "quoterETH-USDT16461885104612381",
            "quoteSz": "30",
            "quoteTime": "1646188510461",
            "rfqSz": "30",
            "rfqSzCcy": "USDT",
            "side": "buy",
            "ttlMs": "10000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| quoteTime | String | 生成报价时间,Unix时间戳的毫秒数格式 | 
| ttlMs | String | 报价有效期,单位为毫秒 | 
| clQReqId | String | 客户端自定义的订单标识 | 
| quoteId | String | 报价ID | 
| baseCcy | String | 交易货币币种,如 BTC-USDT 中BTC | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT 中USDT | 
| side | String | 交易方向 买: buy卖:sell | 
| origRfqSz | String | 原始报价的数量 | 
| rfqSz | String | 实际报价的数量 | 
| rfqSzCcy | String | 报价的币种 | 
| cnvtPx | String | 闪兑价格,单位为计价币 | 
| baseSz | String | 闪兑交易币数量 | 
| quoteSz | String | 闪兑计价币数量 | 
闪兑交易
闪兑交易前需要先 询价。
限速:10次/s
限速规则:User ID
权限:交易
同一方向(buy/sell) 1次/5s 交易限制
HTTP请求
POST /api/v5/asset/convert/trade
请求示例
POST /api/v5/asset/convert/trade
body
{
    "baseCcy": "ETH",
    "quoteCcy": "USDT",
    "side": "buy",
    "sz": "30",
    "szCcy": "USDT",
    "quoteId": "quoterETH-USDT16461885104612381"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteId | String | 是 | 报价ID | 
| baseCcy | String | 是 | 交易货币币种,如 BTC-USDT中的BTC | 
| quoteCcy | String | 是 | 计价货币币种,如 BTC-USDT中的USDT | 
| side | String | 是 | 交易方向 buy:买sell:卖描述的是对于 baseCcy的交易方向 | 
| sz | String | 是 | 用户报价数量 报价数量应不大于预估询价中的询价数量 | 
| szCcy | String | 是 | 用户报价币种 | 
| clTReqId | String | 否 | 用户自定义的订单标识 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| tag | String | 否 | 订单标签 适用于broker用户 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "baseCcy": "ETH",
            "clTReqId": "",
            "fillBaseSz": "0.01023052",
            "fillPx": "2932.40104429",
            "fillQuoteSz": "30",
            "instId": "ETH-USDT",
            "quoteCcy": "USDT",
            "quoteId": "quoterETH-USDT16461885104612381",
            "side": "buy",
            "state": "fullyFilled",
            "tradeId": "trader16461885203381437",
            "ts": "1646188520338"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| tradeId | String | 成交ID | 
| quoteId | String | 报价ID | 
| clTReqId | String | 用户自定义的订单标识 | 
| state | String | 状态 fullyFilled:交易成功rejected:交易失败 | 
| instId | String | 币对,如 BTC-USDT | 
| baseCcy | String | 交易货币币种,如 BTC-USDT中BTC | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT中USDT | 
| side | String | 交易方向 买: buy卖:sell | 
| fillPx | String | 成交价格,单位为计价币 | 
| fillBaseSz | String | 成交的交易币数量 | 
| fillQuoteSz | String | 成交的计价币数量 | 
| ts | String | 闪兑交易时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
获取闪兑交易历史
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/asset/convert/history
请求示例
GET /api/v5/asset/convert/history
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| clTReqId | String | 否 | 用户自定义的订单标识 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间。 | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 返回的结果集数量,默认为100,最大为100 | 
| tag | String | 否 | 订单标签 适用于broker用户 如果闪兑交易带上了 tag,查询时必须也带上此参数 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "clTReqId": "",
            "instId": "ETH-USDT",
            "side": "buy",
            "fillPx": "2932.401044",
            "baseCcy": "ETH",
            "quoteCcy": "USDT",
            "fillBaseSz": "0.01023052",
            "state": "fullyFilled",
            "tradeId": "trader16461885203381437",
            "fillQuoteSz": "30",
            "ts": "1646188520000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| tradeId | String | 成交ID | 
| clTReqId | String | 用户自定义的订单标识 | 
| state | String | fullyFilled:交易成功rejected:交易失败 | 
| instId | String | 币对,如 BTC-USDT | 
| baseCcy | String | 交易货币币种,如 BTC-USDT中的BTC | 
| quoteCcy | String | 计价货币币种,如 BTC-USDT中的USDT | 
| side | String | 交易方向 买: buy卖:sell | 
| fillPx | String | 成交价格,单位为计价币 | 
| fillBaseSz | String | 成交的交易币数量 | 
| fillQuoteSz | String | 成交的计价币数量 | 
| ts | String | 闪兑交易时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
获取买卖交易币种
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/fiat/buy-sell/currencies
请求示例
GET /api/v5/fiat/buy-sell/currencies
返回结果
{
    "code": "0",
    "data": [
        {
           "fiatCcyList":[
                {
                    "ccy": "USD"
                },
                {
                    "ccy": "EUR"
                },
                ...
            ],
            "cryptoCcyList":[
                {
                    "ccy": "BTC"
                },
                ...
            ],
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fiatCcyList | Array of objects | 法币列表 | 
| >ccy | String | 币种,如 BTC | 
| cryptoCcyList | Array of objects | 加密货币列表 | 
| >ccy | String | 币种,如 USD | 
获取买卖交易币对
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/fiat/buy-sell/currency-pair
请求示例
GET /api/v5/fiat/buy-sell/currency-pair?fromCcy=USD&toCcy=BTC
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| fromCcy | String | 是 | 卖出币种,如 USD | 
| toCcy | String | 是 | 买入币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "side": "buy",
            "fromCcy": "USD",
            "toCcy": "BTC",
            "singleTradeMax": "1",
            "singleTradeMin": "0.01",
            "fixedPxRemainingDailyQuota": "", 
            "fixedPxDailyLimit": "", 
            "paymentMethods":["balance"]
        }
    ],
    "msg": ""
}
{
    "code": "0",
    "data": [
        {
            "side": "sell",
            "fromCcy": "BTC",
            "toCcy": "USD",
            "singleTradeMax": "1",
            "singleTradeMin": "0.01",
            "fixedPxRemainingDailyQuota": "", 
            "fixedPxDailyLimit": "", 
            "paymentMethods":["balance"]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| side | String | 交易方向 buy: 使用法币购买加密货币/法币sell: 将加密货币出售为加密货币/法币未来可能同时支持双向交易,以逗号分隔,如 buy,sell | 
| fromCcy | String | 卖出币种,如 USD | 
| toCcy | String | 买入币种,如 BTC | 
| singleTradeMax | String | 单笔交易最大数量,单位为 fromCcy | 
| singleTradeMin | String | 单笔交易最小数量,单位为 fromCcy | 
| fixedPxDailyLimit | String | 固定价格每日限额 仅适用于法币间交易,否则返回空字符串 当 side=buy时,单位为fromCcy当 side=sell时,单位为toCcy | 
| fixedPxRemainingDailyQuota | String | 固定价格剩余每日限额 仅适用于法币间交易,否则返回空字符串 当 side=buy时,单位为fromCcy当 side=sell时,单位为toCcy | 
| paymentMethods | Array of strings | 支持的支付方式 balance例如:["balance"] | 
获取买卖交易报价
限速:10次/s
限速规则:User ID
限速:1次/5s
限速规则:Instrument ID
权限:读取
HTTP 请求
POST /api/v5/fiat/buy-sell/quote
请求示例
# 卖出USD买入0.1 BTC
POST /api/v5/fiat/buy-sell/quote
body
{
    "side":"buy",
    "fromCcy": "USD",
    "toCcy": "BTC",
    "rfqAmt": "0.1",
    "rfqCcy": "BTC"
}
# 卖出30 USD买入BTC
POST /api/v5/fiat/buy-sell/quote
body
{
    "side":"buy",
    "fromCcy": "USD",
    "toCcy": "BTC",
    "rfqAmt": "30",
    "rfqCcy": "USD"
}
# 卖出BTC买入30 USD
POST /api/v5/fiat/buy-sell/quote
body
{
    "side":"sell",
    "fromCcy": "BTC",
    "toCcy": "USD",
    "rfqAmt": "30",
    "rfqCcy": "USD"
}
# 卖出0.1 BTC买入USD
POST /api/v5/fiat/buy-sell/quote
body
{
    "side":"sell",
    "fromCcy": "BTC",
    "toCcy": "USD",
    "rfqAmt": "0.1",
    "rfqCcy": "BTC"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| side | String | 是 | 交易方向 buy: 法币买入加密货币sell: 加密货币卖出法币 | 
| fromCcy | String | 是 | 卖出币种 | 
| toCcy | String | 是 | 买入币种 | 
| rfqAmt | String | 是 | 询价数量 | 
| rfqCcy | String | 是 | 询价币种 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "quoteId": "quoterBTC-USD16461885104612381",
            "fromCcy": "USD",
            "toCcy": "BTC",
            "rfqAmt": "30",
            "rfqCcy": "USD",
            "quotePx": "2932.40104429",
            "quoteCcy": "USD",
            "quoteFromAmt": "30",
            "quoteToAmt": "30",
            "quoteTime": "1646188510461",
            "ttlMs": "10000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| quoteId | String | 报价ID | 
| side | String | 交易方向 buy: 使用法币购买加密货币/法币sell: 将加密货币出售为加密货币/法币 | 
| fromCcy | String | 卖出币种,如 USD | 
| toCcy | String | 买入币种,如 BTC | 
| rfqAmt | String | 询价数量 | 
| rfqCcy | String | 询价币种 | 
| quotePx | String | 报价价格 | 
| quoteCcy | String | 报价价格单位 如 USD | 
| quoteFromAmt | String | 报价数量,单位为 fromCcy | 
| quoteToAmt | String | 报价数量,单位为 toCcy | 
| quoteTime | String | 报价生成时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| ttlMs | String | 报价有效期,单位为毫秒 如 10000表示报价仅10秒内有效 | 
买卖交易
限速:1次/5s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/fiat/buy-sell/trade
请求示例
# 卖出30 USD买入BTC
POST /api/v5/fiat/buy-sell/trade
body
{
    "clOrdId":"123456",
    "side":"sell",
    "fromCcy": "USD",
    "toCcy": "BTC",
    "rfqAmt": "30",
    "rfqCcy": "USD",
    "paymentMethod":"balance",
    "quoteId": "quoterETH-USDT16461885104612381"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| quoteId | String | 是 | 报价ID 从获取买卖交易报价API获取 | 
| side | String | 是 | 交易方向 buy: 使用法币购买加密货币/法币sell: 将加密货币出售为加密货币/法币必须与报价请求一致 | 
| fromCcy | String | 是 | 卖出币种 必须与报价请求一致 | 
| toCcy | String | 是 | 买入币种 必须与报价请求一致 | 
| rfqAmt | String | 是 | 询价数量 必须与报价请求一致 | 
| rfqCcy | String | 是 | 询价币种 必须与报价请求一致 | 
| paymentMethod | String | 是 | 支付方式 balance | 
| clOrdId | String | 是 | 用户自定义的订单标识 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ordId": "1234",
            "clOrdId": "",
            "quoteId": "quoterBTC-USD16461885104612381",
            "side":"buy",
            "fromCcy": "USD",
            "toCcy": "BTC",
            "rfqAmt": "30",
            "rfqCcy": "USD",
            "fillPx": "2932.40104429",
            "fillQuoteCcy": "USD",
            "fillFromAmt": "30",
            "fillToAmt": "0.01",
            "cTime": "1646188510461"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| clOrdId | String | 用户自定义的订单标识 | 
| quoteId | String | 报价ID | 
| state | String | 交易状态 processing:处理中completed:已完成failed:失败 | 
| side | String | 交易方向 buy: 使用法币购买加密货币/法币sell: 将加密货币出售为加密货币/法币 | 
| fromCcy | String | 卖出币种 | 
| toCcy | String | 买入币种 | 
| rfqAmt | String | 询价数量 | 
| rfqCcy | String | 询价币种 | 
| fillPx | String | 成交价格,单位为报价币种 | 
| fillQuoteCcy | String | 成交价格报价币种 如 USD | 
| fillFromAmt | String | 卖出数量,单位为 fromCcy | 
| fillToAmt | String | 买入数量,单位为 toCcy | 
| cTime | String | 请求时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
获取买卖交易历史
限速:6次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/fiat/buy-sell/history
请求示例
GET /api/v5/fiat/buy-sell/history
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 否 | 订单ID | 
| clOrdId | String | 否 | 用户自定义的订单标识 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度要在1-32位之间 | 
| state | String | 否 | 交易状态 processing:处理中completed:已完成failed:失败 | 
| begin | String | 否 | 开始时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| end | String | 否 | 结束时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 返回的结果集数量,默认为100,最大为100 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ordId": "1234",
            "clOrdId": "",
            "quoteId": "quoterBTC-USD16461885104612381",
            "state":"completed",
            "side":"buy",
            "fromCcy": "USD",
            "toCcy": "BTC",
            "rfqAmt": "30",
            "rfqCcy": "USD",
            "fillPx": "2932.40104429",
            "fillQuoteCcy": "USD",
            "fillFromAmt": "30",
            "fillToAmt": "0.01",
            "cTime": "1646188510461",
            "uTime": "1646188510461"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| clOrdId | String | 用户自定义的订单标识 | 
| quoteId | String | 报价ID | 
| state | String | 交易状态 processing:处理中completed:已完成failed:失败 | 
| fromCcy | String | 卖出币种 | 
| toCcy | String | 买入币种 | 
| rfqAmt | String | 询价数量 | 
| rfqCcy | String | 询价币种 | 
| fillPx | String | 成交价格,单位为报价币种 | 
| fillQuoteCcy | String | 成交价格报价币种 如 USD | 
| fillFromAmt | String | 成交数量,单位为 fromCcy | 
| fillToAmt | String | 成交数量,单位为 toCcy | 
| cTime | String | 请求时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| uTime | String | 更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
WebSocket
充值信息频道
当发起充值或者充值状态发生变化时会触发消息推送。
支持母账户或者子账户的订阅  
- 如果是母账户订阅,可以同时接受母账户与子账户的充值信息的推送
- 如果是子账户订阅,则仅支持子账户充值信息的推送
服务地址
/ws/v5/business (需要登录)
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [
        {
            "channel": "deposit-info"
        }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
            "channel": "deposit-info"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 deposit-info | 
| > ccy | String | 否 | 币种名称,如 BTC | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "deposit-info"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"deposit-info\""}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 deposit-info | 
| > ccy | String | 否 | 币种名称,如 BTC | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "deposit-info",
        "uid": "289320****60975104"
    },
    "data": [{
        "actualDepBlkConfirm": "0",
        "amt": "1",
        "areaCodeFrom": "",
        "ccy": "USDT",
        "chain": "USDT-TRC20",
        "depId": "88165462",
        "from": "",
        "fromWdId": "",
        "pTime": "1674103661147",
        "state": "0",
        "subAcct": "test",
        "to": "TEhFAqpuHa3LY*****8ByNoGnrmexeGMw",
        "ts": "1674103661123",
        "txId": "bc5376817*****************dbb0d729f6b",
        "uid": "289320****60975104"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 deposit-info | 
| > uid | String | 用户标识 | 
| > ccy | String | 币种名称,如 BTC | 
| data | Array of objects | 订阅的数据 | 
| > uid | String | (产生数据者的)用户标识 | 
| > subAcct | String | 子账户名称 如果是母账户产生的数据,该字段返回"" | 
| > pTime | String | 推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > ccy | String | 币种名称,如 BTC | 
| > chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| > amt | String | 充值数量 | 
| > from | String | 充值账户,只显示内部账户转账地址,不显示区块链充值地址 | 
| > areaCodeFrom | String | 如果 from为手机号,该字段为该手机号的区号 | 
| > to | String | 到账地址 | 
| > txId | String | 区块转账哈希记录 | 
| > ts | String | 充值记录创建时间,Unix 时间戳的毫秒数格式,如 1655251200000 | 
| > state | String | 充值状态 0:等待确认1:确认到账2:充值成功8:因该币种暂停充值而未到账,恢复充值后自动到账11:命中地址黑名单12:账户或充值被冻结13:子账户充值拦截14:KYC限额 | 
| > depId | String | 充值记录 ID | 
| > fromWdId | String | 内部转账发起者提币申请 ID 如果该笔充值来自于内部转账,则该字段展示内部转账发起者的提币申请 ID,其他情况返回"" | 
| > actualDepBlkConfirm | String | 最新的充币网络确认数 | 
提币信息频道
当发起提币或者提币状态发生变化时会触发消息推送。
支持母账户或者子账户的订阅
- 如果是母账户订阅,可以同时接受母账户与子账户的提币信息的推送
- 如果是子账户订阅,则仅支持子账户提币信息的推送
服务地址
/ws/v5/business (需要登录)
请求示例
{
  "id": "1512",
    "op": "subscribe",
    "args": [
        {
            "channel": "withdrawal-info"
        }
    ]
}
import asyncio
from okx.websocket.WsPrivateAsync import WsPrivateAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPrivateAsync(
        apiKey = "YOUR_API_KEY",
        passphrase = "YOUR_PASSPHRASE",
        secretKey = "YOUR_SECRET_KEY",
        url = "wss://ws.okx.com:8443/ws/v5/business",
        useServerTime=False
    )
    await ws.start()
    args = [
        {
            "channel": "withdrawal-info"
        }
    ]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 withdrawal-info | 
| > ccy | String | 否 | 币种名称,如 BTC | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "withdrawal-info"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"withdrawal-info\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数名 | 类型 | 是否必填 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 操作 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 withdrawal-info | 
| > ccy | String | 否 | 币种名称,如 BTC | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "withdrawal-info",
        "uid": "289320*****0975104"
    },
    "data": [{
        "addrEx": null,
        "amt": "2",
        "areaCodeFrom": "",
        "areaCodeTo": "",
        "ccy": "USDT",
        "chain": "USDT-TRC20",
        "clientId": "",
        "fee": "0.8",
        "feeCcy": "USDT",
        "from": "",
        "memo": "",
        "nonTradableAsset": false,
        "note": "",
        "pTime": "1674103268578",
        "pmtId": "",
        "state": "0",
        "subAcct": "test",
        "tag": "",
        "to": "TN8CKTQMnpWfT******8KipbJ24ErguhF",
        "toAddrType": "1",
        "ts": "1674103268472",
        "txId": "",
        "uid": "289333*****1101696",
        "wdId": "63754560"
    }]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 | 
| > uid | String | 用户标识 | 
| > ccy | String | 币种名称,如 BTC | 
| data | Array of objects | 订阅的数据 | 
| > uid | String | (产生数据者的)用户标识 | 
| > subAcct | String | 子账户名称 如果是母账户产生的数据,该字段返回"" | 
| > pTime | String | 推送时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > ccy | String | 币种 | 
| > chain | String | 币种链信息 有的币种下有多个链,必须要做区分,如 USDT下有USDT-ERC20,USDT-TRC20多个链 | 
| > nonTradableAsset | String | 是否为不可交易资产 true:不可交易资产,false:可交易资产 | 
| > amt | String | 数量 | 
| > ts | String | 提币申请时间,Unix 时间戳的毫秒数格式,如 1655251200000 | 
| > from | String | 提币账户 可以是 邮箱/手机号/子账户名 | 
| > areaCodeFrom | String | 如果 from为手机号,该字段为该手机号的区号 | 
| > to | String | 收币地址 | 
| > areaCodeTo | String | 如果 to为手机号,该字段为该手机号的区号 | 
| > toAddrType | String | 地址类型 1: 钱包地址、邮箱、手机号、登录账户名2: UID | 
| > tag | String | 部分币种提币需要标签 | 
| > pmtId | String | 部分币种提币需要此字段(payment_id) | 
| > memo | String | 部分币种提币需要此字段 | 
| > addrEx | Object | 提币地址备注。如币种TONCOIN的提币地址备注标签名为comment,则该字段返回:{'comment':'123456'} | 
| > txId | String | 提币哈希记录 内部转账该字段返回"" | 
| > fee | String | 提币手续费数量 | 
| > feeCcy | String | 提币手续费币种,如 USDT | 
| > state | String | 提币状态 17:钱包地址正等待国际转账规则认证10:等待划转0:等待提币4/5/6/8/9/12:等待客服审核7:审核通过1:正在将您的交易广播到链上15:交易待确认16:根据当地法律法规,您的提币最多可能需要 24 小时才能到账-3:撤销中-2:已撤销-1:失败2:提币成功 | 
| > wdId | String | 提币申请ID | 
| > clientId | String | 客户自定义ID | 
| > note | String | 备注信息 | 
子账户
子账户功能模块下的API接口需要身份验证。
REST API
查看子账户列表
仅适用于母账户
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/users/subaccount/list
请求示例
GET /api/v5/users/subaccount/list
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看子账户列表
result = subAccountAPI.get_subaccount_list()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| enable | String | 否 | 子账户状态 true: 正常使用false: 冻结 | 
| subAcct | String | 否 | 子账户名称 | 
| after | String | 否 | 查询在此之前的内容,值为子账户创建时间戳,Unix时间戳为毫秒数格式 | 
| before | String | 否 | 查询在此之后的内容,值为子账户创建时间戳,Unix时间戳为毫秒数格式 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "canTransOut": false,
            "enable": true,
            "frozenFunc": [
            ],
            "gAuth": false,
            "label": "D456DDDLx",
            "mobile": "",
            "subAcct": "D456DDDL",
            "ts": "1659334756000",
            "type": "1",
            "uid": "3400***********7413",
            "subAcctLv": "1",
            "firstLvSubAcct": "D456DDDL",
            "ifDma": false
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 子账户类型 1:普通子账户2:资管子账户5:托管交易子账户 - Copper9:资管交易子账户 - Copper12:托管交易子账户 - Komainu | 
| enable | Boolean | 子账户状态 true:正常使用false:冻结(全局) | 
| subAcct | String | 子账户名称 | 
| uid | String | 子账户UID | 
| label | String | 子账户备注 | 
| mobile | String | 子账户绑定手机号 | 
| gAuth | Boolean | 子账户是否开启的登录时的谷歌验证 true:已开启false:未开启 | 
| frozenFunc | Array of strings | 被冻结的功能 trading:交易convert:闪兑transfer:母子账户间资金划转withdrawal:提币deposit:充值flexible_loan:活期借币 | 
| canTransOut | Boolean | 是否可以主动转出 true:可以转出false:不可转出 | 
| ts | String | 子账户创建时间,Unix时间戳的毫秒数格式 ,如 1597026383085 | 
| subAcctLv | String | 子账户层级 1: 一级子账号2: 二级子账户 | 
| firstLvSubAcct | String | 一级子账号 对于 subAcctLv: 1, firstLvSubAcct 与 subAcct 相等。 对于 subAcctLv: 2, subAcct 属于 firstLvSubAcct。 | 
| ifDma | Boolean | 是否为 DMA 经济商子账号。 true: DMA 经济商子账号。false: 非 DMA 经济商子账号。 | 
创建子账户
仅适用于母账户,且母账户APIKey必须绑定IP。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/users/subaccount/create-subaccount
请求示例
POST /api/v5/users/subaccount/create-subaccount
body
{
    "subAcct": "subAccount002",
    "type": "1",
    "label": "123456"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称,支持6-20位字母和数字组合(区分大小写,不支持空格符号) | 
| type | String | 是 | 子账户类型 1:普通子账户5:托管交易子账户 - Copper12:托管交易子账户 - Komainu | 
| label | String | 是 | API Key的备注,支持6-32位字母(区分大小写),数字,或者特殊字符如: * | 
| pwd | String | 可选 | 子账户登录密码,仅 KYB 账户必填 您的密码必须满足以下条件: 长度为 8 ~ 32 个字符。 1 个小写字母 (a-z) 1 个大写字母 (A-Z) 1 个数字 1 个符号,如:!@ # $ % | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "label": "123456",
            "subAcct": "subAccount002",
            "ts": "1744875304520",
            "uid": "698827017768230914"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
| label | String | 子账户的备注 | 
| uid | String | 子账户 ID | 
| ts | String | 创建时间 | 
创建子账户的API Key
仅适用于母账户,且母账户APIKey必须绑定IP。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/users/subaccount/apikey
请求示例
POST /api/v5/users/subaccount/apikey
body
{
    "subAcct":"panpanBroker2",
    "label":"broker3",
    "passphrase": "******",
    "perm":"trade"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称,支持6-20位字母和数字组合(区分大小写,不支持空格符号) | 
| label | String | 是 | API Key的备注 | 
| passphrase | String | 是 | API Key密码,8-32位字母数字组合,至少包含一个数字、一个大写字母、一个小写字母、一个特殊字符 | 
| perm | String | 否 | API Key权限 read_only:读取trade:交易 | 
| ip | String | 否 | 绑定ip地址,多个ip用半角逗号隔开,最多支持20个ip 安全性考虑,推荐绑定IP 未绑定IP且拥有交易或提币权限的API key,将在闲置14天之后自动删除。(模拟盘的API key不会被删除) | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "subAcct": "test-1",
        "label": "v5",
        "apiKey": "******",
        "secretKey": "******",
        "passphrase": "******",
        "perm": "read_only,trade",
        "ip": "1.1.1.1,2.2.2.2",
        "ts": "1597026383085"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
| label | String | APIKey的备注 | 
| apiKey | String | API公钥 | 
| secretKey | String | API的私钥 | 
| passphrase | String | APIKey的密码 | 
| perm | String | APIKey权限 | 
| ip | String | APIKey绑定的ip地址 | 
| ts | String | 创建时间 | 
查询子账户的API Key
仅适用于母账户
限速:20次/2秒
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/users/subaccount/apikey
请求示例
GET /api/v5/users/subaccount/apikey?subAcct=panpanBroker2
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
| apiKey | String | 否 | API的公钥 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "label":"v5",
            "apiKey":"arg13sdfgs",
            "perm":"read_only,trade",
            "ip":"1.1.1.1,2.2.2.2",
            "ts":"1597026383085"
        },
        {
            "label":"v5.1",
            "apiKey":"arg13sdfgs",
            "perm":"read_only",
            "ip":"1.1.1.1,2.2.2.2",
            "ts":"1597026383085"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| label | String | API Key的备注 | 
| apiKey | String | API Key公钥 | 
| perm | String | API Key权限 read_only:读取 trade :交易 | 
| ip | String | API Key绑定的ip地址 | 
| ts | String | 创建时间 | 
重置子账户的APIKey
仅适用于母账户,且母账户APIKey必须绑定IP。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/users/subaccount/modify-apikey
请求示例
POST /api/v5/users/subaccount/modify-apikey
body
{
    "subAcct":"yongxu",
    "apiKey":"******"
    "ip":"1.1.1.1"
}
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 重置子账户的APIKey
result = subAccountAPI.reset_subaccount_apikey(
    subAcct="hahawang1",
    apiKey="",
    ip=""
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
| apiKey | String | 是 | 子账户API的公钥 | 
| label | String | 否 | 子账户APIKey的备注,如果填写该字段,则该字段会被重置 | 
| perm | String | 否 | 子账户APIKey权限 read_only:读取trade:交易多个权限用半角逗号隔开。 如果填写该字段,则该字段会被重置。 | 
| ip | String | 否 | 子账户APIKey绑定ip地址,多个ip用半角逗号隔开,最多支持20个ip。 如果填写该字段,那该字段会被重置。 如果ip传"",则表示解除IP绑定。 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "subAcct": "yongxu",
        "label": "v5",
        "apiKey": "******",
        "perm": "read,trade",
        "ip": "1.1.1.1",
        "ts": "1597026383085"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
| label | String | APIKey的备注 | 
| apiKey | String | API公钥 | 
| perm | String | APIKey权限 | 
| ip | String | APIKey绑定的ip地址 | 
| ts | String | 创建时间 | 
删除子账户的API Key
仅适用于母账户,且母账户APIKey必须绑定IP。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/users/subaccount/delete-apikey
请求示例
POST /api/v5/users/subaccount/delete-apikey
body
{
    "subAcct":"test00001",
    "apiKey":"******"
}
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
| apiKey | String | 是 | API的公钥 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "subAcct": "test00001"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
获取子账户交易账户余额
获取子账户交易账户余额(适用于母账户)
限速:6次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/subaccount/balances
请求示例
GET /api/v5/account/subaccount/balances?subAcct=test1
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取子账户交易账户余额
result = subAccountAPI.get_account_balance(
    subAcct="hahawang1"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "adjEq": "101.46752000000001",
            "availEq": "",
            "borrowFroz": "0",
            "details": [
                {
                    "autoLendStatus": "off",
                    "autoLendMtAmt": "0",
                    "accAvgPx": "",
                    "availBal": "101.5",
                    "availEq": "101.5",
                    "borrowFroz": "0",
                    "cashBal": "101.5",
                    "ccy": "USDT",
                    "clSpotInUseAmt": "",
                    "crossLiab": "0",
                    "colRes": "0",
                    "collateralEnabled": false,
                    "collateralRestrict": false,
                    "colBorrAutoConversion": "0",
                    "disEq": "101.46752000000001",
                    "eq": "101.5",
                    "eqUsd": "101.46752000000001",
                    "fixedBal": "0",
                    "frozenBal": "0",
                    "frpType": "0",
                    "imr": "",
                    "interest": "0",
                    "isoEq": "0",
                    "isoLiab": "0",
                    "isoUpl": "0",
                    "liab": "0",
                    "maxLoan": "1015.0000000000001",
                    "maxSpotInUse": "",
                    "mgnRatio": "",
                    "mmr": "",
                    "notionalLever": "",
                    "openAvgPx": "",
                    "ordFrozen": "0",
                    "rewardBal": "",
                    "smtSyncEq": "0",
                    "spotBal": "",
                    "spotCopyTradingEq": "0",
                    "spotInUseAmt": "",
                    "spotIsoBal": "0",
                    "spotUpl": "",
                    "spotUplRatio": "",
                    "stgyEq": "0",
                    "totalPnl": "",
                    "totalPnlRatio": "",
                    "twap": "0",
                    "uTime": "1663854334734",
                    "upl": "0",
                    "uplLiab": "0"
                }
            ],
            "imr": "0",
            "isoEq": "0",
            "mgnRatio": "",
            "mmr": "0",
            "notionalUsd": "0",
            "notionalUsdForBorrow": "0",
            "notionalUsdForFutures": "0",
            "notionalUsdForOption": "0",
            "notionalUsdForSwap": "0",
            "ordFroz": "0",
            "totalEq": "101.46752000000001",
            "uTime": "1739332269934",
            "upl": "0"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| uTime | String | 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| totalEq | String | 美金层面权益 | 
| isoEq | String | 美金层面逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| adjEq | String | 美金层面有效保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| availEq | String | 账户美金层面可用保证金,排除因总质押借币上限而被限制的币种 适用于 跨币种保证金模式/组合保证金模式 | 
| ordFroz | String | 美金层面全仓挂单占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| imr | String | 美金层面占用保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| mmr | String | 美金层面维持保证金 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| borrowFroz | String | 账户美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| mgnRatio | String | 美金层面维持保证金率 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsd | String | 以美金价值为单位的持仓数量,即仓位美金价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsdForBorrow | String | 借币金额(美元价值) 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| notionalUsdForSwap | String | 永续合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| notionalUsdForFutures | String | 交割合约持仓美元价值 适用于 跨币种保证金模式/组合保证金模式 | 
| notionalUsdForOption | String | 期权持仓美元价值 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| upl | String | 账户层面全仓未实现盈亏(美元单位) 适用于 跨币种保证金模式/组合保证金模式 | 
| details | Array of objects | 各币种资产详细信息 | 
| > ccy | String | 币种 | 
| > eq | String | 币种总权益 | 
| > cashBal | String | 币种余额 | 
| > uTime | String | 币种余额信息的更新时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > isoEq | String | 币种逐仓仓位权益 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > availEq | String | 可用保证金 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > disEq | String | 美金层面币种折算权益 | 
| > fixedBal | String | 抄底宝、逃顶宝功能的币种冻结金额 | 
| > availBal | String | 可用余额 | 
| > frozenBal | String | 币种占用金额 | 
| > ordFrozen | String | 挂单冻结数量 适用于 现货模式/合约模式/跨币种保证金模式 | 
| > liab | String | 币种负债额 值为正数,如 "21625.64" 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > upl | String | 未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > uplLiab | String | 由于仓位未实现亏损导致的负债 适用于 跨币种保证金模式/组合保证金模式 | 
| > crossLiab | String | 币种全仓负债额 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > isoLiab | String | 币种逐仓负债额 适用于 跨币种保证金模式/组合保证金模式 | 
| > rewardBal | String | 体验金余额 | 
| > mgnRatio | String | 币种全仓维持保证金率,衡量账户内某项资产风险的指标 适用于 合约模式且有全仓仓位时 | 
| > imr | String | 币种维度全仓占用保证金 适用于 合约模式且有全仓仓位时 | 
| > mmr | String | 币种维度全仓维持保证金 适用于 合约模式且有全仓仓位时 | 
| > interest | String | 计息,应扣未扣利息 值为正数,如 9.01适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > twap | String | 当前负债币种触发自动换币的风险 0、1、2、3、4、5其中之一,数字越大代表您的负债币种触发自动换币概率越高 适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > frpType | String | 自动换币类型 0:未发生自动换币1:基于用户的自动换币2:基于平台借币限额的自动换币当twap>=1时返回1或2代表自动换币风险类型,适用于 现货模式/跨币种保证金模式/组合保证金模式 | 
| > maxLoan | String | 币种最大可借 适用于 现货模式/跨币种保证金模式/组合保证金模式的全仓 | 
| > eqUsd | String | 币种权益美金价值 | 
| > borrowFroz | String | 币种美金层面潜在借币占用保证金 仅适用于 现货模式/跨币种保证金模式/组合保证金模式。在其他账户模式下为""。 | 
| > notionalLever | String | 币种杠杆倍数 适用于 合约模式 | 
| > stgyEq | String | 策略权益 | 
| > isoUpl | String | 逐仓未实现盈亏 适用于 合约模式/跨币种保证金模式/组合保证金模式 | 
| > spotInUseAmt | String | 现货对冲占用数量 适用于 组合保证金模式 | 
| > clSpotInUseAmt | String | 用户自定义现货占用数量 适用于 组合保证金模式 | 
| > maxSpotInUse | String | 系统计算得到的最大可能现货占用数量 适用于 组合保证金模式 | 
| > spotIsoBal | String | 现货逐仓余额 仅适用于现货带单/跟单 适用于 现货模式/合约模式 | 
| > smtSyncEq | String | 合约智能跟单权益 默认为0,仅适用于跟单人。 | 
| > spotCopyTradingEq | String | 现货智能跟单权益 默认为0,仅适用于跟单人。 | 
| > spotBal | String | 现货余额 ,单位为 币种,比如 BTC。详情 | 
| > openAvgPx | String | 现货开仓成本价 单位 USD。 详情 | 
| > accAvgPx | String | 现货累计成本价 单位 USD。 详情 | 
| > spotUpl | String | 现货未实现收益,单位 USD。 详情 | 
| > spotUplRatio | String | 现货未实现收益率。详情 | 
| > totalPnl | String | 现货累计收益,单位 USD。 详情 | 
| > totalPnlRatio | String | 现货累计收益率。详情 | 
| > colRes | String | 平台维度质押限制状态 0:限制未触发1:限制未触发,但该币种接近平台质押上限2:限制已触发。该币种不可用作新订单的保证金,这可能会导致下单失败。但它仍会被计入账户有效保证金,保证金率不会收到影响。更多详情,请参阅平台总质押借币上限说明。 | 
| > colBorrAutoConversion | String | 基于平台质押借币限额的自动换币风险指标。分为1-5多个等级,数字越大,触发自动换币的可能性越大。默认值为0,表示当前无风险。5表示该用户正在进行自动换币,4代表该用户即将被进行自动换币,1/2/3表示存在自动换币风险。 适用于 现货模式/合约模式/跨币种保证金模式/组合保证金模式当某币种的全平台质押借币量超出平台总上限一定比例时,对于质押该币种且借币量较大的用户,平台将通过自动换币降低质押借币风险。请减少该币种的质押数量或偿还负债,以降低风险。 更多详情,请参阅平台总质押借币上限说明。 | 
| > collateralRestrict | Boolean | truefalse | 
| > collateralEnabled | Boolean | true:质押币false:非质押币适用于`跨币种保证金模式 | 
| > colBorrAutoConversion | String | 表示当某个币种的抵押借贷达到平台限制且用户交易账户持有该币种时,强制还款的指标 分为5档,从1到5,数字越小代表强制还款强度越弱。默认为0,表示当前无强制还款风险;5代表用户当前正经历强制还款。 适用于 现货模式/合约模式/跨币种保证金模式/组合保证金模式 | 
| > autoLendStatus | String | 自动借出状态 unsupported:该币种不支持自动借出off:自动借出功能关闭pending:自动借出功能开启但未匹配active:自动借出功能开启且已匹配 | 
| > autoLendMtAmt | String | 自动借出已匹配量 当 autoLendStatus 为 unsupported/off/pending时返回 0当 autoLendStatus 为 active时返回已匹配量 | 
获取子账户资金账户余额
获取子账户资金账户余额(适用于母账户)
限速:6次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/subaccount/balances
请求示例
GET /api/v5/asset/subaccount/balances?subAcct=test1
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 获取子账户资金账户余额
result = subAccountAPI.get_funding_balance(
    subAcct="hahawang1"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
            "availBal": "37.11827078",
            "bal": "37.11827078",
            "ccy": "ETH",
            "frozenBal": "0"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| bal | String | 余额 | 
| frozenBal | String | 冻结余额(不可用) | 
| availBal | String | 可用余额 | 
获取子账户最大可转余额
获取子账户最大可转余额(适用于母账户)。不指定币种会返回所有拥有的币种资产可划转数量。
限速:20次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/account/subaccount/max-withdrawal
请求示例
GET /api/v5/account/subaccount/max-withdrawal?subAcct=test1
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称 | 
| ccy | String | 否 | 币种,如 BTC支持多币种查询(不超过20个),币种之间半角逗号分隔 | 
返回结果
{
   "code":"0",
   "data":[
      {
         "ccy":"BTC",
         "maxWd":"3",
         "maxWdEx":"",
         "spotOffsetMaxWd":"3",
         "spotOffsetMaxWdEx":""
      },
      {
         "ccy":"ETH",
         "maxWd":"15",
         "maxWdEx":"",
         "spotOffsetMaxWd":"15",
         "spotOffsetMaxWdEx":""
      },
      {
         "ccy":"USDT",
         "maxWd":"10600",
         "maxWdEx":"",
         "spotOffsetMaxWd":"10600",
         "spotOffsetMaxWdEx":""
      }
   ],
   "msg":""
}
Response Parameters
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种 | 
| maxWd | String | 最大可划转数量(不包含 跨币种保证金模式借币金额) | 
| maxWdEx | String | 最大可划转数量(包含 跨币种保证金模式借币金额) | 
| spotOffsetMaxWd | String | 现货对冲不支持借币最大可转数量 仅适用于 组合保证金模式 | 
| spotOffsetMaxWdEx | String | 现货对冲支持借币的最大可转数量 仅适用于 组合保证金模式 | 
查询子账户转账记录
仅适用于母账户。转账记录可追溯至2022年9月28日。
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/subaccount/bills
请求示例
GET /api/v5/asset/subaccount/bills
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 查询子账户转账记录
result = subAccountAPI.bills()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
| type | String | 否 | 划转类型 0:母账户转子账户1:子账户转母账户 | 
| subAcct | String | 否 | 子账户名称 | 
| after | String | 否 | 查询在billId创建时间之前(不包含)的内容,值为时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在billId创建时间之后(不包含)的内容,值为时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
      {
        "amt": "1.1",
        "billId": "89887685",
        "ccy": "USDT",
        "subAcct": "hahatest1",
        "ts": "1712560959000",
        "type": "0"
      }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| billId | String | 账单ID | 
| ccy | String | 划转币种 | 
| amt | String | 划转金额 | 
| type | String | 账单类型 | 
| subAcct | String | 子账户名称 | 
| ts | String | 账单ID创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
查询托管子账户转账记录
仅适用于交易团队母账户查看托管给自己的托管子账户转账记录
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/asset/subaccount/managed-subaccount-bills
请求示例
GET /api/v5/asset/subaccount/managed-subaccount-bills
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
| type | String | 否 | 划转类型 0:母账户转子账户1:子账户转母账户 | 
| subAcct | String | 否 | 子账户名称 | 
| subUid | String | 否 | 子账户UID | 
| after | String | 否 | 查询在billId创建时间之前(不包含)的内容,值为时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在billId创建时间之后(不包含)的内容,值为时间戳,Unix时间戳的毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,默认返回100条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "billId": "12344",
        "type": "1",
        "ccy": "BTC",
        "amt": "2",
        "subAcct": "test-1",
        "subUid": "xxxxxx",
        "ts": "1597026383085"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| billId | String | 账单ID | 
| ccy | String | 划转币种 | 
| amt | String | 划转金额 | 
| type | String | 账单类型 | 
| subAcct | String | 子账户名称 | 
| subUid | String | 子账户UID | 
| ts | String | 账单ID创建时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
子账户间资金划转
母账户控制子账户与子账户之间划转(仅适用于母账户)
调用时,APIKey 需要有交易权限
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/asset/subaccount/transfer
请求示例
POST /api/v5/asset/subaccount/transfer
body
{
    "ccy":"USDT",
    "amt":"1.5",
    "from":"6",
    "to":"6",
    "fromSubAccount":"test-1",
    "toSubAccount":"test-2"
}
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 子账户间资金划转
result = subAccountAPI.subAccount_transfer(
    ccy="USDT",
    amt="10",
    froms="6",
    to="6",
    fromSubAccount="test-1",
    toSubAccount="test-2"
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种 | 
| amt | String | 是 | 划转数量 | 
| from | String | 是 | 转出子账户类型 6:资金账户18:交易账户 | 
| to | String | 是 | 转入子账户类型 6:资金账户18:交易账户 | 
| fromSubAccount | String | 是 | 转出子账户的子账户名称 | 
| toSubAccount | String | 是 | 转入子账户的子账户名称 | 
| loanTrans | Boolean | 否 | 是否支持 跨币种保证金模式或组合保证金模式下的借币转入/转出默认 false | 
| omitPosRisk | String | 否 | 是否忽略仓位风险 默认为 false仅适用于 组合保证金模式 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "transId":"12345",
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| transId | String | 划转ID | 
设置子账户主动转出权限
设置子账户转出权限(仅适用于母账户),默认可转出至母账户。
限速:1次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/users/subaccount/set-transfer-out
请求示例
POST /api/v5/users/subaccount/set-transfer-out
body
{
    "subAcct": "Test001,Test002",
    "canTransOut": true
}
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 设置子账户主动转出权限
result = subAccountAPI.set_permission_transfer_out(
    subAcct="hahawang1",
    canTransOut=False
)
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 是 | 子账户名称,支持设置多个(不超过20个),子账户名称之间半角逗号分隔 | 
| canTransOut | Boolean | 否 | 是否可以主动转出,默认为 truefalse:不可转出true:可以转出 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
        {
            "subAcct": "Test001",
            "canTransOut": true
        },
        {
            "subAcct": "Test002",
            "canTransOut": true
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
| canTransOut | Boolean | 是否可以主动转出 false:不可转出true:可以转出 | 
查看被托管的子账户列表
交易团队使用该接口查看当前托管中的子账户列表
限速:1次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/users/entrust-subaccount-list
请求示例
GET /api/v5/users/entrust-subaccount-list
import okx.SubAccount as SubAccount
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "1"  # 实盘:0 , 模拟盘:1
subAccountAPI = SubAccount.SubAccountAPI(apikey, secretkey, passphrase, False, flag)
# 查看被托管的子账户列表
result = subAccountAPI.get_entrust_subaccount_list()
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| subAcct | String | 否 | 子账户名称 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
       {
          "subAcct":"test-1"
       },
       {
          "subAcct":"test-2"
       }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| subAcct | String | 子账户名称 | 
金融产品
链上赚币
仅资金账户中的资产支持申购。了解更多
GET / 查看项目
限速:3次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/offers
请求示例
GET /api/v5/finance/staking-defi/offers
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘:0 , 模拟盘:1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.get_offers(ccy="USDT")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| productId | String | 否 | 项目ID | 
| protocolType | String | 否 | 项目类型 defi:链上赚币 | 
| ccy | String | 否 | 投资币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "DOT",
            "productId": "101",
            "protocol": "Polkadot",
            "protocolType": "defi",
            "term": "0",
            "apy": "0.1767",
            "earlyRedeem": false,
            "state": "purchasable",
            "investData": [
                {
                    "bal": "0",
                    "ccy": "DOT",
                    "maxAmt": "0",
                    "minAmt": "2"
                }
            ],
            "earningData": [
                {
                    "ccy": "DOT",
                    "earningType": "0"
                }
            ],
            "fastRedemptionDailyLimit": "",
            "redeemPeriod": [
                "28D",
                "28D"
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| productId | String | 项目ID | 
| protocol | String | 项目名称 | 
| protocolType | String | 项目类型 defi:链上赚币 | 
| term | String | 项目期限 活期为0,其他则显示定期天数 | 
| apy | String | 预估年化 如果年化为 7%,则该字段为0.07 | 
| earlyRedeem | Boolean | 项目是否支持提前赎回 | 
| investData | Array of objects | 目前用户可用来投资的目标币种信息 | 
| > ccy | String | 投资币种,如 BTC | 
| > bal | String | 可投数量 | 
| > minAmt | String | 最小申购量 | 
| > maxAmt | String | 最大可申购量 | 
| earningData | Array of objects | 收益信息 | 
| > ccy | String | 收益币种,如 BTC | 
| > earningType | String | 收益类型 0:预估收益1:累计发放收益 | 
| state | String | 项目状态 purchasable:可申购sold_out:售罄stop:暂停申购 | 
| redeemPeriod | Array of strings | 赎回期,形式为 [最小赎回时间,最大赎回时间] H:小时,D:天例 ["1H","24H"] 表示赎回期时1小时到24小时。 ["14D","14D"] 表示赎回期为14天。 | 
| fastRedemptionDailyLimit | String | 快速赎回每日最高限额 如果不支持快速赎回,则返回"" | 
POST / 申购项目
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/purchase
请求示例
# 投资100ZIL30天的锁仓挖矿项目
POST /api/v5/finance/staking-defi/purchase
body 
{
    "productId":"1234",
    "investData":[
      {
        "ccy":"ZIL",
        "amt":"100"
      }
    ],
    "term":"30"
}
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0" # 实盘:0 , 模拟盘:1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.purchase(
            productId = "4005", 
            investData = [{
                "ccy":"USDT",
                "amt":"100"
            }]
        )
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| productId | String | 是 | 项目ID | 
| investData | Array of objects | 是 | 投资信息 | 
| > ccy | String | 是 | 投资币种,如 BTC | 
| > amt | String | 是 | 投资数量 | 
| term | String | 可选 | 投资期限 定期项目必须指定投资期限 | 
| tag | String | 否 | 订单标签 字母(区分大小写)与数字的组合,可以是纯字母、纯数字,且长度在1-16位之间 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "ordId": "754147",
      "tag": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| tag | String | 订单标签 | 
POST / 赎回项目
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/redeem
请求示例
# 提前赎回项目投资
POST /api/v5/finance/staking-defi/redeem
body 
{
    "ordId":"754147",
    "protocolType":"defi",
    "allowEarlyRedeem":true
}
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.redeem(
           ordId = "1234",
           protocolType = "defi"
        )
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 是 | 订单ID | 
| protocolType | String | 是 | 项目类型 defi:链上赚币 | 
| allowEarlyRedeem | Boolean | 否 | 是否提前赎回 默认为 false | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "ordId": "754147",
      "tag": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| tag | String | 订单标签 | 
POST / 撤销项目申购/赎回
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/cancel
请求示例
POST /api/v5/finance/staking-defi/cancel
body 
{
    "ordId":"754147",
    "protocolType":"defi"
}
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘:0 , 模拟盘:1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.cancel(
           ordId = "1234",
           protocolType = "defi"
        )
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ordId | String | 是 | 订单ID | 
| protocolType | String | 是 | 项目类型 defi:链上赚币 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
    {
      "ordId": "754147",
      "tag": ""
    }
  ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ordId | String | 订单ID | 
| tag | String | 订单标签 | 
GET / 查看活跃订单
限速:3次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/orders-active
请求示例
GET /api/v5/finance/staking-defi/orders-active
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.get_activity_orders()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| productId | String | 否 | 项目ID | 
| protocolType | String | 否 | 项目类型 defi:链上赚币 | 
| ccy | String | 否 | 投资币种,如 BTC | 
| state | String | 否 | 订单状态 8: 待上车(预约中)13: 订单取消中9: 上链中1: 收益中2: 赎回中 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ordId": "2413499",
            "ccy": "DOT",
            "productId": "101",
            "state": "1",
            "protocol": "Polkadot",
            "protocolType": "defi",
            "term": "0",
            "apy": "0.1014",
            "investData": [
                {
                    "ccy": "DOT",
                    "amt": "2"
                }
            ],
            "earningData": [
                {
                    "ccy": "DOT",
                    "earningType": "0",
                    "earnings": "0.10615025"
                }
            ],
            "purchasedTime": "1729839328000",
            "tag": "",
            "estSettlementTime": "",
            "cancelRedemptionDeadline": "",
            "fastRedemptionData": []
        },
        {
            "ordId": "2213257",
            "ccy": "USDT",
            "productId": "4005",
            "state": "1",
            "protocol": "On-Chain Defi",
            "protocolType": "defi",
            "term": "0",
            "apy": "0.0323",
            "investData": [
                {
                    "ccy": "USDT",
                    "amt": "1"
                }
            ],
            "earningData": [
                {
                    "ccy": "USDT",
                    "earningType": "0",
                    "earnings": "0.02886582"
                },
                {
                    "ccy": "COMP",
                    "earningType": "1",
                    "earnings": "0.0000627"
                }
            ],
            "purchasedTime": "1725345790000",
            "tag": "",
            "estSettlementTime": "",
            "cancelRedemptionDeadline": "",
            "fastRedemptionData": []
        },
        {
            "ordId": "2210943",
            "ccy": "USDT",
            "productId": "4005",
            "state": "1",
            "protocol": "On-Chain Defi",
            "protocolType": "defi",
            "term": "0",
            "apy": "0.0323",
            "investData": [
                {
                    "ccy": "USDT",
                    "amt": "1"
                }
            ],
            "earningData": [
                {
                    "ccy": "USDT",
                    "earningType": "0",
                    "earnings": "0.02891823"
                },
                {
                    "ccy": "COMP",
                    "earningType": "1",
                    "earnings": "0.0000632"
                }
            ],
            "purchasedTime": "1725280801000",
            "tag": "",
            "estSettlementTime": "",
            "cancelRedemptionDeadline": "",
            "fastRedemptionData": []
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| ordId | String | 订单ID | 
| productId | String | 项目ID | 
| state | String | 订单状态 8:待上车(预约中)13:订单取消中9:上链中1:收益中2:赎回中 | 
| protocol | String | 项目名称 | 
| protocolType | String | 项目类型 defi:链上赚币 | 
| term | String | 项目期限 活期为0,其他则显示定期天数 | 
| apy | String | 预估年化 如果年化为7% ,则该字段为0.07 保留到小数点后4位(截位) | 
| investData | Array of objects | 用户投资信息 | 
| > ccy | String | 投资币种,如 BTC | 
| > amt | String | 已投资数量 | 
| earningData | Array of objects | 收益信息 | 
| > ccy | String | 收益币种,如 BTC | 
| > earningType | String | 收益类型 0:预估收益1:实际到账收益 | 
| > earnings | String | 收益数量 | 
| fastRedemptionData | Array of objects | 快速赎回信息 | 
| > ccy | String | 快速赎回币种,如 BTC | 
| > redeemingAmt | String | 赎回中的数量 | 
| purchasedTime | String | 用户订单创建时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| estSettlementTime | String | 预估赎回到账时间 | 
| cancelRedemptionDeadline | String | 撤销赎回申请截止时间 | 
| tag | String | 订单标签 | 
GET / 查看历史订单
限速:3次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/orders-history
请求示例
GET /api/v5/finance/staking-defi/orders-history
import okx.Finance.StakingDefi as StakingDefi
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StakingAPI = StakingDefi.StakingDefiAPI(apikey, secretkey, passphrase, False, flag)
result = StakingAPI.get_orders_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| productId | String | 否 | 项目ID | 
| protocolType | String | 否 | 项目类型 defi:链上赚币 | 
| ccy | String | 否 | 投资币种,如 BTC | 
| after | String | 否 | 请求此ID之前(更旧的数据)的分页内容,传的值为对应接口的 ordId | 
| before | String | 否 | 请求此ID之后(更新的数据)的分页内容,传的值为对应接口的 ordId | 
| limit | String | 否 | 返回结果的数量,默认100条,最大值为100条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [
       {
            "ordId": "1579252",
            "ccy": "DOT",
            "productId": "101",
            "state": "3",
            "protocol": "Polkadot",
            "protocolType": "defi",
            "term": "0",
            "apy": "0.1704",
            "investData": [
                {
                    "ccy": "DOT",
                    "amt": "2"
                }
            ],
            "earningData": [
                {
                    "ccy": "DOT",
                    "earningType": "0",
                    "realizedEarnings": "0"
                }
            ],
            "purchasedTime": "1712908001000",
            "redeemedTime": "1712914294000",
            "tag": ""
       }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| ordId | String | 订单ID | 
| productId | String | 项目ID | 
| state | String | 订单状态 3: 订单已完成(包含撤销和已赎回两种状态) | 
| protocol | String | 项目名称 | 
| protocolType | String | 项目类型 defi:链上赚币 | 
| term | String | 项目期限 活期为0,其他则显示定期天数 | 
| apy | String | 预估年化 如果年化为7% ,则该字段为0.07 保留到小数点后4位(截位) | 
| investData | Array of objects | 用户投资信息 | 
| > ccy | String | 投资币种,如 BTC | 
| > amt | String | 已投资数量 | 
| earningData | Array of objects | 收益信息 | 
| > ccy | String | 收益币种,如 BTC | 
| > earningType | String | 收益类型 0:预估收益1:实际到账收益 | 
| > realizedEarnings | String | 已赎回订单累计收益 该字段仅在订单处于赎回状态时有效 | 
| purchasedTime | String | 用户订单创建时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| redeemedTime | String | 用户订单赎回时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| tag | String | 订单标签 | 
ETH质押
ETH 质押,也称为以太坊质押,是参与以太坊区块链权益证明 (Proof of Stake, PoS) 共识机制的过程。
质押 ETH 即获 1:1 BETH 并赚取每日奖励,享受更高流动性
了解更多
GET / 获取产品信息
限速:3 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/eth/product-info
请求示例
GET /api/v5/finance/staking-defi/eth/product-info
import okx.Finance.EthStaking as EthStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.eth_product_info()
print(result)
返回结果
{
    "code": "0",
    "data": [
      {
        "fastRedemptionDailyLimit": "100"
      }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fastRedemptionDailyLimit | String | 快速赎回每日最高份额 母账户和子账户共享同一个限额 | 
POST / 申购
质押ETH获取BETH
仅资金账户中的资产支持ETH质押。
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/eth/purchase
请求示例
POST /api/v5/finance/staking-defi/eth/purchase
body 
{
    "amt":"100"
}
import okx.Finance.EthStaking as EthStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.eth_purchase(amt="1")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| amt | String | 是 | 投资数量 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
  ]
}
返回参数
code = 0代表请求已被成功处理
POST / 赎回
只能赎回资金账户中的 BETH 资产,交易账户中的 BETH 资产需要您先做资金划转到资金账户后赎回。
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/eth/redeem
请求示例
POST /api/v5/finance/staking-defi/eth/redeem
body 
{
    "amt":"10"
}
import okx.Finance.EthStaking as EthStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.eth_redeem(amt="1")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| amt | String | 是 | 赎回数量 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
  ]
}
返回参数
code = 0代表请求已被成功处理
GET / 获取余额
该余额是一个汇总账户BETH资产(含赎回中)的快照数据。
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/eth/balance
请求示例
GET /api/v5/finance/staking-defi/eth/balance
import okx.Finance.EthStaking as EthStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.eth_balance()
print(result)
请求参数
None
返回结果
{
    "code": "0",
    "data": [
      {
        "amt": "0.63926191",
        "ccy": "BETH",
        "latestInterestAccrual": "0.00006549",
        "totalInterestAccrual": "0.01490596",
        "ts": "1699257600000"
      }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BETH | 
| amt | String | 币种数量 | 
| latestInterestAccrual | String | 最近收益 | 
| totalInterestAccrual | String | 历史总收益 | 
| ts | String | 快照时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取申购赎回记录
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/eth/purchase-redeem-history
请求示例
GET /api/v5/finance/staking-defi/eth/purchase-redeem-history
import okx.Finance.EthStaking as EthStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.eth_purchase_redeem_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 类型 purchase:申购redeem:赎回 | 
| status | String | 否 | 状态 pending:处理中success:成功处理failed:处理失败 | 
| after | String | 否 | 请求此 requestTime之前(更旧的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| before | String | 否 | 请求此 requestTime之后(更新的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回结果的数量,默认100条,最大值为100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "0.62666630",
            "completedTime": "1683413171000",
            "estCompletedTime": "",
            "redeemingAmt": "",
            "requestTime": "1683413171000",
            "status": "success",
            "type": "purchase"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 类型 purchase:申购redeem:赎回 | 
| amt | String | 申购/赎回 的数量 | 
| redeemingAmt | String | 赎回中的数量 | 
| status | String | 状态 pending:处理中success:成功处理failed:处理失败 | 
| requestTime | String | 发起 申购/赎回 请求的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| completedTime | String | 赎回请求处理完成的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| estCompletedTime | String | 预估完成赎回的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取历史收益率(公共)
公共接口无须鉴权
限速:6次/s
限速规则:IP
HTTP 请求
GET /api/v5/finance/staking-defi/eth/apy-history
请求示例
GET /api/v5/finance/staking-defi/eth/apy-history?days=2
import okx.Finance.EthStaking as EthStaking
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = EthStaking.EthStakingAPI(flag=flag)
result = StackingAPI.eth_apy_history(days="7")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| days | String | 是 | 查询最近多少天内的数据,不超过365天 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "rate": "0.02690000",
            "ts": "1734195600000"
        },
        {
            "rate": "0.02840000",
            "ts": "1734109200000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| rate | String | 年化收益率,如 0.01代表1% | 
| ts | String | 时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
SOL质押
通过质押 SOL 代币并将其委托给 Solana 网络上的验证者,您可以收到等值的 OKSOL 并获得每日 OKSOL 奖励。
在 Solana 上质押 SOL,即获 1:1 OKSOL,享受更高流动性
了解更多
GET / 获取产品信息
限速:3 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/sol/product-info
请求示例
GET /api/v5/finance/staking-defi/sol/product-info
返回结果
{
    "code": "0",
    "data": {
        "fastRedemptionAvail": "240",
        "fastRedemptionDailyLimit": "240"
    },
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| fastRedemptionDailyLimit | String | 快速赎回每日最高份额 母账户和子账户共享同一个限额 | 
| fastRedemptionAvail | String | 当前剩余最大可赎回数量 | 
POST / 申购
质押 SOL 获取 OKSOL
仅资金账户中的资产支持 SOL 质押。
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/sol/purchase
请求示例
POST /api/v5/finance/staking-defi/sol/purchase
body 
{
    "amt":"100"
}
import okx.Finance.SolStaking as SolStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = SolStaking.SolStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.sol_purchase(amt="1")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| amt | String | 是 | 投资数量 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
  ]
}
返回参数
code = 0代表请求已被成功处理
POST / 赎回
只能赎回资金账户中的 OKSOL 资产,交易账户中的 OKSOL 资产需要您先做资金划转到资金账户后赎回。
限速:2次/s
限速规则:User ID
权限:交易
HTTP 请求
POST /api/v5/finance/staking-defi/sol/redeem
请求示例
POST /api/v5/finance/staking-defi/sol/redeem
body 
{
    "amt":"10"
}
import okx.Finance.SolStaking as SolStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = SolStaking.SolStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.sol_redeem(amt="1")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| amt | String | 是 | 赎回数量 | 
返回结果
{
  "code": "0",
  "msg": "",
  "data": [
  ]
}
返回参数
code = 0代表请求已被成功处理
GET / 获取余额
该余额是一个汇总账户OKSOL资产(含赎回中)的实时数据。
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/sol/balance
请求示例
GET /api/v5/finance/staking-defi/sol/balance
import okx.Finance.SolStaking as SolStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = SolStaking.SolStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.sol_balance()
print(result)
请求参数
None
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "0.01100012",
            "ccy": "OKSOL",
            "latestInterestAccrual": "0.00000012",
            "totalInterestAccrual": "0.00000012"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 OKSOL | 
| amt | String | 币种数量 | 
| latestInterestAccrual | String | 最近收益 | 
| totalInterestAccrual | String | 历史总收益 | 
GET / 获取申购赎回记录
限速:6 次/s
限速规则:User ID
权限:读取
HTTP 请求
GET /api/v5/finance/staking-defi/sol/purchase-redeem-history
请求示例
GET /api/v5/finance/staking-defi/sol/purchase-redeem-history
import okx.Finance.SolStaking as SolStaking
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = SolStaking.SolStakingAPI(apikey, secretkey, passphrase, False, flag)
result = StackingAPI.sol_purchase_redeem_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 类型 purchase:申购redeem:赎回 | 
| status | String | 否 | 状态 pending:处理中success:成功处理failed:处理失败 | 
| after | String | 否 | 请求此 requestTime之前(更旧的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| before | String | 否 | 请求此 requestTime之后(更新的数据)的分页内容,值为时间戳,Unix 时间戳为毫秒数格式,如1597026383085 | 
| limit | String | 否 | 返回结果的数量,默认100条,最大值为100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "0.62666630",
            "completedTime": "1683413171000",
            "estCompletedTime": "",
            "redeemingAmt": "",
            "requestTime": "1683413171000",
            "status": "success",
            "type": "purchase"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| type | String | 类型 purchase:申购redeem:赎回 | 
| amt | String | 申购/赎回 的数量 | 
| redeemingAmt | String | 赎回中的数量 | 
| status | String | 状态 pending:处理中success:成功处理failed:处理失败 | 
| requestTime | String | 发起 申购/赎回 请求的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| completedTime | String | 赎回请求处理完成的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
| estCompletedTime | String | 预估完成赎回的时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
GET / 获取历史收益率(公共)
公共接口无须鉴权
限速:6次/s
限速规则:IP
HTTP 请求
GET /api/v5/finance/staking-defi/sol/apy-history
请求示例
GET /api/v5/finance/staking-defi/sol/apy-history?days=2
import okx.Finance.SolStaking as SolStaking
flag = "0"  # 实盘: 0, 模拟盘: 1
StackingAPI = SolStaking.SolStakingAPI(flag=flag)
result = StackingAPI.sol_apy_history(days="7")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| days | String | 是 | 查询最近多少天内的数据,不超过365天 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "rate": "0.11280000",
            "ts": "1734192000000"
        },
        {
            "rate": "0.11270000",
            "ts": "1734105600000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| rate | String | 年化收益率,如 0.01代表1% | 
| ts | String | 时间,值为时间戳,Unix时间戳为毫秒数格式,如 1597026383085 | 
活期简单赚币
活期简单赚币(余币宝)通过在借贷市场出借给杠杆交易用户获取收益。了解更多
GET / 获取余币宝余额
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/savings/balance
请求示例
GET /api/v5/finance/savings/balance?ccy=BTC
import okx.Finance.Savings as Savings
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(apikey, secretkey, passphrase, False, flag)
result = SavingsAPI.get_saving_balance(ccy="USDT")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
返回结果
{
    "code": "0",
    "msg":"",
    "data": [
        {
            "earnings": "0.0010737388791526",
            "redemptAmt": "",
            "rate": "0.0100000000000000",
            "ccy": "USDT",
            "amt": "11.0010737453457821",
            "loanAmt": "11.0010630707982819",
            "pendingAmt": "0.0000106745475002"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| amt | String | 币种数量 | 
| earnings | String | 币种持仓收益 | 
| rate | String | 最新出借利率 | 
| loanAmt | String | 已出借数量 | 
| pendingAmt | String | 未出借数量 | 
| redemptAmt | String | 
POST / 余币宝申购/赎回
仅资金账户中的资产支持余币宝申购。
限速:6次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/finance/savings/purchase-redempt
请求示例
POST /api/v5/finance/savings/purchase-redempt
body
{
    "ccy":"BTC",
    "amt":"1",
    "side":"purchase",
    "rate":"0.01"
}
import okx.Finance.Savings as Savings
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(apikey, secretkey, passphrase, False, flag)
result = SavingsAPI.savings_purchase_redemption(ccy='USDT',amt="0.1",side="purchase",rate="1")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种名称,如 BTC | 
| amt | String | 是 | 申购/赎回 数量 | 
| side | String | 是 | 操作类型 purchase:申购redempt:赎回 | 
| rate | String | 可选 | 申购年利率,如 0.1代表10%仅适用于申购,新申购的利率会覆盖上次申购的利率 参数取值范围在1%到365%之间 | 
返回结果
{
    "code":"0",
    "msg":"",
    "data":[
        {
            "ccy":"BTC",
            "amt":"1",
            "side":"purchase",
            "rate":"0.01"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称 | 
| amt | String | 申购/赎回 数量 | 
| side | String | 操作类型 | 
| rate | String | 申购年利率,如 0.1代表10% | 
POST / 设置余币宝借贷利率
限速:6次/s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/finance/savings/set-lending-rate
请求示例
POST /api/v5/finance/savings/set-lending-rate
body
{
    "ccy":"BTC",
    "rate":"0.02"
}
import okx.Finance.Savings as Savings
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(apikey, secretkey, passphrase, False, flag)
result = SavingsAPI.set_lending_rate(ccy='USDT',rate="1")
print(result)
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 币种名称,如 BTC | 
| rate | String | 是 | 贷出年利率 参数取值范围在1%到365%之间 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ccy": "BTC",
        "rate": "0.02"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种名称,如 BTC | 
| rate | String | 贷出年利率 | 
GET / 获取余币宝出借明细
返回最近一个月的数据
限速:6次/s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/savings/lending-history
请求示例
GET /api/v5/finance/savings/lending-history
import okx.Finance.Savings as Savings
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(apikey, secretkey, passphrase, False, flag)
result = SavingsAPI.get_lending_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为 100,不填默认返回 100 条 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
            "ccy": "BTC",
            "amt": "0.01",
            "earnings": "0.001",
            "rate": "0.01",
            "ts": "1597026383085"
        },
        {
            "ccy": "ETH",
            "amt": "0.2",
            "earnings": "0.001",
            "rate": "0.01",
            "ts": "1597026383085"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| amt | String | 出借数量 | 
| earnings | String | 已赚取利息 | 
| rate | String | 出借年利率 | 
| ts | String | 出借时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
GET / 获取市场借贷信息(公共)
公共接口无须鉴权
限速:6次/s
限速规则:IP
HTTP请求
GET /api/v5/finance/savings/lending-rate-summary
请求示例
GET /api/v5/finance/savings/lending-rate-summary
import okx.Finance.Savings as Savings
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(flag=flag)
result = SavingsAPI.get_public_borrow_info()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ccy": "BTC",
        "avgAmt": "10000",
        "avgAmtUsd": "10000000000",
        "avgRate": "0.03",
        "preRate": "0.02",
        "estRate": "0.01"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| avgAmt | String | |
| avgAmtUsd | String | |
| avgRate | String | 过去24小时平均借出利率 | 
| preRate | String | 上一次借贷年利率 | 
| estRate | String | 下一次预估借贷年利率 | 
GET / 获取市场借贷历史(公共)
公共接口无须鉴权
返回2021年12月14日后的记录
限速:6次/s
限速规则:IP
HTTP请求
GET /api/v5/finance/savings/lending-rate-history
请求示例
GET /api/v5/finance/savings/lending-rate-history
import okx.Finance.Savings as Savings
flag = "0"  # 实盘: 0, 模拟盘: 1
SavingsAPI = Savings.SavingsAPI(flag=flag)
result = SavingsAPI.get_public_borrow_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
| after | String | 否 | 查询在此之前的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| before | String | 否 | 查询在此之后的内容,值为时间戳,Unix 时间戳为毫秒数格式,如 1597026383085 | 
| limit | String | 否 | 分页返回的结果集数量,最大为100,不填默认返回100条 如果不指定 ccy,会返回同一个ts下的全部数据,不受limit限制 | 
返回结果
{
    "code": "0",
    "msg": "",
    "data": [{
        "ccy": "BTC",
        "amt": "0.01",
        "rate": "0.001",
        "ts": "1597026383085"
    }]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 币种,如 BTC | 
| amt | String | |
| rate | String | 出借年利率 | 
| ts | String | 时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
活期借币
欧易活期借币是一款高端借贷产品,用户无需变卖数字货币即可增加现金流。了解更多
GET / 可借币种列表
获取可借币种列表
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/borrow-currencies
请求示例
GET /api/v5/finance/flexible-loan/borrow-currencies
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.borrow_currencies()
print(result)
返回结果
{
    "code": "0",
    "data": [
        {
            "borrowCcy": "USDT"
        },
        {
            "borrowCcy": "USDC"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| borrowCcy | String | 可借币种,如 BTC | 
GET / 可抵押资产
获取可抵押资产信息(仅支持资金账户中的资产)
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/collateral-assets
请求示例
GET /api/v5/finance/flexible-loan/collateral-assets
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.collateral_assets()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 币种,如 BTC | 
返回结果
{
    "code": "0",
    "data": [
        {
            "assets": [
                {
                    "amt": "1.7921483143067599",
                    "ccy": "BTC",
                    "notionalUsd": "158292.621793314105231"
                },
                {
                    "amt": "1.9400755578876945",
                    "ccy": "ETH",
                    "notionalUsd": "6325.6652712507628946"
                },
                {
                    "amt": "63.9795959720319628",
                    "ccy": "USDT",
                    "notionalUsd": "64.3650372635940345"
                }
            ]
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| assets | Array of objects | 可抵押资产信息 | 
| > ccy | String | 币种,如 BTC | 
| > amt | String | 可用数量 | 
| > notionalUsd | String | 可抵押资产的美金价值 | 
POST / 最大可借
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
POST /api/v5/finance/flexible-loan/max-loan
请求示例
POST /api/v5/finance/flexible-loan/max-loan
body
{
    "borrowCcy": "USDT"
}
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.max_loan(borrowCcy="USDT")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| borrowCcy | String | 是 | 借币币种,如 USDT | 
| supCollateral | Array of objects | 否 | 补充抵押资产信息 | 
| > ccy | String | 是 | 币种,如 BTC | 
| > amt | String | 是 | 数量 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "borrowCcy": "USDT",
            "maxLoan": "0.01113",
            "notionalUsd": "0.01113356",
            "remainingQuota": "3395000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| borrowCcy | String | 借币币种,如 USDT | 
| maxLoan | String | 最大可借数量 | 
| notionalUsd | String | 最大可借美元价值 | 
| remainingQuota | String | 剩余可借额度,单位为 borrowCcy | 
GET / 抵押物最大可赎回数量
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/max-collateral-redeem-amount
请求示例
GET /api/v5/finance/flexible-loan/max-collateral-redeem-amount?ccy=USDT
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.max_collateral_redeem_amount("USDT")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 是 | 抵押物币种,如 USDT | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDT",
            "maxRedeemAmt": "1"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| ccy | String | 抵押物币种,如 USDT | 
| maxRedeemAmt | String | 抵押物最大可赎回数量 | 
POST / 调整抵押物
限速:5次/2s
限速规则:User ID
权限:交易
HTTP请求
POST /api/v5/finance/flexible-loan/adjust-collateral
请求示例
POST /api/v5/finance/flexible-loan/adjust-collateral
body
{
    "type":"add",
    "collateralCcy": "BTC",
    "collateralAmt": "0.1"
}
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.adjust_collateral(type="add", collateralCcy="USDT", collateralAmt="1")
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 是 | 操作类型 add:补充抵押物reduce:减少抵押物 | 
| collateralCcy | String | 是 | 抵押物币种,如 BTC | 
| collateralAmt | String | 是 | 抵押物数量 | 
返回结果
{
    "code": "0",
    "data": [
    ],
    "msg": ""
}
返回参数
code = 0 代表请求已被接受(不代表处理成功)
GET / 借贷信息
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/loan-info
请求示例
GET /api/v5/finance/flexible-loan/loan-info
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.loan_info()
print(result)
返回结果
{
    "code": "0",
    "data": [
        {
            "collateralData": [
                {
                    "amt": "0.0000097",
                    "ccy": "COMP"
                },
                {
                    "amt": "0.78",
                    "ccy": "STX"
                },
                {
                    "amt": "0.001",
                    "ccy": "DOT"
                },
                {
                    "amt": "0.05357864",
                    "ccy": "LUNA"
                }
            ],
            "collateralNotionalUsd": "1.5078763",
            "curLTV": "0.5742",
            "liqLTV": "0.8374",
            "loanData": [
                {
                    "amt": "0.86590608",
                    "ccy": "USDC"
                }
            ],
            "loanNotionalUsd": "0.8661285",
            "marginCallLTV": "0.7374",
            "riskWarningData": {
                "instId": "",
                "liqPx": ""
            }
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| loanNotionalUsd | String | 借币资产美金价值 | 
| loanData | Array of objects | 借币数据 | 
| > ccy | String | 借贷币种 | 
| > amt | String | 借贷数量 | 
| collateralNotionalUsd | String | 抵押物美金价值 | 
| collateralData | Array of objects | 抵押资产数据 | 
| > ccy | String | 抵押币种 | 
| > amt | String | 抵押数量 | 
| riskWarningData | Object | 风险预警信息 | 
| > instId | String | 清算交易产品,如 BTC-USDT仅当质押物和借币都只有一种时,该字段有效。其他情况返回""。 | 
| > liqPx | String | 清算价格 清算价格的单位为交易产品的计价币,如 BTC-USDT中的USDT。仅当质押物和借币都只有一种时,该字段有效。其他情况返回""。 | 
| curLTV | String | 当前质押率,如 0.1代表10%注:LTV(Loan-to-Value,贷款价值比) | 
| marginCallLTV | String | 预警质押率,如 0.1代表10%您的质押率达到预警质押率时,系统将会提示您当前质押率过高,即将触发强平。 | 
| liqLTV | String | 强平质押率,如 0.1代表10%若您的借贷达到强平质押率并被强平,您将损失质押物及已完成的还款。 | 
GET / 借贷历史
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/loan-history
请求示例
GET /api/v5/finance/flexible-loan/loan-history
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.loan_history()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| type | String | 否 | 操作类型 borrowed:借入repaid:还币collateral_locked:锁定质押物collateral_released:释放质押物forced_repayment_buy:自动换币买入forced_repayment_sell:自动换币卖出forced_liquidation:强制平仓partial_liquidation:强制减仓sell_collateral:卖出质押资产buy_transition_coin:购买中介币种sell_transition_coin:卖出中介币种buy_borrowed_coin:购买借币币种 | 
| after | String | 否 | 请求此 ID 之前(更旧的数据)的分页内容,传的值为对应接口的 refId(不包含) | 
| before | String | 否 | 请求此 ID 之后(更新的数据)的分页内容,传的值为对应接口的 refId(不包含) | 
| limit | String | 否 | 返回结果的数量,最大为 100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "amt": "-0.001",
            "ccy": "DOT",
            "refId": "17316594851045086",
            "ts": "1731659485000",
            "type": "collateral_locked"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| refId | String | 对应记录ID | 
| type | String | 操作类型 | 
| ccy | String | 币种,如 BTC | 
| amt | String | 数量 | 
| ts | String | 操作发生时间,Unix 时间戳为毫秒数格式,如 1597026383085 | 
GET / 计息记录
获取最近30天的计息记录。
限速:5次/2s
限速规则:User ID
权限:读取
HTTP请求
GET /api/v5/finance/flexible-loan/interest-accrued
请求示例
GET /api/v5/finance/flexible-loan/interest-accrued
from okx.Finance import FlexibleLoan
# API 初始化
apikey = "YOUR_API_KEY"
secretkey = "YOUR_SECRET_KEY"
passphrase = "YOUR_PASSPHRASE"
flag = "0"  # 实盘: 0, 模拟盘: 1
flexibleLoanAPI = FlexibleLoan.FlexibleLoanAPI(apikey, secretkey, passphrase, False, flag)
result = flexibleLoanAPI.interest_accrued()
print(result)
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| ccy | String | 否 | 借贷币种,如 BTC | 
| after | String | 否 | 请求此 ID 之前(更旧的数据)的分页内容,传的值为对应接口的 refId(不包含) | 
| before | String | 否 | 请求此 ID 之后(更新的数据)的分页内容,传的值为对应接口的 refId(不包含) | 
| limit | String | 否 | 返回结果的数量,最大为 100,默认100条 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "ccy": "USDC",
            "interest": "0.00004054",
            "interestRate": "0.41",
            "loan": "0.86599309",
            "refId": "17319133035195744",
            "ts": "1731913200000"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| refId | String | 对应记录ID | 
| ccy | String | 币种,如 BTC | 
| loan | String | 计息时负债 | 
| interest | String | 利息 | 
| interestRate | String | 小时利率,如 0.01代表1% | 
| ts | String | 计息时间,Unix 时间戳为毫秒数格式,如 1597026383085 | 
节点
节点API为节点用户提供灵活的直客查询功能,输入您直客的UID即可获得其相关信息,赋能您的节点业务增长和直客日常管理。 如需更多节点相关功能,或数据支持,请联系您的商务,我们会通过您的商务与您取得联系,提供更加完善的API支持。
REST API
获取被邀请人返佣信息
限速:20次/2s
限速规则:User ID
HTTP请求
GET /api/v5/affiliate/invitee/detail
请求示例
GET /api/v5/affiliate/invitee/detail?uid=11111111
请求参数
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| uid | String | 是 | 被邀请人UID,仅支持使用被邀请人母账号的 UID 返回数据中涵盖了被邀请人母账户和子账户。 | 
返回结果
{
    "msg": "",
    "code": "0",
    "data": [
        {
            "accFee": "0",
            "affiliateCode": "HIIIIII",
            "depAmt": "0",
            "firstTradeTime": "",
            "inviteeLevel": "2",
            "inviteeRebateRate": "0.39",
            "joinTime": "1712546713000",
            "kycTime": "",
            "level": "Lv1",
            "region": "越南",
            "totalCommission": "0",
            "volMonth": "0"
        }
    ]
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| inviteeLevel | String | 被邀请人的节点层级 直客返回 2 | 
| joinTime | String | 返佣关系建立的时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| inviteeRebateRate | String | 返佣比例(小数形式),如 0.01代表1% | 
| totalCommission | String | 总返佣数量,单位为 USDT | 
| firstTradeTime | String | 首次交易时间(在最近的返佣关系建立之后) Unix时间戳的毫秒数格式,如 1597026383085 如果用户没有交易, 返回 "" | 
| level | String | 当前在平台上真实交易量的用户等级,如 Lv1 | 
| depAmt | String | 累计充值金额,单位为 USDT 如果没有充值, 返回 0 | 
| volMonth | String | 当月累计交易量,单位为 USDT 如果没有交易, 返回 0 | 
| accFee | String | 累计交易手续费,单位为 USDT 如果没有交易手续费,返回 0 | 
| kycTime | String | KYC2 认证时间. Unix时间戳的毫秒数格式,且精确到天 如果没有通过 KYC2, 返回 "" | 
| region | String | 国家或地区,如"英国" | 
| affiliateCode | String | 节点邀请码 | 
Status
GET / Status
获取系统升级事件的状态。
由计划系统维护引起的短暂不可用(<5秒)和WebSocket闪断连接(用户可以立即重连)将不会公布。此类维护只会在市场波动性低的时期进行。
限速:1次/5s
HTTP请求
GET /api/v5/system/status
请求示例
GET /api/v5/system/status
GET /api/v5/system/status?state=canceled
import okx.Status as Status
flag = "0"  # 实盘:0 , 模拟盘:1
statusAPI = Status.StatusAPI(
    domain="https://www.okx.com",
    flag=flag,
)
# 获取系统升级事件的状态
result = statusAPI.status()
print(result)
请求参数
请求示例
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| state | String | 否 | 系统的状态 scheduled:等待中ongoing:进行中pre_open:预开放completed:已完成canceled:已取消当维护时间过长,会存在预开放时间,一般持续10分钟左右。 不填写此参数,默认返回 等待中、进行中和预开放 的数据 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "begin": "1672823400000",
            "end": "1672823520000",
            "href": "",
            "preOpenBegin": "",
            "scheDesc": "",
            "serviceType": "8",
            "state": "completed",
            "maintType": "1",
            "env": "1",
            "system": "unified",
            "title": "Trading account system upgrade (in batches of accounts)"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| title | String | 系统维护说明的标题 | 
| state | String | 系统维护的状态 | 
| begin | String | 系统维护的开始时间,Unix时间戳的毫秒数格式 如: 1617788463867 | 
| end | String | 交易全面开放的时间,Unix时间戳的毫秒数格式 如: 1617788463867在维护完成前,是预期结束时间;维护完成后,会变更为实际结束时间。 | 
| preOpenBegin | String | 预开放开始的时间,开放撤单、Post Only 下单和资金转入功能的时间 | 
| href | String | 系统维护详情的超级链接,若无返回值,默认值为空,如 "" | 
| serviceType | String | 服务类型 0:WebSocket5:交易服务6:大宗交易7:策略交易8:交易服务 (按账户分批次)9:交易服务 (按产品分批次)10:价差交易11:跟单交易99:其他(如:停止部分产品交易) | 
| system | String | 系统 unified:交易账户 | 
| scheDesc | String | 改期进度说明,如 由 2021-01-26T16:30:00.000Z改期到2021-01-28T16:30:00.000Z | 
| maintType | String | 维护类型 1:计划维护2:临时维护3:系统故障 | 
| env | String | 环境 1:实盘2:模拟盘 | 
WS / Status 频道
获取系统维护的状态,当系统维护状态改变,改期,以及修改结束时间时推送。首次订阅:”推送最新一条的变化数据“;后续每次有状态变化,推送变化的内容。
由计划系统维护引起的短暂不可用(<5秒)和WebSocket闪断连接(用户可以立即重连)将不会公布。此类维护只会在市场波动性低的时期进行。
URL Path
/ws/v5/public
请求示例
{
    "id": "1512",
    "op": "subscribe",
    "args": [{
        "channel": "status"
    }]
}
import asyncio
from okx.websocket.WsPublicAsync import WsPublicAsync
def callbackFunc(message):
    print(message)
async def main():
    ws = WsPublicAsync(url="wss://wspap.okx.com:8443/ws/v5/public")
    await ws.start()
    args = [{
        "channel": "status"
    }]
    await ws.subscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
    await ws.unsubscribe(args, callback=callbackFunc)
    await asyncio.sleep(10)
asyncio.run(main())
请求参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识。 用户提供,返回参数中会返回以便于找到相应的请求。 字母(区分大小写)与数字的组合,可以是纯字母、纯数字且长度必须要在1-32位之间。 | 
| op | String | 是 | 操作 subscribeunsubscribe | 
| args | Array of objects | 是 | 请求订阅的频道列表 | 
| > channel | String | 是 | 频道名 status | 
成功返回示例
{
    "id": "1512",
    "event": "subscribe",
    "arg": {
        "channel": "status"
    },
    "connId": "a4d3ae55"
}
失败返回示例
{
    "id": "1512",
    "event": "error",
    "code": "60012",
    "msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"statuss\"}]}",
    "connId": "a4d3ae55"
}
返回参数
| 参数 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| id | String | 否 | 消息的唯一标识 | 
| event | String | 是 | 事件 subscribeunsubscribeerror | 
| arg | Object | 否 | 订阅的频道 | 
| > channel | String | 是 | 频道名 status | 
| code | String | 否 | 错误码 | 
| msg | String | 否 | 错误消息 | 
| connId | String | 是 | WebSocket连接ID | 
推送示例
{
    "arg": {
        "channel": "status"
    },
    "data": [
        {
            "begin": "1672823400000",
            "end": "1672825980000",
            "href": "",
            "preOpenBegin": "",
            "scheDesc": "",
            "serviceType": "0",
            "state": "completed",
            "system": "unified",
            "maintType": "1",
            "env": "1",
            "title": "Trading account WebSocket system upgrade",
            "ts": "1672826038470"
        }
    ]
}
推送数据参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| arg | Object | 订阅成功的频道 | 
| > channel | String | 频道名 status | 
| data | Array of objects | 订阅的数据 | 
| > title | String | 系统维护说明的标题 | 
| > state | String | 系统的状态, scheduled:等待中 ;ongoing:进行中 ;pre_open:预开放;completed:已完成canceled:  已取消当维护时间过长,会存在预开放时间,一般持续10分钟左右。 | 
| > begin | String | 系统维护的开始时间,Unix时间戳的毫秒数格式 如: 1617788463867 | 
| > end | String | 交易全面开放的时间,Unix时间戳的毫秒数格式 如: 1617788463867在维护完成前,是预期结束时间;维护完成后,会变更为实际结束时间。 | 
| > preOpenBegin | String | 预开放开始的时间,开放撤单、Post Only 下单和资金转入功能的时间 | 
| > href | String | 系统维护详情的超级链接,若无返回值,默认值为空,如:“” | 
| > serviceType | String | 服务类型, 0:WebSocket ;5:交易服务;6:大宗交易;7:策略交易;8:交易服务 (按账户分批次);9:交易服务 (按产品分批次);10:价差交易;11:跟单交易;99:其他(如:停止部分产品交易) | 
| > system | String | 系统, unified:交易账户 | 
| > scheDesc | String | 改期进度说明,如: 由 2021-01-26T16:30:00.000Z 改期到 2021-01-28T16:30:00.000Z | 
| > maintType | String | 维护类型。 1:计划维护;2:临时维护;3:系统故障 | 
| > env | String | 环境。 1:实盘,2:模拟盘 | 
| > ts | String | 事件变更的推送时间,Unix时间戳的毫秒数格式,如: 1617788463867 | 
公告
GET / 公告
获取公告信息,以pTime和businessPTime倒序排序,公告更新不会影响排序。每页默认有 20 条公告
请求头中 Accept-Language 设置为 en-US 时返回英文公告;设置为 zh-CN 时返回中文公告
该接口鉴权是可选的:
当 HTTP 请求头中有 OK-ACCESS-KEY 时,该接口会被视为私有接口且鉴权是必须的
当 HTTP 请求头中没有 OK-ACCESS-KEY 时,该接口会被视为公共接口,不需要鉴权
当为公共接口时,响应根据请求 IP 进行限制
当为私有接口时,响应会根据居住国家进行限制
限速:5次/2s
限速规则:User ID(私有接口时) 或者 IP (公共接口时)
权限:读取
HTTP请求
GET /api/v5/support/announcements
请求示例
GET /api/v5/support/announcements
请求参数
请求示例
| 参数名 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| annType | String | 否 | 公告类型。仅支持传从"GET / 公告类型" 接口返回的公告类型 不传时返回所有类型 | 
| page | String | 否 | 查询页数. 默认为 1 | 
返回结果
{
    "code": "0",
    "data": [
        {
            "details": [
                {
                    "annType": "announcements-new-listings",
                    "title": "OKX to list Virtuals Protocol (VIRTUAL) for spot trading",
                    "url": "https://www.okx.com/help/okx-to-list-virtuals-protocol-virtual-for-spot-trading",
                    "pTime": "1761620404821",
                    "businessPTime": "1761620400000"
                },
                {
                    "annType": "announcements-web3",
                    "title": "Completion of X Layer Mainnet Upgrade",
                    "url": "https://www.okx.com/help/completion-of-x-layer-mainnet-upgrade",
                    "pTime": "1761582756071",
                    "businessPTime": "1761580800000"
                },
            ],
            "totalPage": "123"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| totalPage | String | 总的页数 | 
| details | Array of objects | 公告列表 | 
| > title | String | 公告标题 | 
| > annType | String | 公告类型 | 
| > businessPTime | String | 公告页面展示时间,供用户参考。Unix 毫秒时间戳,例如 1597026383085 | 
| > pTime | String | 公告首次实际发布时间,Unix时间戳的毫秒数格式,如 1597026383085 | 
| > url | String | 公告链接 | 
GET / 公告类型
公共接口不需要鉴权
响应根据请求 IP 进行限制。
限速:1次/2s
限速规则:IP
权限:读取
HTTP请求
GET /api/v5/support/announcement-types
请求示例
GET /api/v5/support/announcement-types
请求参数
请求示例
无
返回结果
{
    "code": "0",
    "data": [
        {
            "annType": "announcements-new-listings",
            "annTypeDesc": "New listings"
        },
        {
            "annType": "announcements-delistings",
            "annTypeDesc": "Delistings"
        }
    ],
    "msg": ""
}
返回参数
| 参数名 | 类型 | 描述 | 
|---|---|---|
| annType | String | 公告类型 | 
| annTypeDesc | String | 公告类型描述 | 
错误码
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 未被列入白名单列表,请联系客服 | 
| 50042 | 200 | 请求重复 | 
| 50044 | 200 | 必须指定一种broker类型 | 
| 50045 | 200 | simPos 应为空。投资组合计算器纳入真实现货仓位时,暂不支持添加模拟仓位。 | 
| 50046 | 200 | 该功能暂时无法使用,我们正在进行维护,请稍后重试 | 
| 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 | 借币系统暂不可用,请稍后再试 | 
| 50067 | 200 | 当前接口不支持跨站交易功能 | 
| 50069 | 200 | 风险单元保证金率校验失败 | 
| 50071 | 200 | {param} 已存在 e.g. clOrdId 已存在 | 
| 50072 | 200 | 跨币种保证金和组合保证金模式不再支持进行逐仓杠杆交易 | 
| 50075 | 200 | 该币种在伊斯兰子账户不可用 | 
| 50076 | 200 | 起始日期和结束日期的时间间隔不能超过{param0}天 | 
| 50077 | 200 | 起始日期和结束日期的时间间隔不能超过{param0}月 | 
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 | Instrument ID 或 Spread 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订单降低风险) | 
| 51008 | 200 | 委托失败,账户可用保证金过低,其中不包含已触发平台质押限制的币种资产 {param0} | 
| 51008 | 200 | 委托失败,账户可用余额不足,其中不包含已触发平台质押限制的币种资产 {param0} | 
| 51008 | 200 | 委托失败,{param0} 可用余额不足,该委托会产生借币,当前账户可用保证金过低无法借币。账户可用保证金不包含已触发平台质押限制的币种资产 {param1} | 
| 51008 | 200 | 委托失败,您主账户的 {param0} 借币额度不足 | 
| 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 重复 | 
| 51066 | 200 | 期权交易不支持市价单,请用限价单平仓 | 
| 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 | 
| 51075 | 200 | 现货跟单平仓单只支持修改价格,不支持修改数量 | 
| 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 | 市价全平操作过于频繁 | 
| 51115 | 429 | 市价全平前请先撤销所有平仓单 | 
| 51116 | 200 | 委托价格或触发价格超过{param0} | 
| 51117 | 200 | 平仓单挂单单数超过限制 | 
| 51120 | 200 | 下单数量不足{param0}张 | 
| 51121 | 200 | 下单张数应为一手张数的倍数 | 
| 51122 | 200 | 委托价格小于最小值{param0} | 
| 51123 | 200 | 最小价格增量为空 | 
| 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 | 现货模式下币币不支持只减仓功能 | 
| 51140 | 200 | 由于盘口卖单不足,下单失败,请稍后重试 | 
| 51142 | 200 | 盘口无有效报价,用USDT模式下单无法成交,请尝试切换到币种模式 | 
| 51143 | 200 | 兑换数量不足 | 
| 51144 | 200 | 请使用 {param0} 进行下单 | 
| 51147 | 200 | 交易期权需要在交易账户资产总价值大于1万美元的前提下,开通期权交易服务 | 
| 51148 | 200 | 下单失败,当前订单若下单成功会造成只减仓订单反向开仓,请撤销或修改原有挂单再进行下单 | 
| 51149 | 500 | 下单超时,请稍候重试 (不代表请求成功或失败,请检查请求结果) | 
| 51150 | 200 | 交易数量或价格的精度超过限制 | 
| 51152 | 200 | 一键借币模式下,不支持自动借币与自动还币和手动类型混合下单。 | 
| 51153 | 200 | 无法在一键借币模式下手动借币,您输入的金额已超过可借上限 | 
| 51154 | 200 | 无法手动归还一键借币模式下的借币,您输入的还币金额已超过该币种可用余额 | 
| 51155 | 200 | 由于您所在国家或地区的合规限制,您无法交易此币对或合约 | 
| 51158 | 200 | 自主划转已不支持,请切换至一键借币模式下单 (isoMode=quick_margin) | 
| 51164 | 200 | 您当前身份为带单交易员,无法切换至组合保证金账户 | 
| 51169 | 200 | 下单失败,您没有当前合约对应方向的持仓,无法进行平仓或者减仓。 | 
| 51170 | 200 | 下单失败,只减仓下单方向不能与持仓方向相同 | 
| 51171 | 200 | 改单失败,当前订单若改单成功会造成只减仓订单反向开仓,请撤销或修改原有挂单再进行改单 | 
| 51173 | 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} 张,请修改当前订单数量,或撤单、平仓。 | 
| 51192 | 200 | 输入IV值对应的 {param0} 期权价格超过最低卖价 {param1} {param2},请重新输入合理的IV值。 | 
| 51193 | 200 | 输入IV值对应的 {param0} 期权价格超过最高买价 {param1} {param2},请重新输入合理的IV值。 | 
| 51194 | 200 | 输入USD订单价格对应的 {param0} 期权价格超过最低卖价 {param1} {param2},请重新输入合理的USD订单价格。 | 
| 51195 | 200 | 输入USD订单价格对应的 {param0} 期权价格超过最高买价 {param1} {param2},请重新输入合理的USD订单价格。 | 
| 51196 | 200 | 在提前挂单期间,您只能下限价单。 | 
| 51197 | 200 | 在提前挂单开始后,您才能下限价单。 | 
| 51201 | 200 | 市价委托单笔价值不能超过 1,000,000 USDT | 
| 51202 | 200 | 市价单下单数量超出最大值 | 
| 51203 | 200 | 普通委托数量超出最大限制{param0} | 
| 51204 | 200 | 限价委托单价格不能为空 | 
| 51205 | 200 | 不支持只减仓操作 | 
| 51206 | 200 | 请先撤销当前下单产品{param0}的只减仓挂单,避免反向开仓 | 
| 51207 | 200 | 交易数量超过限制,无法市价全平,请手动下单分批平仓 | 
| 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 | 下单失败,现货交易仅支持设置最新价为触发价格,请更改触发价格并重试 | 
| 51416 | 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订单降低风险) | 
| 51502 | 200 | 修改订单失败,您主账户的 {param0} 借币额度不足 | 
| 51503 | 200 | 由于订单已完成、已撤销或不存在,改单失败 | 
| 51503 | 200 | 由于订单不存在,改单失败(仅适用于价差速递) | 
| 51505 | 200 | {instId} 不处于集合竞价阶段 | 
| 51506 | 200 | 订单类型不支持改单 | 
| 51507 | 200 | 您仅能在币种上线至少 5 分钟后进行市价委托 | 
| 51508 | 200 | 集合竞价第一阶段和第二阶段不允许改单 | 
| 51509 | 200 | 修改订单失败,订单已撤销(仅适用于价差速递) | 
| 51510 | 200 | 修改订单失败,订单已完成(仅适用于价差速递) | 
| 51511 | 200 | 操作失败,订单价格不满足Post Only条件 | 
| 51512 | 200 | 批量修改订单失败。同一批量改单请求中不允许包含相同订单。 | 
| 51513 | 200 | 对于正在处理的同一订单,改单请求次数不得超过3次 | 
| 51514 | 200 | 修改订单失败,价格长度不能超过 32 个字符 | 
| 51521 | 200 | 改单失败,当前合约无持仓,无法修改只减仓订单 | 
| 51522 | 200 | 改单失败,只减仓订单方向不能与持仓反向相同 | 
| 51532 | 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 | 
| 51543 | 200 | 修改现货或杠杆的止盈止损订单时,仅支持调整价格和数量。如需其他操作,请撤单后重新下单。 | 
| 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 | 该用户不是您的直客 | 
| 51820 | 200 | 请求失败 | 
| 51821 | 200 | 该支付方式不支持 | 
| 51822 | 200 | 超过询价有效期 | 
| 51823 | 200 | 买卖交易参数 {param} 与报价不一致 | 
| 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 小时内仅允许减少仓位数量,请修改或撤销订单 | 
| 54018 | 200 | 超出 {param0} 美元的买入量限额,余下限额为 {param1} 美元。(集合竞价期间) | 
| 54019 | 200 | 超出 {param0} 美元的买入量限额,余下限额为 {param1} 美元。(集合后) | 
| 54024 | 200 | 下单失败,在全仓模式下交易交割、永续合约和期权时需开启 {ccy} 质押 | 
| 54025 | 200 | 下单失败,在逐仓模式下交易杠杆、交割、永续合约和期权时需开启 {ccy} 质押 | 
| 54026 | 200 | 下单失败,在逐仓模式下交易杠杆币对时需开启 {ccy} 和 {ccy1} 质押 | 
| 54027 | 200 | 下单失败,交易期权时需开启 {ccy} 质押 | 
| 54028 | 200 | 下单失败,在逐仓模式下交易现货需开启 {ccy} 质押 | 
| 54029 | 200 | {param0} 不存在于 {param1} | 
| 54030 | 200 | 下单失败,您的 {param0} 相同交易方向的持仓和挂单总价值不可超过 {param1} 美元,或超过全平台总持仓量的 {param2} | 
| 54031 | 200 | 下单失败,{param0} 合约已达到 {param1} 美元的持仓限额 | 
| 54035 | 200 | 下单失败,当前已达到该币种的全平台质押上限,仅支持只减仓订单 | 
| 54036 | 200 | STP mode 为 cancel both,不支持 FOK 订单 | 
| 54072 | 200 | 当前仅支持查看该合约,无法进行交易 | 
| 54073 | 200 | 下单失败,{param0} 存在脱钩风险,请切换结算币种后重试 | 
| 54074 | 200 | 设置失败,请撤销所有以 {param0} 作为结算币种的挂单、平掉相关仓位、停止策略 | 
| 54075 | 200 | 当前账户模式暂不支持币币合约交易。 | 
数据类
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 52000 | 200 | 没有最新行情信息 | 
金融
错误码从 51700 到 51799
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 51720 | 200 | 赎回失败 | 
| 51721 | 200 | 取消赎回失败 | 
| 51722 | 200 | 赎回已到账 | 
| 51723 | 200 | 不支持提前赎回 | 
| 51724 | 200 | 当前状态不支持赎回 | 
| 51725 | 200 | 当前状态不支持取消 | 
| 51726 | 200 | 该项目不支持撤销申购/赎回 | 
| 51727 | 200 | 最小申购数量为 {minUnit} {ccy} | 
| 51728 | 200 | 申购数量超过最大值 | 
| 51729 | 200 | 该项目尚未到期 | 
| 51730 | 200 | 该项目已售罄 | 
| 51731 | 200 | 产品现在暂停申购 | 
| 51732 | 200 | 用户KYC等级不符合要求 | 
| 51733 | 200 | 用户被风险管理中 | 
| 51734 | 200 | 不支持用户所属KYC国家 | 
| 51735 | 200 | 不支持子帐户 | 
| 51736 | 200 | {ccy} 余额不足 | 
| 51737 | 200 | 根据当地法律法规,您需要完成身份认证方可继续使用我们的服务。 | 
| 51738 | 200 | 您的资金账户被冻结 | 
| 51739 | 200 | 该功能暂不可用 | 
| 51750 | 200 | 抵押物不能包含借贷币种资产 | 
| 51751 | 200 | 币种 {ccy} 不支持借币 | 
| 51752 | 200 | 币种 {ccy} 不支持抵押 | 
| 51753 | 200 | 抵押物中不包含此资产 | 
| 51754 | 200 | 当前没有负债,无需增加抵押物 | 
| 51755 | 200 | 币种 {ccy} 被限制操作 | 
| 51756 | 200 | 超过最大可赎回数量 | 
| 51757 | 200 | 质押物数量不应低于 {minAmt} | 
| 51758 | 200 | 您最多可赎回 {maxRedemptionAmount} {crypto}。 | 
| 51759 | 200 | 已超出临时限额,请稍后再试。 | 
| 51760 | 200 | 使用中性套利策略的账户无法开通活期借币 | 
| 51761 | 200 | 无法验证子账户的策略类型 | 
闪兑
错误码从 52900 到 52999
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 52900 | 200 | 无效请求 | 
| 52901 | 200 | 无效基准货币 | 
| 52902 | 200 | 无效标价货币 | 
| 52903 | 200 | 无效的报价数量 | 
| 52904 | 200 | 无效的报价方向 | 
| 52905 | 200 | 无效的报价 | 
| 52907 | 200 | 订单找不到 | 
| 52908 | 200 | 无效的订单ID | 
| 52909 | 200 | 客户自定义ID重复使用 | 
| 52910 | 500 | 服务端暂时不可用,请稍后重试 | 
| 52911 | 500 | 询价服务不可用,请稍后重试 | 
| 52912 | 500 | 服务端超时 | 
| 52913 | 200 | 拒绝交易 | 
| 52914 | 200 | 交易账户可用资产不足 | 
| 52915 | 200 | 询价量太大,流动性不足导致无法报价,请稍后重试 | 
| 52916 | 200 | 资金账户余额不足 | 
| 52917 | 200 | 询价数量不能低于下限 | 
| 52918 | 200 | 询价数量不能超过上限 | 
| 52919 | 200 | 闪兑交易参数{param}与报价不一致 | 
| 52920 | 200 | 闪兑交易数量不能超过报价数量 | 
| 52921 | 200 | 报价已交易,请重新询价 | 
| 52922 | 200 | 报价已过期,请重新询价 | 
| 52923 | 200 | 服务异常,请稍后重试 | 
| 52924 | 200 | 下单过于频繁,请稍后重试 | 
| 52925 | 200 | 客户自定义请求ID重复使用 | 
| 52926 | 200 | {param0}已过期 | 
| 52927 | 200 | 没有报价 | 
| 52928 | 200 | 数量应为下单数量精度的倍数 | 
交割合约类
错误码从 55000 到 55999
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 55000 | 200 | 交割后30分钟内不能转出 | 
永续合约类
暂无
期权合约类
暂无
资金类
错误码从 58000 到 58999
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 58002 | 200 | 请先开通余币宝服务 | 
| 58003 | 200 | 余币宝不支持该币种 | 
| 58004 | 200 | 账户冻结 | 
| 58005 | 200 | 申购/赎回额度不可超过{0} | 
| 58006 | 200 | 币种{0}不支持当前操作 | 
| 58007 | 200 | 资金接口服务异常,请稍后再试。 | 
| 58008 | 200 | 您没有该币种资产 | 
| 58009 | 200 | 币对不存在 | 
| 58010 | 200 | 该链{0}暂不支持 | 
| 58011 | 200 | 抱歉,由于当地法律法规,欧易无法为{region}未认证用户提供服务,请先认证身份以继续使用欧易 | 
| 58012 | 200 | 抱歉,由于当地法律法规,欧易无法为{region}未认证用户提供服务,所以您无法向该用户转账 | 
| 58013 | 200 | 暂不支持提币功能,请咨询客服了解详情 | 
| 58014 | 200 | 暂不支持充值功能,请咨询客服了解详情 | 
| 58015 | 200 | 暂不支持划转功能,请咨询客服了解详情 | 
| 58016 | 200 | 仅交易团队主账户有权限调用此接口 | 
| 58100 | 200 | 行权或结算中,暂无法转入或转出 | 
| 58101 | 200 | 划转冻结 | 
| 58102 | 429 | 已达到速率限制。请参考相应的 API 文档与节流请求 | 
| 58103 | 200 | 该账户划转功能暂不可用,详情请联系客服 | 
| 58104 | 200 | 您在法币区的交易异常,现已被限制划转功能,请您联系在线客服以解除限制 | 
| 58105 | 200 | 您在法币区的交易异常,现已被限制划转功能,请您在网页或APP进行法币划 转操作以完成身份验证 | 
| 58106 | 200 | 美元可转校验未通过 | 
| 58107 | 200 | 币种可转校验未通过 | 
| 58110 | 200 | 您所交易过或者持仓的 {businessType} {instFamily} 产品触发市场风控,平台已暂停您的资金转出功能,请稍后重试。如需进一步的协助,请联系客服。 | 
| 58111 | 200 | 永续合约正在收取资金费,暂时无法做资金划转,请稍后重试 | 
| 58112 | 200 | 资金划转失败,请联系客服进行处理 | 
| 58113 | 200 | 该币种不支持划转 | 
| 58114 | 400 | 转账金额必须大于 0 | 
| 58115 | 200 | 子账户不存在 | 
| 58116 | 200 | 转出数量大于最大可转数量 | 
| 58117 | 200 | 账户划转失败,请先处理负资产后再划转 | 
| 58119 | 200 | {0} 子账户没有转出权限,请先设置 | 
| 58120 | 200 | 划转服务暂不可用,请稍后重试 | 
| 58121 | 200 | 此次划转将导致您的仓位风险水平较高,进而可能引起爆仓。您需要重新调整划转金额,确保仓位处于安全水平后,再进行划转操作。 | 
| 58122 | 200 | 您的一部分现货正用于仓位间的 Delta 对冲,若划转数量超过可用金额,可能会影响现有的现货对冲结构,进而导致维持保证金率增加,请留意您的风险水平。 | 
| 58123 | 200 | 参数from与参数to不可相同 | 
| 58124 | 200 | 资金划转中,划转id:{trId},请通过接口(GET /api/v5/asset/transfer-state)获取最新状态 | 
| 58125 | 200 | 不可交易资产仅支持子账户转主账户 | 
| 58126 | 200 | 不可交易资产划转,只能在资金账户间互转 | 
| 58127 | 200 | 主账户 API key 不支持当前 type 划转类型参数,请参考 API 文档描述 | 
| 58128 | 200 | 子账户 API key 不支持当前 type 划转类型参数,请参考 API 文档描述 | 
| 58129 | 200 | {param}错误或{param}与type不匹配 | 
| 58131 | 200 | 根据当地法律法规,欧易无法为未认证用户提供服务,请先完成身份认证再继续划转 | 
| 58132 | 200 | 根据当地法律法规,我们无法为仅完成基本认证的用户提供服务,请先完成高级认证再继续划转 | 
| 58200 | 200 | 该币种暂不支持从{0}提现至{1},敬请谅解 | 
| 58201 | 200 | 今日提现金额累计超过每日限额 | 
| 58202 | 200 | NEO最小提现数量为1,且提现数量必须为整数 | 
| 58203 | 200 | 请先添加提现地址 | 
| 58204 | 200 | 因您的账户活动触发风控,暂停提现。请联系客户支持寻求帮助。 | 
| 58205 | 200 | 提现金额大于单笔提现最大金额 | 
| 58206 | 200 | 提现金额小于单笔最小提现金额 | 
| 58207 | 200 | 提币地址不在认证地址列表内 (带标签的提币地址格式为 “address:label”) | 
| 58208 | 200 | 提现失败,邮箱未绑定 | 
| 58209 | 200 | 子账户不能充值或提现,请在主账户中进行提现。 | 
| 58210 | 200 | 由于无法验证您的身份,提币操作未能成功。请通过欧易 App 或官网完成提币操作。 | 
| 58212 | 200 | 提现手续费应填写为提币数量的{0}% | 
| 58213 | 200 | 内部转账地址不合法,必须是邮箱、手机号或者账户名 | 
| 58214 | 200 | {chainName}维护中,暂停提币 | 
| 58215 | 200 | 提币申请ID不存在 | 
| 58216 | 200 | 不允许执行该操作 | 
| 58217 | 200 | 您当前的提现地址存在风险,暂时不能提现,详情请联系客服 | 
| 58218 | 200 | 内部提现失败,请检查参数toAddr与areaCode | 
| 58219 | 200 | 为保障您的资金安全,修改手机号/邮箱/谷歌验证后24小时之内将无法提现 | 
| 58220 | 200 | 提币请求已撤销 | 
| 58221 | 200 | toAddr参数格式有误,提币地址需要加上标签,格式应该为“地址:标签” | 
| 58222 | 200 | 无效的提币地址 | 
| 58223 | 200 | 提币到此合约地址需要支付更高的手续费 | 
| 58224 | 200 | 该类型币种暂不支持链上提币到 OKX 地址,请通过内部转账进行提币 | 
| 58225 | 200 | 抱歉,由于当地法律法规,欧易无法为{region}未认证用户提供服务,所以您无法向该用户转账 | 
| 58226 | 200 | {chainName} 已下线,不支持提币 | 
| 58227 | 200 | 不可交易资产提币只能全部提出 | 
| 58228 | 200 | 不可交易资产提币要求 API key 必须绑定 IP | 
| 58229 | 200 | 资金账户手续费不足 {fee} USDT | 
| 58230 | 200 | 根据欧易的合规政策,您需要完成 Lv. 1 身份认证方可继续提币 | 
| 58231 | 200 | 由于您的收款人尚未完成 Lv. 1 身份认证,内部转账暂时无法完成 | 
| 58232 | 200 | 您已超出个人身份验证 (Lv.1) 的提币上限,请完成照片验证 (Lv. 2) ,即可提升提币限额 | 
| 58233 | 200 | 根据当地法律法规,欧易无法为未认证用户提供服务,请先完成身份认证再继续提币 | 
| 58234 | 200 | 根据当地法律法规,收款人必须完成身份认证方可收到您的转账 | 
| 58235 | 200 | 根据当地法律法规,欧易无法为仅完成基本认证的用户提供服务,请先完成高级认证再继续提币 | 
| 58236 | 200 | 根据当地法律法规,仅完成基础认证的收款人无法收取转账,您的收款人必须完成高级认证方可收到您的转账 | 
| 58237 | 200 | 根据当地法律法规,请提供准确的接收方信息 (rcvrInfo)。对于交易所地址,请一并提供交易所信息和接收人的身份信息({recipientParameters})。 | 
| 58238 | 200 | 提币到交易所地址需提供完整的接收方信息,包括交易所信息和接收人的身份信息 | 
| 58239 | 200 | 不支持 API 提币至私人钱包。请通过欧易 App 或官网完成提币操作。 | 
| 58240 | 200 | 根据当地法律法规,为保障用户安全,您需要完成身份认证方可继续使用我们的服务。若您不希望进行身份认证,请联系客服团队了解详情。我们致力于为用户提供一个安全的平台,感谢您的理解与支持。 | 
| 58241 | 200 | 根据当地法律法规,内部转账功能暂时无法使用 | 
| 58242 | 200 | 受收款人所在地法律法规限制,本次内部转账无法完成 | 
| 58243 | 200 | 由于您的收款人尚未完成法币入金,对方不能接收本次转账 | 
| 58244 | 200 | 请先完成法币入金,再进行您的操作 | 
| 58248 | 200 | 根据当地法律法规限制,提币API已被暂时禁用。请使用OKX网页或OKX手机APP进行提币操作。 | 
| 58249 | 200 | 该币种暂不支持 API 提币,请于欧易网页端或 App 端进行提币。 | 
| 58252 | 200 | 为保障您的资产安全,首次进行 TRY 交易后,提币将在 48 小时内受到限制。 | 
| 58254 | 200 | 由于您所在国家或地区的合规限制,API 提币至私人钱包之前,需要先通过欧易 App 或官网完成 digital signature 或者 satoshi test。 | 
| 58256 | 200 | 您每 24 小时最多可提取价值为 {dailyLimit} {symbol} 的稳定币,当前还可提取 {quotaRemaining} {symbol}。 | 
| 58257 | 200 | 您每月最多可提取价值为 {monthlyLimit} {symbol} 的稳定币,当前还可提取 {quotaRemaining} {symbol}。 | 
| 58258 | 200 | 您每 24 小时最多可提取价值为 {dailyLimit} {symbol} 的数字货币,当前还可提取 {quotaRemaining} {symbol}。 | 
| 58300 | 200 | 创建充值地址超过上限 | 
| 58301 | 200 | 充值地址不存在 | 
| 58302 | 200 | 充值地址需要标签 | 
| 58303 | 200 | 该链{chain}充值当前不可用 | 
| 58304 | 200 | 创建invoice失败 | 
| 58305 | 200 | 找不到充币地址,请完成身份认证并生成充币地址 | 
| 58306 | 200 | 根据欧易的合规政策,您需要完成 Lv. 1 身份认证方可继续充币 | 
| 58307 | 200 | 您已超出个人身份验证 (Lv.1) 的充币上限。超出充币上限的资产已被冻结,请完成照片验证 (Lv. 2) ,即可提升充币限额 | 
| 58308 | 200 | 根据当地法律法规,欧易无法为未认证用户提供服务,请先完成身份认证再继续充币 | 
| 58309 | 200 | 根据当地法律法规,欧易无法为仅完成基本认证的用户提供服务,请先完成高级认证再继续充币 | 
| 58310 | 200 | 无法创建新的充币地址,请稍后重试 | 
| 58350 | 200 | 您的余额不足 | 
| 58351 | 200 | invoice已经过期 | 
| 58352 | 200 | invoice无效 | 
| 58353 | 200 | 充币数量需要在限额范围内 | 
| 58354 | 200 | 单日达到生成invoice 10,000 个的上限 | 
| 58355 | 200 | 用户没有使用此API接口的权限,请联系您的客户经理 | 
| 58356 | 200 | 同节点账户不支持闪电网络充币或提币 | 
| 58358 | 200 | 参数fromCcy与参数toCcy不可相同 | 
| 58373 | 200 | {ccy} 最小兑换数量为 {amount} | 
账户类
错误码从 59000 到 59999
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 59000 | 200 | 设置失败,请在设置前关闭任何挂单或持仓 | 
| 59001 | 200 | 当前存在借币,暂不可切换 | 
| 59002 | 200 | 子账户设置失败,请在设置前关闭任何子账户挂单、持仓或策略 | 
| 59004 | 200 | 只支持同一业务线下交易产品ID | 
| 59005 | 200 | 逐仓自主划转保证金模式,初次划入仓位的资产价值需大于 10,000 USDT | 
| 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 | 根据当地法律法规,您所在的地区无法使用保证金交易相关服务 | 
| 59117 | 200 | 所选币种数量不能超过 {param0} 个 | 
| 59118 | 200 | 下单金额需大于 {param0} | 
| 59119 | 200 | 一键还债功能暂时关闭,请稍后重试 | 
| 59120 | 200 | 一键兑换主流币功能暂时关闭,请稍后重试 | 
| 59121 | 200 | 该批次正在处理中,请等待处理完 | 
| 59122 | 200 | 该批次已经处理完 | 
| 59123 | 200 | {param0}币种下单金额需大于 {param1} | 
| 59124 | 200 | {param0} 币种下单金额需小于 {param1} | 
| 59125 | 200 | {param0} 不支持当前操作 | 
| 59132 | 200 | 无法切换,请先撤销所有挂单,参考预检查接口并停止不兼容策略 | 
| 59133 | 200 | 无法切换,资产未达目标账户模式的要求 | 
| 59134 | 200 | 无法切换,请参考预检查接口并平掉不兼容的仓位 | 
| 59135 | 200 | 无法切换,请参考预检查接口并调整带跟单关系 | 
| 59136 | 200 | 无法切换,请预先设置全仓合约仓位的杠杆倍数 | 
| 59137 | 200 | 设置失败,请为所有全仓合约仓位降低杠杆倍数到 {param0} 或以下 | 
| 59138 | 200 | 无法切换,梯度档位校验失败 | 
| 59139 | 200 | 无法切换,保证金校验失败 | 
| 59140 | 200 | 请使用质押币种进行还币 | 
| 59141 | 200 | 最小还币数量为 {param0},请增加还币币种数量或增加交易账户币种余额 | 
| 59142 | 200 | 还币失败,仅支持偿还可借币种 | 
| 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 | 超出借贷限额 | 
| 59401 | 200 | 持仓价值达到持仓限制 | 
| 59402 | 200 | 查询条件中的instId的交易产品当前不是可交易状态,请填写单个instid逐个查询状态详情 | 
| 59410 | 200 | 只有当借币交易启用且该币种支持借币交易时,您才可以进行借币 | 
| 59411 | 200 | 无法手动借币,账户可用保证金不足 | 
| 59412 | 200 | 无法手动借币,您输入的数量已超过借币限额 | 
| 59413 | 200 | 该币种没有负债,无需还币 | 
| 59414 | 200 | 无法手动借币,您输入的数量应大于或等于最小借币数量 {param0} | 
| 59415 | 200 | 由於利用率偏高,{TOKEN} 的手動簡單借幣已暫停,請稍後重試。 | 
| 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 | 不支持为独立经纪商子账号设置主动转出权限,所有独立经纪商子账户默认有主动转出权限 | 
| 59515 | 200 | 您当前不在托管账户白名单上。请联系客服寻求帮助。 | 
| 59516 | 200 | 请先创建 Copper 托管资金账户 | 
| 59517 | 200 | 请先创建 Komainu 托管资金账户 | 
| 59518 | 200 | 您当前无法使用 API 创建子账户。请在网页端或 App 端创建。 | 
| 59519 | 200 | 此功能已冻结,暂时无法使用,冻结原因:{freezereason} | 
| 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 | 不支持为非杠杆币种设置现货对冲占用数量 | 
| 59658 | 200 | 以下币种不支持开启质押:{ccy} | 
| 59658 | 200 | 以下币种不支持开启质押:{ccy} 和 {ccy1} | 
| 59658 | 200 | 以下币种不支持开启质押:{ccy},{ccy1} 和 {ccy2} | 
| 59658 | 200 | 以下币种不支持开启质押:{ccy},{ccy1},{ccy2} 以及其他 {number} 种 | 
| 59659 | 200 | 设置失败,需同时开启 {ccy} 和 {ccy1} 质押 | 
| 59660 | 200 | 设置失败,需同时关闭 {ccy} 和 {ccy1} 质押 | 
| 59661 | 200 | 设置失败,无法关闭 {ccy} 质押 | 
| 59662 | 200 | 设置失败,当前存在质押 {ccy} 为保证金的仓位或挂单 | 
| 59662 | 200 | 设置失败,当前存在质押 {ccy} 和 {ccy1} 为保证金的仓位或挂单 | 
| 59662 | 200 | 设置失败,当前存在质押 {ccy},{ccy1} 和 {ccy2} 为保证金的仓位或挂单 | 
| 59662 | 200 | 设置失败,当前存在质押 {ccy},{ccy1},{ccy2} 和其他 {number} 种币种为保证金的仓位或挂单 | 
| 59664 | 200 | 设置失败,当前存在 {ccy} 借币 | 
| 59664 | 200 | 设置失败,当前存在 {ccy} 和 {ccy1} 借币 | 
| 59664 | 200 | 设置失败,当前存在 {ccy},{ccy1} 和{ccy2} 借币 | 
| 59664 | 200 | 设置失败,当前存在 {ccy},{ccy1},{ccy2} 和其他 {number} 种币种借币 | 
| 59665 | 200 | 设置失败,保证金不足。请增加质押币数量,以达到仓位保证金要求。 | 
| 59666 | 200 | 设置失败,无法同时开启和关闭币种质押。 | 
| 59667 | 200 | 设置失败,虚拟账户不支持开启质押币 | 
| 59668 | 200 | 调整杠杆倍数前,请先撤销逐仓止盈止损委托、移动止盈止损委托、计划委托,取消追逐限价委托并停止正在运行的策略 | 
| 59669 | 200 | 调整杠杆倍数前,请先撤销全仓止盈止损委托、移动止盈止损委托、计划委托和追逐限价委托,并停止正在运行的策略 | 
| 59670 | 200 | 当前该交易币对的订单数量超过 {param0} 个,调整杠杆倍数前请先撤销挂单或减少订单数量,订单数量低于或等于 {param1} 个后再进行操作 | 
| 59671 | 200 | {param0} 不支持自动赚币 | 
| 59672 | 200 | 关闭自动赚币后,不支持调整最低出借年化 | 
| 59673 | 200 | 开启自动赚币的 24 小时内,无法进行关闭,请在 {param0} 重试 | 
| 59674 | 200 | 该币种开启自动赚币后,不支持借币进行划转或提取 | 
| 59675 | 200 | {param0} 已开启自动赚币 | 
| 59676 | 200 | 当手续费等级等于或高于 {param0} 时,才可以开启自动赚币 | 
| 59678 | 200 | 切换失败。请撤销全部现货挂单后再次尝试。 | 
| 59679 | 200 | 切换失败,您当前的账户不支持切换手续费币种。 | 
| 59683 | 200 | 请先开启该币种的质押,再将其设置为结算币种 | 
| 59684 | 200 | 该币种不支持进行借币交易 | 
| 59686 | 200 | 不支持该币种作为结算币种 | 
大宗交易
错误码从 70000 开始
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 70000 | 200 | 询价单不存在 | 
| 70001 | 200 | 报价单不存在 | 
| 70002 | 200 | 大宗交易不存在 | 
| 70003 | 200 | 公共的大宗交易不存在 | 
| 70004 | 200 | 无效的产品ID {instId} | 
| 70005 | 200 | 组合交易的数量不能超过最大值 | 
| 70006 | 200 | 不满足最小资产要求 | 
| 70007 | 200 | 该产品类型 {instFamily} 的标的指数 {instType} 不存在 | 
| 70008 | 200 | MMP状态下操作失败。 | 
| 70009 | 200 | Data数组必须至少含有一个有效元素 | 
| 70010 | 200 | 时间戳参数必须是Unix时间戳的毫秒格式 | 
| 70011 | 200 | 产品类型 {instType} 存在重复设置 | 
| 70012 | 200 | 同一个instType{instType}下的instFamily/instId{instId} 存在重复设置 | 
| 70013 | 200 | endTs必须大于等于beginTs | 
| 70014 | 200 | 不允许对所有产品类别设置includeAll=True. | 
| 70015 | 200 | 您在完成高级身份认证后才能交易此类产品 | 
| 70016 | 200 | 交易产品设置中需选择至少一个交易品种 | 
| 70060 | 200 | 账号 {account} 不存在或输入有误。仓位转移的两边帐号必须属于同一个主帐号。 | 
| 70061 | 200 | 您输入的仓位数量应小于您当前的持仓量,方向应与您当前的持仓方向相反。 | 
| 70062 | 200 | 账号 {account} 已达到每日仓位转移次数的上限 | 
| 70064 | 200 | 仓位不存在 | 
| 70065 | 200 | 未能转移仓位,因为无法确定成交价格 | 
| 70066 | 200 | 现货模式不支持仓位转移,请切换到其他账户模式后重试 | 
| 70067 | 200 | 杠杆交易暂不支持仓位转移 | 
| 70100 | 200 | 组合交易中的产品ID重复 | 
| 70101 | 200 | clRfqId重复 | 
| 70102 | 200 | 未指定对手方 | 
| 70103 | 200 | 无效的对手方 | 
| 70105 | 200 | 非全现货的RFQ总价值应该大于最小名义值{nonSpotMinNotional} | 
| 70106 | 200 | 下单数量小于最小交易数量 | 
| 70107 | 200 | 对手方的数量不能超过最大值 | 
| 70108 | 200 | 全现货的RFQ总价值应该大于最小名义值{spotMinNotional} | 
| 70109 | 200 | 所选产品无有效对手方 | 
| 70200 | 200 | 不能取消处于{rfqState}状态的询价单 | 
| 70203 | 200 | 取消失败,由于询价单数量超过限制数量{rfqLimit} | 
| 70207 | 200 | 取消失败,由于您没有询价挂单 | 
| 70208 | 200 | 取消失败,由于服务暂时不可用,请稍后重试 | 
| 70301 | 200 | clQuoteId重复 | 
| 70303 | 200 | 不能对处于{rfqState}状态的询价单报价 | 
| 70304 | 200 | 价格应该是下单价格精度的整数倍 | 
| 70305 | 200 | 买入价格不能高于报价 | 
| 70306 | 200 | 报价的组合交易没有匹配{rfqId}的组合交易 | 
| 70307 | 200 | 数量应该是下单数量精度的整数倍 | 
| 70308 | 200 | 不允许对自己的询价单报价 | 
| 70309 | 200 | 不允许对相同询价单进行同一方向的报价 | 
| 70310 | 200 | instId {instId} 报价不可以超过你预设的价格限制 | 
| 70400 | 200 | 不能取消处于{quoteState}状态的报价单 | 
| 70408 | 200 | 取消失败,由于报价单数量超过限制数量{quoteLimit} | 
| 70409 | 200 | 取消失败,由于您没有报价挂单 | 
| 70501 | 200 | 询价单{rfqId}没有被{quoteId}报价 | 
| 70502 | 200 | 组合交易没有匹配{rfqId}的组合交易 | 
| 70503 | 200 | 执行腿的价值总和小于大宗交易的最小名义值 | 
| 70504 | 200 | 执行失败,因为询价单的状态是{rfqState} | 
| 70505 | 200 | 执行失败,因为报价单的状态是{quoteState} | 
| 70506 | 200 | 腿的数量比例与原RFQ不一致 | 
| 70507 | 200 | 部分执行尝试失败。须设置allowPartialExecution为 true | 
| 70508 | 200 | 没有可用的产品设置。 | 
| 70509 | 200 | 交易执行失败:对手方相关错误 | 
| 70510 | 200 | 如需了解错误详情,请查看 acctAlloc 字段 | 
| 70511 | 200 | 正在执行报价 | 
| 70514 | 200 | 每个交易品种的各类账户腿的数量之和,需与组合询价单总量一致 | 
| 70515 | 200 | 各子账户的腿数量与组合询价单的比例需在所有交易品种中保持一致 | 
| 70516 | 200 | 您最多可为组合询价单选择 {param0} 个子账户 | 
| 70517 | 200 | {param0} 不存在,或您暂无权限创建组合询价单 | 
| 70518 | 200 | 请勿为组合询价单重复选择同一账户 | 
| 75001 | 200 | 交易 ID 不存在 | 
| 75002 | 200 | {sprdId} : 目前无法下新订单或修改现有订单 | 
| 75003 | 200 | 价格无效 | 
| 56000 | 200 | 大宗交易不存在 | 
| 56001 | 200 | 多腿的数量不能超过 {legLimit} | 
| 56002 | 200 | 执行和验证的多腿数量不匹配 | 
| 56003 | 200 | 重复的clBlockTdId | 
| 56004 | 200 | 不允许自成交 | 
| 56005 | 200 | 执行和验证的clBlockTdId 不匹配 | 
| 56006 | 200 | 执行和验证的角色不能相同 | 
| 56007 | 200 | 执行和验证的第{legNo}条腿不匹配 | 
| 56008 | 200 | 重复的产品名称 | 
跟单交易
错误码从 59200 到 59300
| 错误码 | HTTP 状态码 | 错误提示 | 
|---|---|---|
| 59128 | 200 | 您当前身份为带单交易员。您设置的带单合约 {instrument} 杠杆倍数不能超过 {num}× | 
| 59129 | 200 | 需优先使用 {param0} 进行还币 | 
| 59130 | 200 | 当资产 < 1 USD 时,仅支持用于偿还相同币种的借币 | 
| 59206 | 200 | 该带单交易员已无更多跟单空位 | 
| 59216 | 200 | 仓位不存在,请稍后重试 | 
| 59218 | 200 | 市价全平中... | 
| 59256 | 200 | 无法切换为买卖模式,请降低跟单人数至1人 | 
| 59245 | 200 | 作为带单交易员,{param0} 单次下单张数应小于或等于 {param1} | 
| 59247 | 200 | 杠杆倍数过高,当前仓位已超过该杠杆倍数的最大仓位,请重新调整杠杆倍数 | 
| 59260 | 200 | 您还不是现货带单交易员,请先在网页端/移动端完成申请 | 
| 59262 | 200 | 您还不是合约带单交易员,请先完成申请 | 
| 59641 | 200 | 由于您当前有定期借币,无法切换账户模式 | 
| 59642 | 200 | 跟单和带单员只能使用现货或合约模式 | 
| 59643 | 200 | 当前存在现货跟单,暂不可切换 | 
| 59263 | 200 | 仅白名单用户支持使用跟单功能,独立经纪商请联系 BD 进行处理 | 
| 59264 | 200 | 不支持现货跟单 | 
| 59267 | 200 | 取消失败,跟单关系不存在 | 
| 59268 | 200 | 存在交易员未带单的产品 | 
| 59269 | 200 | 该合约交易员不存在 | 
| 59270 | 200 | 固定金额跟单时,最大跟单金额 (copyTotalAmt) 需要大于等于单笔跟单金额 (copyAmt) | 
| 59273 | 200 | 您还不是合约跟单用户,请先开始跟单 | 
| 59274 | 200 | 无法跟自己带的单 | 
| 59275 | 200 | 操作失败,您正在申请成为交易员,无法跟单 | 
| 59276 | 200 | 交易员正在退出,当前无法跟单 | 
| 59277 | 200 | 到达跟单人数上限,不允许继续跟单 | 
| 59278 | 200 | 正在处理您的停止跟单请求,请稍后再试 | 
| 59279 | 200 | 您已设置跟单,请勿重复设置 | 
| 59280 | 200 | 跟单关系不存在,请先进行首次设置 | 
| 59282 | 200 | 仅主账号在白名单中的独立经纪商 ND 子账户支持使用该接口,请联系 BD 进行处理 | 
| 59283 | 200 | 当前账户不在合约模式 | 
| 59284 | 200 | 超过本月 {param0} 次调整上限 | 
| 59286 | 200 | 当前账户模式为现货模式,无法成为合约带单人 | 
| 59287 | 200 | 请使用 {param0}-{param1} 范围内的分润比例 | 
| 59288 | 200 | 您当前身份为带单交易员。您的账户正处于组合保证金模式,请切换至合约或跨币种模式后重试。 | 
| 59130 | 200 | 最高止盈比例为 {num}%,请重新输入 | 
| 59258 | 200 | 您当前身份为带单交易员,暂不支持该操作 | 
| 59259 | 200 | 请输入在有效范围内的跟单比例 | 
| 59285 | 200 | 您尚未进行过带单或跟单操作 | 
| 59292 | 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} | 
| 60023 | 批量登录请求过于频繁 | 
| 60024 | passphrase不正确 | 
| 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.okx.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. | 
| 64001 | 该频道到已经迁移到了 '/business' URL,请使用新的 URL。更多详情可参考:https://www.okx.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. | 
| 64002 | "/business" URL 不支持该频道. 请使用"/private" URL(对于私有频道), 或者"/public" URL(对于公有频道),更多详情可参考:https://www.okx.com/cn/help-center/changes-to-v5-api-websocket-subscription-parameter-and-url. | 
| 64003 | 用户交易费等级不支持访问该频道 | 
| 64004 | 不允许为 {instId} 同时订阅 {channelName} 以及 books-l2-tbt。请先取消订阅 books-l2-tbt。 | 
| 64007 | 由于 WebSocket 内部错误导致操作 {0} 失败,请稍后再试。 | 
| 64008 | 因服务升级,该连接即将关闭。请重新连接。 | 
关闭帧
| 状态码 | 文案 | 
|---|---|
| 1009 | 用户订阅请求过大 | 
| 4001 | 登录失败 | 
| 4002 | 参数不合法 | 
| 4003 | 登录账户多于100个 | 
| 4004 | 空闲超时30秒 | 
| 4005 | 写缓冲区满 | 
| 4006 | 异常场景关闭 | 
| 4007 | API key已更新或删除,请重新连接 | 
| 4008 | 总订阅频道数量超过最大限制 | 
| 4009 | 该连接订阅频道数超限制 | 
 
       