更新日志
重要文档通知
Binance 推出了全新的 API 文档门户。现有的 GitHub API 文档 已废弃 (2024-06-17),并将在用户迁移完成后的几个月内下线;具体日期将在适当时候确定并通知。
在此过渡阶段,两者网站将同时维持。然而,任何新服务将只会在新的门户上发布。
下面是当前和新 API 文档的链接的参考表:
功能 | 当前文档 | 新文档 |
---|---|---|
现货交易 | 当前文档 | 新文档 |
现货Websocket API | 当前文档 | 新文档 |
杠杆交易 | 当前文档 | 新文档 |
U本位合约 | 当前文档 | 新文档 |
币本位合约 | 当前文档 | 新文档 |
欧式期权 | 当前文档 | 新文档 |
统一账户 | 当前文档 | 新文档 |
钱包 | 当前文档 | 新文档 |
子母账户 | 当前文档 | 新文档 |
赚币 | 当前文档 | 新文档 |
双币投资 | 当前文档 | 新文档 |
定投 | 当前文档 | 新文档 |
ETH质押 | 当前文档 | 新文档 |
矿池接口 | 当前文档 | 新文档 |
策略交易 | 当前文档 | 新文档 |
跟单交易 | 当前文档 | 新文档 |
统一账户专业版 | 当前文档 | 新文档 |
法币 | 当前文档 | 新文档 |
C2C | 当前文档 | 新文档 |
VIP借币 | 当前文档 | 新文档 |
质押借币 | 当前文档 | 新文档 |
Pay | 当前文档 | 新文档 |
闪兑 | 当前文档 | 新文档 |
返佣 | 当前文档 | 新文档 |
NFT | 当前文档 | 新文档 |
礼品卡 | 当前文档 | 新文档 |
2024-10-18
Rest 和 WebSocket API:
- 注意:根据我们的 SBE 政策,SBE 1:0 模式将于 2024 年 10 月 25 日被禁用 废止后 6 个月。
- 面向生产的 SBE 生命周期 已基于本次更改进行了更新。
2024-10-17
Exchange Information 的更改 (即 REST API 的 GET /api/v3/exchangeInfo
和 WebSocket API 的 exchangeInfo
)。
- 新的可选参数
showPermissionSets
可用于隐藏permissionsSets
的权限信息;这可用于减小消息大小。 - 新的可选参数
symbolStatus
用于仅显示具有指定状态的交易对。(例如:TRADING
,HALT
,BREAK
)
2024-09-02
- 现货未成交订单计数规则 已更新,解释了如何在下订单时减少未完成的订单数量。
2024-06-11
在 6月11日 UTC 时间 05:00, 我们将开始推出新功能 One-Triggers-the-Other
(OTO) 订单和 One-Triggers-a-One-Cancels-The-Other
(OTOCO) 订单。(请注意,我们可能需要花几个小时来部署到所有服务器。)
2024-06-06
此功能将在 6月6日 11:59 UTC 前上线。
order.cancelReplace
新加可选参数orderRateLimitExceededMode
。
2024-04-10
以下更新的生效时间已被推迟到 4月25日 05:00 UTC
- "交易规范信息"响应中的交易对权限信息已从字段
permissions
移至字段permissionSets
。 - 字段
permissions
将为空,并将在未来版本中删除。 - 以前,
"permissions":["SPOT","MARGIN"]
代表如果您的账户具有SPOT
或MARGIN
权限,您就可以在该交易对上下订单。
现在,等效项是"permissionSets":[["SPOT","MARGIN"]]
(请注意额外的方括号)。permissionSets
数组中的每个权限数组称为 "permission set"。 - 交易对的权限现在可以有更多权限类型。
例如,"permissionSets":[["SPOT","MARGIN"],["TRD_GRP_004","TRD_GRP_005"]]
指示除了支持以上提过的权限集,也接受TRD_GRP_004
或TRD_GRP_005
。
交易对的permissionSets
中可以有任意排列组合的权限集。 otoAllowed
现在将出现在exchangeInfo
上,指示该交易品种是否支持 One-Triggers-the-Other (OTO) 订单。
SBE
- 已发布新模式 2:0 spot_2_0.xml。 当前模式 1:0 spot_1_0.xml 将被弃用,并从根据我们模式弃用政策,会将在 6 个月内下线。
- 在 REST API 或 WebSocket API 上使用模式 1:0 时,消息
ExchangeInfoResponse
中的组"权限"将始终为空。在升级到模式 2:0后, 您才可以在permissionSets
组中查找权限信息。 - 最新模式仍将支持已弃用的 OCO 请求。
- 请注意,在模式 2:0 实际发布之前尝试使用它会导致错误。
2024-04-02
注意: 以下的变更将逐步推出,并预计需要大约一周的时间完成。
account.status
新加可选参数omitZeroBalances
,如果启用,则会隐藏所有零余额。- 以下请求的权重已从 10 增加到 25 (该规定将于2024年4月4日生效):
trades.recent
trades.historical
- WebSocket API 上现已弃用
orderList.place
请求。从今开始,请使用新的orderList.place.oco
请求(请注意,新接口使用不同的参数)。
以下内容将于发布日期 大约 一周后生效:
- "交易规范信息"响应中的交易对权限信息已从字段
permissions
移至字段permissionSets
。 - 字段
permissions
将为空,并将在未来版本中删除。 - 以前,
"permissions":["SPOT","MARGIN"]
代表如果您的账户具有SPOT
或MARGIN
权限,您就可以在该交易对上下订单。
现在,等效项是"permissionSets":[["SPOT","MARGIN"]]
(请注意额外的方括号)。permissionSets
数组中的每个权限数组称为 "permission set"。 - 交易对的权限现在可以有更多权限类型。
例如,"permissionSets":[["SPOT","MARGIN"],["TRD_GRP_004","TRD_GRP_005"]]
指示除了支持以上提过的权限集,也接受TRD_GRP_004
或TRD_GRP_005
。
交易对的permissionSets
中可以有任意排列组合的权限集。 otoAllowed
现在将出现在exchangeInfo
上,指示该交易品种是否支持 One-Triggers-the-Other (OTO) 订单。
SBE
- 已发布新模式 2:0 spot_2_0.xml。 当前模式 1:0 spot_1_0.xml 将被弃用,并从根据我们模式弃用政策,会将在 6 个月内下线。
- 在 REST API 或 WebSocket API 上使用模式 1:0 时,消息
ExchangeInfoResponse
中的组"权限"将始终为空。在升级到模式 2:0后, 您才可以在permissionSets
组中查找权限信息。 - 最新模式仍将支持已弃用的 OCO 请求。
- 请注意,在模式 2:0 实际发布之前尝试使用它会导致错误。
2024-02-28
将于 2024 年 3 月 5 日生效。
简单二进制编码 (SBE) 将部署到现货的 Rest API 和 WebSocket API 生产系统上。
更多关于SBE的信息,请参考常见问题解答 (FAQ)。
2024-02-08
现货的 WebSocket API 现在在测试网上支持简单二进制编码(SBE)。
SBE 模式已经更新了 WebSocket API 元数据,但并没有增加 schemaId
或者 version
。
仅在 REST API 上使用 SBE 的用户可以继续使用 SBE 模式
128b94b2591944a536ae427626b795000100cf1d
,或者更新到新提交的 SBE 模式。希望在 WebSocket API 上使用 SBE 的用户,需要更新到最新的 SBE 模式。
SBE 的 FAQ 已经更新。
2023-12-04
注意: 以下的变更将逐步推出,并预计需要大约一周的时间完成。
- 错误消息
Precision is over the maximum defined for this asset.
被改为Parameter '%s' has too much precision.
- 当参数的精度超出允许范围时,将返回此错误消息。例如,如果“基础资产”(
base asset
)精度为6,但是设置“quantity=0.1234567”,则会出现此错误消息。 - 这会影响所有具有以下参数的请求:
quantity
quoteOrderQty
icebergQty
limitIcebergQty
stopIcebergQty
price
stopPrice
stopLimitPrice
- 当参数的精度超出允许范围时,将返回此错误消息。例如,如果“基础资产”(
- 现在,请求查询OCO开单时会正确返回升序的结果。这会影响以下请求:
- WebSocket API:
openOrderList.status
- WebSocket API:
- 现在,当指定
startTime
或fromId
时,请求查询所有 OCO 订单会正确返回升序的结果。这会影响以下请求:- WebSocket API:
allOrderLists
- WebSocket API:
- 修复了一个错误。订单查询请求不再会对新下的订单错误返回
-2026 ORDER_ARCHIVED
错误。- WebSocket API:
order.status
- WebSocket API:
WebSocket API
- 新请求
account.commission
- 新增请求以允许会话身份验证: (请注意,这些请求只能使用Ed25519密钥。)
session.logon
session.logout
session.status
- 新请求
ticker.tradingDay
- 方法
avgPrice
新加字段closeTime
, 用于显示最后交易时间。 - 方法
klines
和uiKlines
新加可选参数timeZone
。 - 方法
order.test
和sor.order.test
新加可选参数computeCommissionRates
. - 修复了一个错误。之前在发送 ping 之前未经请求发送的 pongs 会导致断开连接。
以下将在发布日期后大约一周后生效:
- 交易对权限将仅影响下单,而不影响取消订单。
permissions
仍然适用于撤消挂单再下单(Cancel-Replace orders)(比如,如果您的账户有使用此请求下单的权限,则将不允许取消操作)。
2023-10-19
从 2023-10-19 00:00 UTC 开始生效
调高如下接口的请求权重:
WebSocket API | 条件 | 之前的权重 | 调整后权重 |
---|---|---|---|
trades.recent |
N/A | 2 | 10 |
depth |
Limit 1-100 | 2 | 5 |
Limit 101-500 | 10 | 25 | |
Limit 501-1000 | 20 | 50 | |
Limit 1001-5000 | 100 | 250 |
2023-08-25
exchangeInfo
中的RAW_REQUESTS
被移除,新增了用于表示WebSocket连接数限制的CONNECTIONS
.
下面的变更会在UTC时间 2023-08-25 00:00 上线
- WebSocket API 的
CONNECTIONS
被调整为每5分钟300. - WebSocket API 的
REQUEST_WEIGHT
调整为每分钟6,000. - 之前连接到 WebSocket API 的权重为1. 现权重调整到 2.
- 如下请求的权重被调整:
请求 | 之前的权重 | 现在的权重 |
---|---|---|
order.status |
2 | 4 |
orderList.status |
2 | 4 |
openOrders.status - 带 symbol |
3 | 6 |
openOrders.status - 不带 symbol |
40 | 80 |
openOrderLists.status |
3 | 6 |
allOrders |
10 | 20 |
allOrderLists |
10 | 20 |
myTrades |
10 | 20 |
myAllocations |
10 | 20 |
myPreventedMatches - 使用 preventedMatchId |
1 | 2 |
myPreventedMatches - 使用 orderId |
10 | 20 |
account.status |
10 | 20 |
account.rateLimits.orders |
20 | 40 |
exchangeInfo |
10 | 20 |
depth - Limit 1-100 |
1 | 2 |
depth - Limit 101-500 |
5 | 10 |
depth - Limit 501-1000 |
10 | 20 |
depth - Limit 1001-5000 |
50 | 100 |
trades.aggregate |
1 | 2 |
trades.recent |
1 | 2 |
trades.historical |
5 | 10 |
klines |
1 | 2 |
uiKlines |
1 | 2 |
ticker.book - 带 symbol |
1 | 2 |
ticker.book - 不带 symbol 或者 带 symbols |
2 | 4 |
ticker.price - 带 symbol |
1 | 2 |
ticker.price - 不带 symbol 或者 带 symbols |
2 | 4 |
ticker.24hr - 带 symbol 或者 ** symbols 带 1-20 交易对** |
1 | 2 |
ticker.24hr - symbols 带 21-100 交易对 |
20 | 40 |
ticker.24hr - 不带 symbol 或者 symbols 带101个或者更多交易对 |
40 | 80 |
avgPrice |
1 | 2 |
ticker |
2 | 4 |
ticker - 请求的最大权重 |
100 | 200 |
userDataStream.start |
1 | 2 |
userDataStream.ping |
1 | 2 |
userDataStream.stop |
1 | 2 |
2023-08-08
智能订单路由(Smart Order Routing:SOR)添加到 API 中。您可以在SOR 常见问题文档中找到更多详细信息。 具体上线时间请关注相关公告。
exchangeInfo
变动:- 返回数据中添加新字段:
sors
, 用于描述交易中是否使用了 SOR。
- 返回数据中添加新字段:
myPreventedMatches
变动:- 对于所有的 Prevented Matches, 返回数据中添加新字段
makerSymbol
。
- 对于所有的 Prevented Matches, 返回数据中添加新字段
- 为了在下单时使用 SOR 而添加的新请求:
sor.order.place
sor.order.test
- 添加新请求
myAllocations
2023-07-18
- 现在支持使用 Ed25519 类型的 API key ( UI 会在本周发布更新支持 )
- Ed25519 API keys 是 RSA API keys 的替代品,使用非对称加密技术来验证您的 API 请求。
- 我们建议切换到 Ed25519 以提高性能和安全性。
详情请参考API Key 类型。
- 文档已更新,包括了有关如何使用 Ed25519 key 对有效载荷进行签名的说明。
2023-07-11
注意: 所有更改都将逐步推出,可能需要一周时间才能完成。
错误消息的变动:
- 之前当发送重复交易对时,会返回错误信息: "Mandatory parameter symbols was not sent, was empty/null, or malformed."
- 现在则返回消息: "Symbol is present multiple times in the list", with a new error code
-1151
- 受影响的接口:
exchangeInfo
ticker.24hr
ticker.price
ticker.book
修复一个bug,当查询没有被存档的订单时候,可能返回错误消息称已经被存档。
account.status
变动:- 返回数据中添加新字段
preventSor
. - 返回数据中添加用户ID的新字段
uid
.
- 返回数据中添加新字段
trades.historical
变动:- 鉴权类型从
MARKET_DATA
变更为NONE
. - 请求中不需要设置
apiKey
.
- 鉴权类型从
修改了几个bugs: 当下单时设置
type=MARKET
和quoteOrderQty
, 也被称为“反向市价单”:- 当处于极端市场情况下, 订单不会返回部分成交,或者成交的数量为0甚至是负数.
- 当这种反向市价单的成交数量超过交易对的
maxQty
, 订单会因为违反MARKET_LOT_SIZE
过滤器而被拒绝.
修复一个OCO订单的bug: 当使用
trailingDelta
时候, 当任何leg被触发时,trailingTime
值可能不正确.这些接口的返回数据中添加新字段
transactTime
:order.cancel
order.cancelReplace
openOrders.cancelAll
orderList.cancel
2023-03-13
注意: 所有更改都将逐步推出到我们的所有服务器,并可能需要一周时间才能完成。
- 某些问题的错误消息已经改进,以便更轻松地进行解决。
情况 | 之前的错误消息 | 新错误消息 |
---|---|---|
由于交易权限被禁用,账户无法下订单或取消订单。 | This action is disabled on this account. | This account may not place or cancel orders. |
当配置在交易对上的权限与账户上的权限不匹配时。 | This symbol is not permitted for this account. | |
当账户在其没有权限的交易对上下订单时。 | This symbol is restricted for this account. | |
当 symbol 不在 TRADING 时下订单。 | Unsupported order combination. | This order type is not possible in this trading phase. |
在不支持 IOC 或 FOK 的交易阶段上使用 timeinForce = IOC 或 FOK 下订单时。 | Limit orders require GTC for this phase. |
更正了查询归档订单的错误消息:
- 之前,如果查询了一个归档订单(即状态为
CANCELED
或EXPIRED
,executedQty
== 0 而且最后的更新在 90 天以前),错误消息将是:{"code": -2013,"msg": "Order does not exist."}
- 现在,错误消息为:
{"code": -2026,"msg": "Order was canceled or expired with no executed qty over 90 days ago and has been archived."}
- 之前,如果查询了一个归档订单(即状态为
API 请求使用
startTime
和endTime
的行为:- 之前,如果
startTime
==endTime
,一些请求会失败。 - 现在,所有接受
startTime
和endTime
的 API 请求会允许这些参数相等。这适用于以下接口:- Rest API
GET /api/v3/aggTrades
GET /api/v3/klines
GET /api/v3/allOrderList
GET /api/v3/allOrders
GET /api/v3/myTrades
- Websocket API
trades.aggregate
klines
allOrderList
allOrders
myTrades
- Rest API
- 之前,如果
如果用户的IP地址因违反 IP 速率限制(状态码为
418
)而被禁止,那么连接到 WebSocket API 的用户将被断开连接。
虽然以下更改将在发布日期后 大约一周内生效,但是与其相关的文档已经被更改了:
- 过滤器评估的更改:
- 之前的行为:
LOT_SIZE
和MARKET_LOT_SIZE
要求 (quantity
-minQty
) %stepSize
== 0。 - 新行为: 现在已更改为 (
quantity
%stepSize
) == 0。
- 之前的行为:
- 使用
quoteOrderQty
的MARKET
订单的错误修复:- 之前的行为: 订单的状态将始终为
FILLED
,即使订单没有完全成交。 - 新行为: 如果订单由于流动性不足而没有完全成交,则订单状态将为
EXPIRED
,仅当订单完全成交时状态为FILLED
。
- 之前的行为: 订单的状态将始终为
order.cancel
和order.cancelReplace
的更改:- 新的可选参数
cancelRestrictions
,该参数用于决定是否能成功取消状态为NEW
或PARTIALLY_FILLED
的订单。 - 如果由于
cancelRestrictions
而取消订单失败,错误将是:{"code": -2011,"msg": "Order was not canceled due to cancel restrictions."}
- 新的可选参数
2023-02-17
WebSocket频率限制变动
Websocket API
现在限制每个IP地址、每5分钟可以发送连接请求的上限是300次。
2023-01-26
根据此公告,Self-Trade Prevention 将在 2023-01-26 08:00 UTC 发布。
2023-01-23
实际发布日期待定
新功能:Self-Trade Prevention(STP)会添加到系统中。此功能将阻止订单与来自同一账户或者同一 tradeGroupId
账户的订单交易。
请使用现货 REST API 的 GET /api/v3/exchangeInfo
或 Websocket API 的 exchangeInfo
看 STP 的状态。
- 新的订单状态:
EXPIRED_IN_MATCH
- 订单由于 STP 触发而过期。 - 新的请求:
myPreventedMatches
- 获取由于 STP 触发而过期的订单。 - 新的可选参数
selfTradePreventionMode
已添加到以下的请求:order.place
orderList.place
order.cancelReplace
- 如果有防止自我交易,将为所有下订单的请求会出现的新响应:
tradeGroupId
- 仅当账户配置为tradeGroupId
时才会出现。preventedQuantity
- 被防止交易的订单数量。preventedMatches
数组会有以下的字段:preventedMatchId
makerOrderId
price
takerPreventedQuantity
- 仅当selfTradePreventionMode
设置为EXPIRE_TAKER
或EXPIRE_BOTH
时才会出现。makerPreventedQuantity
- 仅当selfTradePreventionMode
设置为EXPIRE_MAKER
或EXPIRE_BOTH
时才会出现。
- 如果订单因 STP 触发而过期,以下查询订单接口的响应中可以出现新的字段
preventedMatchId
和preventedQuantity
:order.status
openOrders.status
allOrders
2022-12-28
- 添加如何使用 RSA key 签署请求。
2012-12-26
- 现货的 Websocket API 发布到生产系统中。
- 现货的 Websocket API 可以通过URL:
wss://ws-api.binance.com/ws-api/v3
来访问。
2022-12-15
现货 WebSocket API 现在可以在 SPOT 测试网上使用。
- WebSocket API 允许通过 WebSocket 连接下订单、取消订单等。
- WebSocket API 是一个 独立 于 WebSocket 市场数据流的服务。 即,下订单和收听市场数据需要两个独立的 WebSocket 连接。
- WebSocket API 与 REST API 相同过滤器和速率限制规则。
- WebSocket API 与 REST API 提供相同的功能,接受相同的参数,返回相同的状态和错误代码。
WEBSOCKET API 会晚些时候在生产系统中可用。
介绍
API Key 设置
- 很多接口需要API Key才可以访问。请参考这个页面来设置API Key。
- 设置API Key的同时,为了安全,建议设置IP访问白名单。
- 永远不要把你的 API key/secret key 告诉给任何人
API Key 权限设置
- 新创建的API的默认权限是
只读
。 - 如果需要通过API提款, 需要在UI修改权限, 选中
允许提现
。
现货测试网
用户可以使用现货的测试网来体验SPOT
交易。目前只能通过API测试交易。
更多信息请参考现货测试网。
联系我们
- 币安API电报群
- 咨询关于API或者Websockets性能方面的问题.
- 咨询文档中没有提及的API问题.
- 币安开发者社区
- 咨询关于API/Websockets代码实现,或者任何API/Websockets的问题.
- 币安客服
- 咨询关于账户,钱包,2FA等.
基本信息
API 基本信息
- 本篇所列出的 wss 接口的 base URL:
wss://ws-api.binance.com:443/ws-api/v3
- 如果使用标准443端口时遇到问题,可以使用替代端口9443。
- 现货测试网的 base URL 是
wss://testnet.binance.vision/ws-api/v3
- 每个到 base URL 的链接有效期不超过24小时,请妥善处理断线重连。
- Websocket 服务器每3分钟发送Ping消息。
- 如果Websocket服务器在10分钟之内没有收到Pong消息应答,连接会被断开。
- 当客户收到ping消息,必需尽快回复pong消息,同时payload需要和ping消息一致。
- 未经请求的pong消息是被允许的,但是不会保证连接不断开。对于这些pong消息,建议payload为空
- 响应中如有数组,数组元素以时间时间顺序排列,越早的数据越提前。
- 除非另有说明,所有与时间戳相关的字段均以UTC的毫秒为单位。
- 除非另有说明,所有字段名称和值都大小写敏感。
请求格式
请求必须在 text 帧 中以 JSON 格式发送,每帧一个请求。
请求示例:
{
"id": "e2a85d9f-07a5-4f94-8d5f-789dc3deb097",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "BUY",
"type": "LIMIT",
"price": "0.1",
"quantity": "10",
"timeInForce": "GTC",
"timestamp": 1655716096498,
"apiKey": "T59MTDLWlpRW16JVeZ2Nju5A5C98WkMm8CSzWC4oqynUlTm1zXOxyauT8LmwXEv9",
"signature": "5942ad337e6779f2f4c62cd1c26dba71c91514400a24990a3e7f5edec9323f90"
}
}
请求字段:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
INT / STRING / null |
YES | 任意的 ID 用于匹配对请求的响应 |
method |
STRING | YES | 请求函数名称 |
params |
OBJECT | NO | 请求参数。如果没有参数可以省略 |
- 请求
id
是任意的。可以使用 UUID、顺次 ID、当前时间戳等。 服务器不会以任何方式解释id
,只是在响应中回显它。
可以在一个会话中自由重复使用 ID,不过请注意不要一次发送多个具有相同 ID 的请求,因为否则可能无法区分响应。
请求函数名称可以以显式版本为前缀,例如:
"v3/order.place"
params
的顺序不重要。
响应格式
响应在 text 帧 中以 JSON 格式返回,每帧一个响应。
成功响应示例:
{
"id": "e2a85d9f-07a5-4f94-8d5f-789dc3deb097",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12510053279,
"orderListId": -1,
"clientOrderId": "a097fe6304b20a7e4fc436",
"transactTime": 1655716096505,
"price": "0.10000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1655716096505,
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 12
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 4043
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 321
}
]
}
失败响应示例:
{
"id": "e2a85d9f-07a5-4f94-8d5f-789dc3deb097",
"status": 400,
"error": {
"code": -2010,
"msg": "Account has insufficient balance for requested action."
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 13
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 4044
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 322
}
]
}
响应字段:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
INT / STRING / null |
YES | 与原来请求的ID一样 |
status |
INT | YES | 响应状态。请看 状态代码 |
result |
OBJECT / ARRAY | YES | 响应内容。请求成功则显示 |
error |
OBJECT | 错误描述。请求失败则显示 | |
rateLimits |
ARRAY | NO | 速率限制状态。请看 速率限制 |
状态代码
status
字段的状态代码与HTTP的状态代码相同。
一些常见状态代码:
200
代码指示成功响应。4XX
错误码用于指示错误的请求内容、行为、格式。问题在于请求者。400
– 错误码表示请求失败,请参阅error
了解原因。403
– 错误码表示违反 WAF 限制(Web应用程序防火墙)。409
– 错误码表示请求有一部分成功,一部分失败。请参阅error
了解更多详细。418
– 表示收到 429 后继续访问,于是被封了。429
– 错误码表示警告访问频次超限,即将被封IP。
5XX
错误码用于指示Binance服务侧的问题。- 重要:如果响应包含 5xx 状态码,并不一定意思请求失败。 执行状态为 unknown,请求可能实际成功。 请使用 query 函数确认状态。 建议建立一个新 WebSocket 连接用于确认状态。
有关错误代码和消息的列表,请参阅 错误代码。
限制
连接数量限制
每IP地址、每5分钟最多可以发送300次连接请求。
速率限制基本信息
exchangeInfo
有包含与速率限制相关的信息。- 根据不同的间隔,有多种频率限制类型。
- 从响应中的可选
rateLimits
字段,能看到当前的频率限制状态。 - 如果违反任何速率限制(访问频次限制或下单速率限制),将收到429。
如何咨询频率限制
频率限制状态的响应可能如下所示:
{
"id": "7069b743-f477-4ae3-81db-db9b8df085d2",
"status": 200,
"result": {
"serverTime": 1656400526260
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 70
}
]
}
rate Limits
数组描述了受请求影响的所有当前的速率限制。
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
rateLimitType |
ENUM | YES | 频率限制类型: REQUEST_WEIGHT , ORDERS |
interval |
ENUM | YES | 频率限制间隔: SECOND , MINUTE , HOUR , DAY |
intervalNum |
INT | YES | 频率限制间隔乘数 |
limit |
INT | YES | 每个间隔的请求限制 |
count |
INT | YES | 每个间隔的当前使用情况 |
频率限制按间隔计算。
例如,1 MINUTE
间隔表示每分钟开始。
在 00:01:23.456 提交的请求计入 00:01:00 分钟的限制。
一旦 00:02:00 分钟开始,计数将再次重置为零。
其他间隔的行为方式类似。
例如,1 DAY
频率限制是在每天 00:00 UTC 重置,并且 10 SECOND
间隔重置为每分钟的 00、10、20...秒。
API 有多种频率限制间隔。 如果您用完了较短的间隔但较长的间隔仍然允许请求,您将不得不等待较短的间隔到期并重置。 如果你用完了更长的间隔,你将不得不等待那个间隔重置,即使较短的频率限制计数为零。
如何显示/隐藏频率限制信息
默认情况下,每个响应都包含 rateLimits
字段。
但是,频率限制信息可能非常大。
如果您对每个请求的详细频率限制状态不感兴趣,可以从响应中省略 rateLimits
字段。
- 请求中的可选
returnRateLimits
boolean 参数。
使用 returnRateLimits
参数控制是否包含 rateLimits
字段以响应单个请求。
默认请求和响应:
{"id":1,"method":"time"}
{"id":1,"status":200,"result":{"serverTime":1656400526260},"rateLimits":[{"rateLimitType":"REQUEST_WEIGHT","interval":"MINUTE","intervalNum":1,"limit":6000,"count":70}]}
没有频率限制状态的请求和响应:
{"id":2,"method":"time","params":{"returnRateLimits":false}}
{"id":2,"status":200,"result":{"serverTime":1656400527891}}
- 连接 URL 中可选的
returnRateLimits
boolean 参数。
如果您希望在默认情况下从所有响应中省略 rateLimits
,可以在 query string 中使用 returnRateLimits
参数:
wss://ws-api.binance.com/ws-api/v3?returnRateLimits=false
这将使通过此连接发出的所有请求的行为就像您已传了 "returnRateLimits":false
一样。
如果您想查看特定请求的频率限制,您需要特定传 "returnRateLimits":true
参数。
注意: 如果您在响应中隐藏 rateLimits
字段,您的请求仍然还是会受到频率限制的。
IP 访问限制
- 每个请求都有一个特定的 权重,它会添加到您的访问限制中。
- 大多数请求是1个权重单位。越消耗资源的接口权重就会越大。
- 连接到 WebSocket API 会用到1个权重。
- 当前权重使用由
REQUEST_WEIGHT
频率限制类型指示。 - 请使用
exchangeInfo
请求来跟踪当前的重量限制。 - 权重是基于每个 IP 地址累积的,并由来自该地址的所有连接共享。
- 如果超多限制,客服端会收到
429
。- 这错误代码表示您有责任停止发送请求,不得滥用API。
- 响应会包含一个
retryAfter
字段,指示在什么时候您能重试。
- 屡次违反速率限制或者在收到429后未能退缩将导致自动 IP 封禁和断开连接。
- 被禁止 IP 地址的请求失败,状态为
418
。 retryAfter
字段表示解除禁令的timestamp。
- 被禁止 IP 地址的请求失败,状态为
- 频繁违反限制的封禁时间会逐渐延长,从最短2分钟到最长3天。
表示在1分钟内使用了(6000权重限制中的)70权重的成功响应:
{
"id": "7069b743-f477-4ae3-81db-db9b8df085d3",
"status": 200,
"result": [],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 70
}
]
}
表示已被封禁且封禁将在 epoch
1659146400000
解锁的失败响应::
{
"id": "fc93a61a-a192-4cf4-bb2a-a8f0f0c51e06",
"status": 418,
"error": {
"code": -1003,
"msg": "Way too much request weight used; IP banned until 1659146400000. Please use WebSocket Streams for live updates to avoid bans.",
"data": {
"serverTime": 1659142907531,
"retryAfter": 1659146400000
}
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2411
}
]
}
未成交订单计数
- 成功下单将更新
订单
速率限制类型。 - 被拒绝或不成功的订单可能会也可能不会更新
订单
速率限制类型。 - 请注意,如果您的订单一直顺利完成交易,您可以通过 API 持续下订单。更多信息,请参见 现货未成交订单计数规则。
- 使用
account.rateLimits.orders
请求来跟踪您在此时间间隔内下了多少订单。 - 如果超过此值,请求将失败,状态为
429
。- 此状态代码表示您应退出并停止向 API 滥发信息。
- 状态为
429
的响应会包含retryAfter
字段,用以指示何时可以重试请求。
- 这是按 每一个账户 维护的,并由该账户的所有 API 密钥共享。
表示在10秒内下了12个订单和在24小时内下了4043个订单的成功响应:
{
"id": "e2a85d9f-07a5-4f94-8d5f-789dc3deb097",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12510053279,
"orderListId": -1,
"clientOrderId": "a097fe6304b20a7e4fc436",
"transactTime": 1655716096505,
"price": "0.10000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1655716096505,
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 12
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 4043
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 321
}
]
}
请求鉴权类型
- 每个函数都有自己的鉴权类型,鉴权类型决定了访问时应当进行何种鉴权。
- 鉴权类型会在本文档中各个函数名称旁声明。比如 下新的订单 (TRADE)。
- 如果没有特殊声明即默认为 NONE
鉴权类型 | API key | 签名 | 描述 |
---|---|---|---|
NONE |
公开市场数据 | ||
TRADE |
required | required | 在交易所交易,下单和取消订单 |
USER_DATA |
required | required | 私人账户信息,例如订单状态和交易历史 |
USER_STREAM |
required | 管理用户数据流订阅 |
- 函数鉴权需要指定和验证有效的 API key。
- API key 可以在币安账户的 API 管理 页面创建。
- API key和密钥都是大小写敏感的。 切勿与任何人共享它们。 如果您发现您的账户有异常活动,请立即撤销所有keys并联系币安客服。
- API key 可以配置为仅允许访问某些类型的函数鉴权。
- 例如,可以拥有一个 API key 有
TRADE
的权限进行交易,同时使用另一个 API key 有USER_DATA
的权限来监控您的订单状态。 - 默认情况下,API key 不能
交易
。您需要先在 API 管理中开通交易权限。
- 例如,可以拥有一个 API key 有
TRADE
和USER_DATA
请求也称为SIGNED
请求。
SIGNED (TRADE 和 USER_DATA) 请求鉴权
- 为了授权请求,
SIGNED
请求必须带signature
参数。 - 请参考 SIGNED 请求示例 (HMAC), SIGNED 请求示例 (RSA) 和 SIGNED 请求示例 (Ed25519) 理解如何计算签名。
时间同步安全
SIGNED
请求也必须发timestamp
参数,其值应当是请求发送时刻的 unix 时间戳(毫秒)。还可以发送一个可选参数
recvWindow
,指定请求保持有效的时间。- 如果
recvWindow
未发送,默认为5000毫秒。 - 最大
recvWindow
为60000毫秒。
- 如果
请求处理逻辑:
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
// 处理请求
} else {
// 拒绝请求
}
关于交易时效性 互联网状况并不完全稳定可靠,因此你的程序本地到币安服务器的时延会有抖动, 这是我们设置 recvWindow
的目所在。如果你从事高频交易,对交易时效性有较高的要求,可以灵活设置 recvWindow
以达到你的要求。
建议使用5000毫秒以下的 recvWindow
!
SIGNED 请求示例 (HMAC)
这是有关如何用 HMAC secret key 签署请求的分步指南。
示例 API key 和 secret key:
Key | Value |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
警告:请勿与任何人共享您的私钥。
示例密钥仅供参考。
目前缺少
signature
参数的请求示例:
{
"id": "4885f793-e5ad-4c3b-8f6c-55d891472b71",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"quantity": "0.01000000",
"price": "52000.00",
"newOrderRespType": "ACK",
"recvWindow": 100,
"timestamp": 1645423376532,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "------ 未填写 ------"
}
}
第一步。签名效载荷示例:
apiKey=vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A&newOrderRespType=ACK&price=52000.00&quantity=0.01000000&recvWindow=100&side=SELL&symbol=BTCUSDT&timeInForce=GTC×tamp=1645423376532&type=LIMIT
第一步:创建签名内容
除了 signature
之外,获取所有请求 params
,然后按名称按字母顺序进行排序:
参数 | 取值 |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
newOrderRespType | ACK |
price | 52000.00 |
quantity | 0.01000000 |
recvWindow | 100 |
side | SELL |
symbol | BTCUSDT |
timeInForce | GTC |
timestamp | 1645423376532 |
type | LIMIT |
将参数格式化为 参数=取值
对并用 &
分隔每个参数。
第二步。签名示例:
$ echo -n 'apiKey=vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A&newOrderRespType=ACK&price=52000.00&quantity=0.01000000&recvWindow=100&side=SELL&symbol=BTCUSDT&timeInForce=GTC×tamp=1645423376532&type=LIMIT' \
| openssl dgst -hex -sha256 -hmac 'NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j'
cc15477742bd704c29492d96c7ead9414dfd8e0ec4a00f947bb5bb454ddbd08a
第二步:计算签名
- 将
secretKey
解释为 ASCII 数据,将其用作 HMAC-SHA-256 的 key。 - 将签名有效负载签名为 ASCII 数据。
- 将 HMAC-SHA-256 输出编码为 hex string。
请注意,apiKey
,secretKey
和有效负载是大小写敏感的。
生成的签名值是不区分大小写的。
可以使用 OpenSSL 交叉检查您的签名算法实现:
第三步。完整请求:
{
"id": "4885f793-e5ad-4c3b-8f6c-55d891472b71",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"quantity": "0.01000000",
"price": "52000.00",
"newOrderRespType": "ACK",
"recvWindow": 100,
"timestamp": 1645423376532,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "cc15477742bd704c29492d96c7ead9414dfd8e0ec4a00f947bb5bb454ddbd08a"
}
}
第三步:添加 signature
到 params
中
最后,使用生成的签名完成请求。
SIGNED 请求示例 (RSA)
Key | Value |
---|---|
apiKey | CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ |
对于这个例子,Private Key 将被引用为 test-prv-key.pem
。
警告:请勿与任何人共享您的私钥。
示例密钥仅供参考。
目前缺少
signature
参数的请求示例:
{
"id": "4885f793-e5ad-4c3b-8f6c-55d891472b71",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"quantity": "0.01000000",
"price": "52000.00",
"newOrderRespType": "ACK",
"recvWindow": 100,
"timestamp": 1645423376532,
"apiKey": "CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ",
"signature": "------ FILL ME ------"
}
}
第一步。签名效载荷示例:
apiKey=CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ&newOrderRespType=ACK&price=52000.00&quantity=0.01000000&recvWindow=100&side=SELL&symbol=BTCUSDT&timeInForce=GTC×tamp=1645423376532&type=LIMIT
第一步: 计算 Payload
除了 signature
,获取请求的所有其它 params
,然后按名称字母顺序对它们进行排序:
参数 | 取值 |
---|---|
apiKey | CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ |
newOrderRespType | ACK |
price | 52000.00 |
quantity | 0.01000000 |
recvWindow | 100 |
side | SELL |
symbol | BTCUSDT |
timeInForce | GTC |
timestamp | 1645423376532 |
type | LIMIT |
将参数格式化为 参数=取值
对并用 &
分隔每个参数。
第二步。签名示例:
$ echo -n 'apiKey=CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ&newOrderRespType=ACK&price=52000.00&quantity=0.01000000&recvWindow=100&side=SELL&symbol=BTCUSDT&timeInForce=GTC×tamp=1645423376532&type=LIMIT' \
| openssl dgst -sha256 -sign test-prv-key.pem \
| openssl enc -base64 -A
OJJaf8C/3VGrU4ATTR4GiUDqL2FboSE1Qw7UnnoYNfXTXHubIl1iaePGuGyfct4NPu5oVEZCH4Q6ZStfB1w4ssgu0uiB/Bg+fBrRFfVgVaLKBdYHMvT+ljUJzqVaeoThG9oXlduiw8PbS9U8DYAbDvWN3jqZLo4Z2YJbyovyDAvDTr/oC0+vssLqP7NmlNb3fF3Bj7StmOwJvQJTbRAtzxK5PP7OQe+0mbW+D7RqVkUiSswR8qJFWTeSe4nXXNIdZdueYhF/Xf25L+KitJS5IHdIHcKfEw3MQzHFb2ZsGWkjDQwxkwr7Noi0Zaa+gFtxCuatGFm9dFIyx217pmSHtA==
第二步:计算签名
- 将签名有效负载编码为 ASCII 数据。
- 使用带有 SHA-256 hash 函数的 RSASSA-PKCS1-v1_5 算法对 payload 进行签名。
- 将输出编码为 base64 string。
请注意,apiKey
, payload 和生成的签名值都是大小写敏感的。
您可以使用 OpenSSL 交叉检查您的签名算法。
第三步。完整请求:
{
"id": "4885f793-e5ad-4c3b-8f6c-55d891472b71",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"quantity": "0.01000000",
"price": "52000.00",
"newOrderRespType": "ACK",
"recvWindow": 100,
"timestamp": 1645423376532,
"apiKey": "CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ",
"signature": "OJJaf8C/3VGrU4ATTR4GiUDqL2FboSE1Qw7UnnoYNfXTXHubIl1iaePGuGyfct4NPu5oVEZCH4Q6ZStfB1w4ssgu0uiB/Bg+fBrRFfVgVaLKBdYHMvT+ljUJzqVaeoThG9oXlduiw8PbS9U8DYAbDvWN3jqZLo4Z2YJbyovyDAvDTr/oC0+vssLqP7NmlNb3fF3Bj7StmOwJvQJTbRAtzxK5PP7OQe+0mbW+D7RqVkUiSswR8qJFWTeSe4nXXNIdZdueYhF/Xf25L+KitJS5IHdIHcKfEw3MQzHFb2ZsGWkjDQwxkwr7Noi0Zaa+gFtxCuatGFm9dFIyx217pmSHtA=="
}
}
第三步:在请求的 params
参数添加签名值
最后,使用生成的签名完成请求。
SIGNED 请求示例 (Ed25519)
参数 | 取值 |
---|---|
symbol | BTCUSDT |
side | SELL |
type | LIMIT |
timeInForce | GTC |
quantity | 1 |
price | 0.2 |
timestamp | 1668481559918 |
#!/usr/bin/env python3
import base64
import time
import json
from cryptography.hazmat.primitives.serialization import load_pem_private_key
from websocket import create_connection
# 设置身份验证:
API_KEY='替换成您的 API Key'
PRIVATE_KEY_PATH='test-prv-key.pem'
# 加载 private key。
# 在这个例子中,private key 没有加密,但我们建议使用强密码以提高安全性。
with open(PRIVATE_KEY_PATH, 'rb') as f:
private_key = load_pem_private_key(data=f.read(), password=None)
# 设置请求参数:
params = {
'apiKey': API_KEY,
'symbol': 'BTCUSDT',
'side': 'SELL',
'type': 'LIMIT',
'timeInForce': 'GTC',
'quantity': '1.0000000',
'price': '0.20'
}
# 参数中加时间戳:
timestamp = int(time.time() * 1000) # 以毫秒为单位的 UNIX 时间戳
params['timestamp'] = timestamp
# 参数中加签名:
payload = '&'.join([f'{param}={value}' for param, value in sorted(params.items())])
signature = base64.b64encode(private_key.sign(payload.encode('ASCII')))
params['signature'] = signature.decode('ASCII')
# 发送请求:
request = {
'id': 'my_new_order',
'method': 'order.place',
'params': params
}
ws = create_connection('wss://ws-api.binance.com:443/ws-api/v3')
ws.send(json.dumps(request))
result = ws.recv()
ws.close()
print(result)
右边有 Python 脚本来示例如何使用 Ed25519 key 签名。
会话身份验证
注意: 仅支持 Ed25519 密钥用于此功能。
如果你不想在每个单独的请求中指定apiKey
和signature
,你可以为有效的WebSocket会话进行API密钥身份验证。
一旦完成身份验证,你将不需在需要它们的请求中指定apiKey
和signature
。
这些请求将代表拥有已验证API密钥的帐户执行。
注意: 对于SIGNED
请求,你仍需要指定timestamp
参数。
连接后进行身份验证
你可以使用会话身份验证请求对已经建立的连接进行身份验证:
session.logon
– 进行身份验证,或更改与连接相关联的API密钥。session.status
– 检查连接状态和当前API密钥。session.logout
– 忘记与连接关联的API密钥。
关于吊销API密钥:
如果在活动会话期间,由于 任何 原因(例如IP地址未被加入白名单、API密钥被删除、API密钥没有正确的权限等),在下一个请求后,会话将被吊销,并显示以下错误消息:
{
"id": null,
"status": 401,
"error": {
"code": -2015,
"msg": "Invalid API-key, IP, or permissions for action."
}
}
授权 临时 请求
WebSocket连接只能通过一个API密钥进行身份验证。
默认情况下,经过身份验证的API密钥将用于需要apiKey
参数的请求。
但是,你始终可以为单个请求明确指定apiKey
和signature
,覆盖已认证的API密钥,以使用不同的API密钥授权特定请求。
例如,你可能希望用默认密钥来验证 USER_DATA
,但在下单时使用TRADE
密钥来签名。
数据源
API 系统是异步的。响应中一些延迟是正常和预期的。
每种函数都会有一个数据源, 用来指示数据的来源,以及它的最新程度。
数据源 | 延迟 | 描述 |
---|---|---|
撮合引擎 | 最低 | 表示撮合引擎直接产生响应 |
缓存 | 低 | 表示数据来源于内部或者外部的缓存 |
数据库 | 中度 | 表示数据直接来源于数据库 |
公共 API 定义
术语
这些术语将在整个文档中使用,因此特别建议新用户阅读。
base asset
是指作为交易对中的quantity
资产。对于交易对 BTCUSDT,BTC 将是base asset
。quote asset
是指作为交易对中的price
资产。对于交易对 BTCUSDT,USDT 将是quote asset
。
ENUM 定义
交易对状态 (status):
PRE_TRADING
TRADING
POST_TRADING
END_OF_DAY
HALT
AUCTION_MATCH
BREAK
账户和交易对权限 (permissions):
SPOT
MARGIN
LEVERAGED
TRD_GRP_002
TRD_GRP_003
TRD_GRP_004
TRD_GRP_005
TRD_GRP_006
TRD_GRP_007
TRD_GRP_008
TRD_GRP_009
TRD_GRP_010
TRD_GRP_011
TRD_GRP_012
TRD_GRP_013
TRD_GRP_014
TRD_GRP_015
TRD_GRP_016
TRD_GRP_017
TRD_GRP_018
TRD_GRP_019
TRD_GRP_020
TRD_GRP_021
TRD_GRP_022
TRD_GRP_023
TRD_GRP_024
TRD_GRP_025
订单状态 (status):
状态 | 描述 |
---|---|
NEW |
订单被交易引擎接受 |
PARTIALLY_FILLED |
部分订单被成交 |
FILLED |
订单完全成交 |
CANCELED |
用户撤销了订单 |
PENDING_CANCEL |
撤销中(目前并未使用) |
REJECTED |
订单没有被交易引擎接受,也没被处理 |
EXPIRED |
订单被交易引擎取消 (比如 LIMIT FOK 订单没有成交,LIMIT IOC 或者 市价单 没有完全成交) 强平期间被取消的订单 (交易所维护期间被取消的订单) |
EXPIRED_IN_MATCH |
表示订单由于 STP 触发而过期(e.g. 带有 EXPIRE_TAKER 的订单与订单簿上属于同账户或同 tradeGroupId 的订单撮合) |
订单列表状态 (listStatusType):
状态 | 描述 |
---|---|
RESPONSE |
当ListStatus 响应失败的操作时使用。(订单完成或取消订单) |
EXEC_STARTED |
当已经下单或者订单有更新时 |
ALL_DONE |
当订单执行结束或者不在激活状态 |
订单列表的订单状态 (listOrderStatus):
状态 | 描述 |
---|---|
EXECUTING |
当已经下单或者订单有更新时 |
ALL_DONE |
当订单执行结束或者不在激活状态 |
REJECT |
当订单状态响应失败(订单完成或取消订单) |
指定订单的类型
* OCO
* OTO
分配类型
SOR
工作平台
EXCHANGE
SOR
常用请求信息
测试连通性
请求:
{
"id": "922bcc6e-9de8-440d-9e84-7c80933a8d0d",
"method": "ping"
}
响应:
{
"id": "922bcc6e-9de8-440d-9e84-7c80933a8d0d",
"status": 200,
"result": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
测试能否联通 WebSocket API。
注意:
您也可以使用常规 WebSocket ping 帧来测试连通性,
WebSocket API 将尽快以 pong 帧响应。
ping
请求和 time
是在应用程序中测试请求-响应处理的安全方法。
权重(IP): 1
参数: NONE
数据源: 缓存
检查服务器时间
请求:
{
"id": "187d3cb2-942d-484c-8271-4e2141bbadb1",
"method": "time"
}
响应:
{
"id": "187d3cb2-942d-484c-8271-4e2141bbadb1",
"status": 200,
"result": {
"serverTime": 1656400526260
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
测试与 WebSocket API 的连通性并获取当前服务器时间。
权重(IP): 1
参数: NONE
数据源: 缓存
交易规范信息
请求:
{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"method": "exchangeInfo",
"params": {
"symbols": ["BNBBTC"]
}
}
响应:
{
"id": "5494febb-d167-46a2-996d-70533eb4d976",
"status": 200,
"result": {
"timezone": "UTC",
"serverTime": 1655969291181,
// 全局速率限制。请参阅 "限制" 部分。
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT", // 速率限制类型: REQUEST_WEIGHT,ORDERS,RAW_REQUESTS
"interval": "MINUTE", // 速率限制间隔: SECOND,MINUTE,DAY
"intervalNum": 1, // 速率限制间隔乘数 (i.e.,"1 minute")
"limit": 6000 // 每个间隔的速率限制
},
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000
},
{
"rateLimitType": "CONNECTIONS",
"interval": "MINUTE",
"intervalNum": 5,
"limit": 300
}
],
// 交易所级别过滤器在 "过滤器" 部分上进行了说明: https://binance-docs.github.io/apidocs/spot/cn/#cc81fff589
// 全部交易过滤器是可选的。
"exchangeFilters": [],
"symbols": [
{
"symbol": "BNBBTC",
"status": "TRADING",
"baseAsset": "BNB",
"baseAssetPrecision": 8,
"quoteAsset": "BTC",
"quotePrecision": 8,
"quoteAssetPrecision": 8,
"baseCommissionPrecision": 8,
"quoteCommissionPrecision": 8,
"orderTypes": [
"LIMIT",
"LIMIT_MAKER",
"MARKET",
"STOP_LOSS_LIMIT",
"TAKE_PROFIT_LIMIT"
],
"icebergAllowed": true,
"ocoAllowed": true,
"quoteOrderQtyMarketAllowed": true,
"allowTrailingStop": true,
"cancelReplaceAllowed": true,
"isSpotTradingAllowed": true,
"isMarginTradingAllowed": true,
// 交易对过滤器在"过滤器"部分上进行了说明: https://binance-docs.github.io/apidocs/spot/cn/#cc81fff589
// 全部交易对过滤器是可选的。
"filters": [
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000100",
"maxPrice": "100000.00000000",
"tickSize": "0.00000100"
},
{
"filterType": "LOT_SIZE",
"minQty": "0.00100000",
"maxQty": "100000.00000000",
"stepSize": "0.00100000"
}
],
"permissions": [],
"permissionSets": [
[
"SPOT",
"MARGIN",
"TRD_GRP_004"
]
],
"defaultSelfTradePreventionMode": "NONE",
"allowedSelfTradePreventionModes": [
"NONE"
]
}
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取交易规则,速率限制,和交易对信息。
权重(IP): 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | NO | 代表单个交易对 |
symbols |
ARRAY of STRING | 代表多个交易对 | |
permissions |
ARRAY of STRING | 按权限过滤交易对 | |
showPermissionSets |
BOOLEAN | 用于控制是否返回 permissionSets 字段的内容,默认为 true |
|
symbolStatus |
ENUM | 过滤具有此 tradingStatus 的交易对。有效值: TRADING , HALT , BREAK 不能与 symbol 或 symbols 组合使用 |
备注:
参数
symbol
、symbols
和permissions
不能相互组合使用。如果没有参数,
exchangeInfo
将显示具有["SPOT, "MARGIN", "LEVERAGED"]
权限的所有交易对。- 要显示所有的
active
交易对,您需要在permissions
中明确指定所有权限。
- 要显示所有的
permissions
参数可以接受权限组合或者单个的权限名称:例如"SPOT"
。有关完整列表,请参阅 可用权限。
解释响应中的 permissionSets
:
[["A","B"]]
- 有权限"A"或权限"B"的账户可以下订单。[["A"],["B"]]
- 有权限"A"和权限"B"的账户可以下订单。[["A"],["B","C"]]
- 有权限"A"和权限"B"或权限"C"的账户可以下订单。(此处应用的是包含或,而不是排除或,因此账户可以同时拥有权限"B"和权限"C"。)
数据源: 缓存
行情接口
订单薄深度信息
请求:
{
"id": "51e2affb-0aba-4821-ba75-f2625006eb43",
"method": "depth",
"params": {
"symbol": "BNBBTC",
"limit": 5
}
}
响应:
{
"id": "51e2affb-0aba-4821-ba75-f2625006eb43",
"status": 200,
"result": {
"lastUpdateId": 2731179239,
// bid 水平从最高价到最低价排序。
"bids": [
[
"0.01379900", // 价格
"3.43200000" // 重量
],
[
"0.01379800",
"3.24300000"
],
[
"0.01379700",
"10.45500000"
],
[
"0.01379600",
"3.82100000"
],
[
"0.01379500",
"10.26200000"
]
],
// ask 水平从最低价到最高价排序。
"asks": [
[
"0.01380000",
"5.91700000"
],
[
"0.01380100",
"6.01400000"
],
[
"0.01380200",
"0.26800000"
],
[
"0.01380300",
"0.33800000"
],
[
"0.01380400",
"0.26800000"
]
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 5
}
]
}
获取当前深度信息。
请注意,此请求返回有限的市场深度。
如果需要持续监控深度信息更新,请考虑使用 WebSocket Streams:
如果需要维护本地orderbook,您可以将 depth
请求与 <symbol>@depth
streams 一起使用。
权重(IP): 根据限制调整:
限制 | 重量 |
---|---|
1–100 | 5 |
101–500 | 25 |
501–1000 | 50 |
1001-5000 | 250 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
limit |
INT | NO | 默认 100; 最大值 5000 |
数据源: 缓存
最近的交易
请求:
{
"id": "409a20bd-253d-41db-a6dd-687862a5882f",
"method": "trades.recent",
"params": {
"symbol": "BNBBTC",
"limit": 1
}
}
响应:
{
"id": "409a20bd-253d-41db-a6dd-687862a5882f",
"status": 200,
"result": [
{
"id": 194686783,
"price": "0.01361000",
"qty": "0.01400000",
"quoteQty": "0.00019054",
"time": 1660009530807,
"isBuyerMaker": true,
"isBestMatch": true
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
获取最近的交易
如果您需要访问实时交易活动,请考虑使用 WebSocket Streams:
权重(IP): 25
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
limit |
INT | NO | 默认 500; 最大值 1000 |
数据源: 缓存
历史交易
请求:
{
"id": "cffc9c7d-4efc-4ce0-b587-6b87448f052a",
"method": "trades.historical",
"params": {
"symbol": "BNBBTC",
"fromId": 0,
"limit": 1
}
}
响应:
{
"id": "cffc9c7d-4efc-4ce0-b587-6b87448f052a",
"status": 200,
"result": [
{
"id": 0,
"price": "0.00005000",
"qty": "40.00000000",
"quoteQty": "0.00200000",
"time": 1500004800376,
"isBuyerMaker": true,
"isBestMatch": true
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 10
}
]
}
获取历史交易。
权重(IP): 25
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
fromId |
INT | NO | 起始交易ID |
limit |
INT | NO | 默认 500; 最大值 1000 |
备注:
- 如果
fromId
未指定,则返回最近的交易。
数据源: 数据库
归集交易
请求:
{
"id": "189da436-d4bd-48ca-9f95-9f613d621717",
"method": "trades.aggregate",
"params": {
"symbol": "BNBBTC",
"fromId": 50000000,
"limit": 1
}
}
响应:
{
"id": "189da436-d4bd-48ca-9f95-9f613d621717",
"status": 200,
"result": [
{
"a": 50000000, // 归集交易ID
"p": "0.00274100", // 价格
"q": "57.19000000", // 重量
"f": 59120167, // 被归集的首个交易ID
"l": 59120170, // 被归集的末次交易ID
"T": 1565877971222, // 时间戳
"m": true, // 买方是否是做市方。如true,则此次成交是一个主动卖出单,否则是一个主动买入单。
"M": true // 交易是否是最好价格匹配。
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
获取归集交易。
一个 归集交易 (aggtrade) 代表一个或多个单独的交易。 同时间,同 taker 订单和同价格的执行交易会被聚合为一条归集交易。
如果需要访问实时交易活动,请考虑使用 WebSocket Streams:
如果需要历史总交易数据,可以使用 data.binance.vision。
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
fromId |
INT | NO | 起始归集交易ID |
startTime |
INT | NO | |
endTime |
INT | NO | |
limit |
INT | NO | 默认 500; 最大值 1000 |
备注:
- 如果指定了
fromId
,则返回归集交易 ID >=fromId
的 aggtrades。
使用 fromId
和 limit
会对所有 aggtrades 进行分页。
- 如果指定了
startTime
和/或endTime
,响应中的 aggtrades 会按照执行时间 (T
) 过滤。
fromId
不能与 startTime
和 endTime
一起使用。
- 如果未指定条件,则返回最近的归集交易。
数据源: 数据库
K线数据
请求:
{
"id": "1dbbeb56-8eea-466a-8f6e-86bdcfa2fc0b",
"method": "klines",
"params": {
"symbol": "BNBBTC",
"interval": "1h",
"startTime": 1655969280000,
"limit": 1
}
}
响应:
{
"id": "1dbbeb56-8eea-466a-8f6e-86bdcfa2fc0b",
"status": 200,
"result": [
[
1655971200000, // 这根K线的起始时间
"0.01086000", // 这根K线期间第一笔成交价
"0.01086600", // 这根K线期间最高成交价
"0.01083600", // 这根K线期间最低成交价
"0.01083800", // 这根K线期间末一笔成交价
"2290.53800000", // 这根K线期间成交量
1655974799999, // 这根K线的结束时间
"24.85074442", // 这根K线期间成交额
2283, // 这根K线期间成交笔数
"1171.64000000", // 主动买入的成交量
"12.71225884", // 主动买入的成交额
"0" // 忽略此参数
]
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
获取K线数据。
Klines 由其开盘时间和收盘时间为唯一标识。
如果您需要访问实时 kline 更新,请考虑使用 WebSocket Streams:
如果需要历史K线数据,可以使用 data.binance.vision。
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
interval |
ENUM | YES | |
startTime |
INT | NO | |
endTime |
INT | NO | |
timeZone |
STRING | NO | Default: 0 (UTC) |
limit |
INT | NO | 默认 500; 最大值 1000 |
时间间隔 | interval 值 |
---|---|
seconds | 1s |
minutes | 1m , 3m , 5m , 15m , 30m |
hours | 1h , 2h , 4h , 6h , 8h , 12h |
days | 1d , 3d |
weeks | 1w |
months | 1M |
备注:
- 如果没有指定
startTime
,endTime
,则返回最近的klines。 timeZone
支持的值包括:- 小时和分钟(例如
-1:00
,05:45
) - 仅小时(例如
0
,8,
4) - 接受的值范围严格为 [-12:00 到 +14:00](包括边界)
- 小时和分钟(例如
- 如果提供了
timeZone
,K线间隔将在该时区中解释,而不是在UTC中。 - 请注意,无论
timeZone
如何,startTime
和endTime
始终以UTC时区解释。
数据源: 数据库
UI K线数据
请求:
{
"id": "b137468a-fb20-4c06-bd6b-625148eec958",
"method": "uiKlines",
"params": {
"symbol": "BNBBTC",
"interval": "1h",
"startTime": 1655969280000,
"limit": 1
}
}
请求参数和响应字段与k线
接口相同。
uiKlines 是返回修改后的k线数据,针对k线图的呈现进行了优化。
响应:
{
"id": "b137468a-fb20-4c06-bd6b-625148eec958",
"status": 200,
"result": [
[
1655971200000, // 这根K线的起始时间
"0.01086000", // 这根K线期间第一笔成交价
"0.01086600", // 这根K线期间最高成交价
"0.01083600", // 这根K线期间最低成交价
"0.01083800", // 这根K线期间末一笔成交价
"2290.53800000", // 这根K线期间成交量
1655974799999, // 这根K线的结束时间
"24.85074442", // 这根K线期间成交额
2283, // 这根K线期间成交笔数
"1171.64000000", // 主动买入的成交量
"12.71225884", // 主动买入的成交额
"0" // 忽略此参数
]
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
interval |
ENUM | YES | 请看 k线 |
startTime |
INT | NO | |
endTime |
INT | NO | |
timeZone |
STRING | NO | 默认: 0 (UTC) |
limit |
INT | NO | 默认 500; 最大值 1000 |
备注:
- 如果没有指定
startTime
,endTime
,则返回最近的klines。 timeZone
支持的值包括:- 小时和分钟(例如
-1:00
,05:45
) - 仅小时(例如
0
,8,
4) - 接受的值范围严格为 [-12:00 到 +14:00](包括边界)
- 小时和分钟(例如
- 如果提供了
timeZone
,K线间隔将在该时区中解释,而不是在UTC中。 - 请注意,无论
timeZone
如何,startTime
和endTime
始终以UTC时区解释。
数据源: 数据库
响应:
{
"id": "b137468a-fb20-4c06-bd6b-625148eec958",
"status": 200,
"result": [
[
1655971200000, // 这根K线的起始时间
"0.01086000", // 这根K线期间第一笔成交价
"0.01086600", // 这根K线期间最高成交价
"0.01083600", // 这根K线期间最低成交价
"0.01083800", // 这根K线期间末一笔成交价
"2290.53800000", // 这根K线期间成交量
1655974799999, // 这根K线的结束时间
"24.85074442", // 这根K线期间成交额
2283, // 这根K线期间成交笔数
"1171.64000000", // 主动买入的成交量
"12.71225884", // 主动买入的成交额
"0" // 忽略此参数
]
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
当前平均价格
请求:
{
"id": "ddbfb65f-9ebf-42ec-8240-8f0f91de0867",
"method": "avgPrice",
"params": {
"symbol": "BNBBTC"
}
}
响应:
{
"id": "ddbfb65f-9ebf-42ec-8240-8f0f91de0867",
"status": 200,
"result": {
"mins": 5, // 以分钟为单位的价格平均间隔
"price": "0.01378135",
"closeTime": 1694061154503
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
获取交易对的当前平均价格
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES |
数据源: 缓存
24hr 价格变动情况
请求:
{
"id": "93fb61ef-89f8-4d6e-b022-4f035a3fadad",
"method": "ticker.24hr",
"params": {
"symbol": "BNBBTC"
}
}
响应:
FULL
类型,对于单个交易对:
{
"id": "93fb61ef-89f8-4d6e-b022-4f035a3fadad",
"status": 200,
"result": {
"symbol": "BNBBTC",
"priceChange": "0.00013900",
"priceChangePercent": "1.020",
"weightedAvgPrice": "0.01382453",
"prevClosePrice": "0.01362800",
"lastPrice": "0.01376700",
"lastQty": "1.78800000",
"bidPrice": "0.01376700",
"bidQty": "4.64600000",
"askPrice": "0.01376800",
"askQty": "14.31400000",
"openPrice": "0.01362800",
"highPrice": "0.01414900",
"lowPrice": "0.01346600",
"volume": "69412.40500000",
"quoteVolume": "959.59411487",
"openTime": 1660014164909,
"closeTime": 1660100564909,
"firstId": 194696115, // 第一个交易 ID
"lastId": 194968287, // 最后一个交易 ID
"count": 272173 // 成交笔数
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
MINI
类型,对于单个交易对:
{
"id": "9fa2a91b-3fca-4ed7-a9ad-58e3b67483de",
"status": 200,
"result": {
"symbol": "BNBBTC",
"openPrice": "0.01362800",
"highPrice": "0.01414900",
"lowPrice": "0.01346600",
"lastPrice": "0.01376700",
"volume": "69412.40500000",
"quoteVolume": "959.59411487",
"openTime": 1660014164909,
"closeTime": 1660100564909,
"firstId": 194696115, // 第一个交易 ID
"lastId": 194968287, // 最后一个交易ID
"count": 272173 // 成交笔数
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
如果请求是有多个交易对,响应会是数组类型:
{
"id": "901be0d9-fd3b-45e4-acd6-10c580d03430",
"status": 200,
"result": [
{
"symbol": "BNBBTC",
"priceChange": "0.00016500",
"priceChangePercent": "1.213",
"weightedAvgPrice": "0.01382508",
"prevClosePrice": "0.01360800",
"lastPrice": "0.01377200",
"lastQty": "1.01400000",
"bidPrice": "0.01377100",
"bidQty": "7.55700000",
"askPrice": "0.01377200",
"askQty": "4.37900000",
"openPrice": "0.01360700",
"highPrice": "0.01414900",
"lowPrice": "0.01346600",
"volume": "69376.27900000",
"quoteVolume": "959.13277091",
"openTime": 1660014615517,
"closeTime": 1660101015517,
"firstId": 194697254,
"lastId": 194969483,
"count": 272230
},
{
"symbol": "BTCUSDT",
"priceChange": "-938.06000000",
"priceChangePercent": "-3.938",
"weightedAvgPrice": "23265.34432003",
"prevClosePrice": "23819.17000000",
"lastPrice": "22880.91000000",
"lastQty": "0.00536000",
"bidPrice": "22880.40000000",
"bidQty": "0.00424000",
"askPrice": "22880.91000000",
"askQty": "0.04276000",
"openPrice": "23818.97000000",
"highPrice": "23933.25000000",
"lowPrice": "22664.69000000",
"volume": "153508.37606000",
"quoteVolume": "3571425225.04441220",
"openTime": 1660014615977,
"closeTime": 1660101015977,
"firstId": 1592019902,
"lastId": 1597301762,
"count": 5281861
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
24 小时滚动窗口价格变动数据。 如果您需要持续监控交易统计,请考虑使用 WebSocket Streams:
如果你想用不同的窗口数量,可以用 ticker
请求。
权重(IP): 根据交易对的数量进行调整:
交易对 | 重量 |
---|---|
1–20 | 2 |
21–100 | 40 |
101 以上 | 80 |
全部交易对 | 80 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | NO | 获取单个交易对的 ticker |
symbols |
ARRAY of STRING | 获取多个交易对的 ticker | |
type |
ENUM | NO | Ticker 类型: FULL (默认) 或者 MINI |
备注:
symbol
和symbols
不能同时用。如果未指定交易对,则返回有关当前在交易所交易的所有交易对的信息。
数据源: 缓存
交易日行情(Ticker)
请求
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"method": "ticker.tradingDay",
"params": {
"symbols": [
"BNBBTC",
"BTCUSDT"
],
"timeZone": "00:00"
}
}
响应 - FULL
有
symbol
:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"priceChange": "-83.13000000", // 绝对价格变动
"priceChangePercent": "-0.317", // 相对价格变动百分比
"weightedAvgPrice": "26234.58803036", // 报价成交量 / 成交量
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000", // 基础资产的成交量
"quoteVolume": "485217905.04210480",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555,
"lastId": 3220849281,
"count": 697727
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
有
symbols
:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"priceChange": "-83.13000000",
"priceChangePercent": "-0.317",
"weightedAvgPrice": "26234.58803036",
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000",
"quoteVolume": "485217905.04210480",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555,
"lastId": 3220849281,
"count": 697727
},
{
"symbol": "BNBUSDT",
"priceChange": "2.60000000",
"priceChangePercent": "1.238",
"weightedAvgPrice": "211.92276958",
"openPrice": "210.00000000",
"highPrice": "213.70000000",
"lowPrice": "209.70000000",
"lastPrice": "212.60000000",
"volume": "280709.58900000",
"quoteVolume": "59488753.54750000",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 672397461,
"lastId": 672496158,
"count": 98698
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 8
}
]
}
相应: - MINI
有
symbol
:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000", // 基础资产的成交量
"quoteVolume": "485217905.04210480", // 报价资产的成交量
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555, // 区间内的第一个交易的交易ID
"lastId": 3220849281, // 区间内的最后一个交易的交易ID
"count": 697727 // 区间内的交易数量
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
有
symbols
:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000",
"quoteVolume": "485217905.04210480",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555,
"lastId": 3220849281,
"count": 697727
},
{
"symbol": "BNBUSDT",
"openPrice": "210.00000000",
"highPrice": "213.70000000",
"lowPrice": "209.70000000",
"lastPrice": "212.60000000",
"volume": "280709.58900000",
"quoteVolume": "59488753.54750000",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 672397461,
"lastId": 672496158,
"count": 98698
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 8
}
]
}
交易日价格变动统计。
权重:
每个交易对占用4个权重.
当请求中的交易对数量超过50,此请求的权重将限制在200。
参数:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | 查询单交易对的行情 |
symbols |
ARRAY of STRING | 查询多交易对行情 | |
timeZone |
STRING | NO | 默认: 0 (UTC) |
type |
ENUM | NO | 可接受值: FULL or MINI. 默认值: FULL |
注意:
timeZone
支持的值包括:- 小时和分钟(例如
-1:00
,05:45
) - 仅小时(例如
0
,8
,4
)
- 小时和分钟(例如
数据源: 数据库
滚动窗口价格变动统计
请求:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"method": "ticker",
"params": {
"symbols": [
"BNBBTC",
"BTCUSDT"
],
"windowSize": "7d"
}
}
响应:
FULL
类型,对于单个交易对:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": {
"symbol": "BNBBTC",
"priceChange": "0.00061500",
"priceChangePercent": "4.735",
"weightedAvgPrice": "0.01368242",
"openPrice": "0.01298900",
"highPrice": "0.01418800",
"lowPrice": "0.01296000",
"lastPrice": "0.01360400",
"volume": "587179.23900000",
"quoteVolume": "8034.03382165",
"openTime": 1659580020000,
"closeTime": 1660184865291,
"firstId": 192977765, // 第一个交易 ID
"lastId": 195365758, // 最后交易 ID
"count": 2387994 // 成交笔数
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
MINI
类型,对于单个交易对:
{
"id": "bdb7c503-542c-495c-b797-4d2ee2e91173",
"status": 200,
"result": {
"symbol": "BNBBTC",
"openPrice": "0.01298900",
"highPrice": "0.01418800",
"lowPrice": "0.01296000",
"lastPrice": "0.01360400",
"volume": "587179.23900000",
"quoteVolume": "8034.03382165",
"openTime": 1659580020000,
"closeTime": 1660184865291,
"firstId": 192977765, // 第一个交易 ID
"lastId": 195365758, // 最后交易 ID
"count": 2387994 // 成交笔数
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
如果请求是有多个交易对,响应会是数组类型:
{
"id": "f4b3b507-c8f2-442a-81a6-b2f12daa030f",
"status": 200,
"result": [
{
"symbol": "BNBBTC",
"priceChange": "0.00061500",
"priceChangePercent": "4.735",
"weightedAvgPrice": "0.01368242",
"openPrice": "0.01298900",
"highPrice": "0.01418800",
"lowPrice": "0.01296000",
"lastPrice": "0.01360400",
"volume": "587169.48600000",
"quoteVolume": "8033.90114517",
"openTime": 1659580020000,
"closeTime": 1660184820927,
"firstId": 192977765,
"lastId": 195365700,
"count": 2387936
},
{
"symbol": "BTCUSDT",
"priceChange": "1182.92000000",
"priceChangePercent": "5.113",
"weightedAvgPrice": "23349.27074846",
"openPrice": "23135.33000000",
"highPrice": "24491.22000000",
"lowPrice": "22400.00000000",
"lastPrice": "24318.25000000",
"volume": "1039498.10978000",
"quoteVolume": "24271522807.76838630",
"openTime": 1659580020000,
"closeTime": 1660184820927,
"firstId": 1568787779,
"lastId": 1604337406,
"count": 35549628
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 8
}
]
}
使用自定义窗口获取滚动窗口价格变化统计信息。
这个请求类似于 ticker.24hr
,但统计数据是使用指定的任意窗口按需计算的。
注意: 窗口大小精度限制为1分钟。
虽然 closeTime
是请求的当前时间,openTime
总是从分钟边界开始。
因此,有效窗口可能比请求的 windowSize
宽59999毫秒。
例如,对 "windowSize": "7d"
的请求可能会导致以下窗口:
"openTime": 1659580020000, "closeTime": 1660184865291
请求的时间 -
closeTime
- 是 1660184865291(2022年8月11日 02:27:45.291)。请求的窗口大小应将
openTime
设置为7天之前 – 8月4日,02:27:45.291 – 但由于精度有限,它最终会提前一点:1659580020000(2022年8月4日 02:27:00),正好在一分钟开始。
如果您需要持续监控交易统计,请考虑使用 WebSocket Streams:
权重(IP): 根据交易对的数量进行调整:
交易对 | 重量 |
---|---|
1–50 | 4 per symbol |
51–100 | 200 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | 获取单个交易对的 ticker |
symbols |
ARRAY of STRING | 获取多个交易对的 ticker | |
type |
ENUM | NO | Ticker 类型: FULL (默认) 或者 MINI |
windowSize |
ENUM | NO | 默认 1d |
支持的窗口 size:
单位 | windowSize 值 |
---|---|
minutes | 1m , 2m ... 59m |
hours | 1h , 2h ... 23h |
days | 1d , 2d ... 7d |
备注:
必须指定
symbol
或symbols
。一个请求中的最大交易对数:100。
窗口 size 单位不能合并。 比如不支持
1d 2h
。
数据源: 数据库
最新价格
请求:
{
"id": "043a7cf2-bde3-4888-9604-c8ac41fcba4d",
"method": "ticker.price",
"params": {
"symbol": "BNBBTC"
}
}
响应:
{
"id": "043a7cf2-bde3-4888-9604-c8ac41fcba4d",
"status": 200,
"result": {
"symbol": "BNBBTC",
"price": "0.01361900"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
如果请求是有多个交易对,响应会是数组类型:
{
"id": "e739e673-24c8-4adf-9cfa-b81f30330b09",
"status": 200,
"result": [
{
"symbol": "BNBBTC",
"price": "0.01363700"
},
{
"symbol": "BTCUSDT",
"price": "24267.15000000"
},
{
"symbol": "BNBBUSD",
"price": "331.10000000"
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
获取交易对最新价格
如果需要访问实时价格更新,请考虑使用 WebSocket Streams:
权重(IP): 根据交易对的数量进行调整:
参数 | 重量 |
---|---|
symbol |
2 |
symbols |
4 |
none | 4 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | NO | 获取单个交易对的 price |
symbols |
ARRAY of STRING | 获取多个交易对的 price |
备注:
symbol
和symbols
不能一起使用。如果未指定交易对,则返回有关当前在交易所交易的所有交易对的信息。
数据源: 缓存
当前最优挂单
请求:
{
"id": "057deb3a-2990-41d1-b58b-98ea0f09e1b4",
"method": "ticker.book",
"params": {
"symbols": [
"BNBBTC",
"BTCUSDT"
]
}
}
响应:
{
"id": "9d32157c-a556-4d27-9866-66760a174b57",
"status": 200,
"result": {
"symbol": "BNBBTC",
"bidPrice": "0.01358000",
"bidQty": "12.53400000",
"askPrice": "0.01358100",
"askQty": "17.83700000"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
如果请求是有多个交易对,响应会是数组类型:
{
"id": "057deb3a-2990-41d1-b58b-98ea0f09e1b4",
"status": 200,
"result": [
{
"symbol": "BNBBTC",
"bidPrice": "0.01358000",
"bidQty": "12.53400000",
"askPrice": "0.01358100",
"askQty": "17.83700000"
},
{
"symbol": "BTCUSDT",
"bidPrice": "23980.49000000",
"bidQty": "0.01000000",
"askPrice": "23981.31000000",
"askQty": "0.01512000"
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
在订单薄获取当前最优价格和数量。
如果您需要访问实时订单薄 ticker 更新,请考虑使用 WebSocket Streams:
权重(IP): 根据交易对的数量进行调整:
参数 | 重量 |
---|---|
symbol |
2 |
symbols |
4 |
none | 4 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | NO | 获取单个交易对的 ticker |
symbols |
ARRAY of STRING | 获取多个交易对的 ticker |
备注:
symbol
和symbols
不能一起使用。如果未指定交易对,则返回有关当前在交易所交易的所有交易对的信息。
数据源: 缓存
身份验证请求
注意: 仅支持 Ed25519 密钥用于此功能。
用API key登录 (SIGNED)
请求
{
"id": "c174a2b1-3f51-4580-b200-8528bd237cb7",
"method": "session.logon",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "1cf54395b336b0a9727ef27d5d98987962bc47aca6e13fe978612d0adee066ed",
"timestamp": 1649729878532
}
}
响应:
{
"id": "c174a2b1-3f51-4580-b200-8528bd237cb7",
"status": 200,
"result": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"authorizedSince": 1649729878532,
"connectedSince": 1649729873021,
"returnRateLimits": false,
"serverTime": 1649729878630
}
}
使用提供的API密钥进行WebSocket连接身份验证。
在调用session.logon
后,将来的需要apiKey
和signature
参数的请求可以省略它们。
请注意,只能认证一个API密钥。
多次调用session.logon
将更改当前已认证的API密钥。
权重: 2
参数:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
apiKey |
STRING | YES | |
recvWindow |
INT | NO | The value cannot be greater than 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 缓存
查询会话状态
请求
{
"id": "b50c16cd-62c9-4e29-89e4-37f10111f5bf",
"method": "session.status"
}
响应:
{
"id": "b50c16cd-62c9-4e29-89e4-37f10111f5bf",
"status": 200,
"result": {
// 如果连接未经身份验证,"apiKey" 和 "authorizedSince" 将显示为 null。
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"authorizedSince": 1649729878532,
"connectedSince": 1649729873021,
"returnRateLimits": false,
"serverTime": 1649730611671
}
}
查询WebSocket连接的状态,检查用于授权请求的API密钥(如果有的话)。
权重: 2
参数: NONE
数据源: 缓存
退出会话
请求
{
"id": "c174a2b1-3f51-4580-b200-8528bd237cb7",
"method": "session.logout"
}
响应:
{
"id": "c174a2b1-3f51-4580-b200-8528bd237cb7",
"status": 200,
"result": {
"apiKey": null,
"authorizedSince": null,
"connectedSince": 1649729873021,
"returnRateLimits": false,
"serverTime": 1649730611671
}
}
忘记之前认证的API密钥。 如果连接未经身份验证,此请求不会有任何作用。
请注意,session.logout
请求后,WebSocket连接仍然保持打开状态。
你可以继续使用连接,但现在必须在需要的地方明确提供apiKey
和signature
参数。
权重: 2
参数: NONE
数据源: 缓存
交易请求
下新的订单 (TRADE)
请求:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"method": "order.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "15af09e41c36f3cc61378c2fbe2c33719a03dd5eba8d0f9206fbda44de717c88",
"timestamp": 1660801715431
}
}
响应:
ACK
响应类型:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1, // 单个订单会一直是 -1
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715639
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
RESULT
响应类型:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1, // 单个订单会一直是 -1
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715639,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1660801715639,
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
FULL
响应类型:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "4d96324ff9d44481926157ec08158a40",
"transactTime": 1660801715793,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00847000",
"cummulativeQuoteQty": "198.33521500",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1660801715793,
// FULL 响应与 RESULT 响应相同,具有相同的可选字段基于订单类型和参数。FULL响应还包括立即完成订单的交易列表。
"fills": [
{
"price": "23416.10000000",
"qty": "0.00635000",
"commission": "0.000000",
"commissionAsset": "BNB",
"tradeId": 1650422481
},
{
"price": "23416.50000000",
"qty": "0.00212000",
"commission": "0.000000",
"commissionAsset": "BNB",
"tradeId": 1650422482
}
],
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
下新的订单。
权重(IP): 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
side |
ENUM | YES | BUY 或者 SELL |
type |
ENUM | YES | |
timeInForce |
ENUM | NO * | |
price |
DECIMAL | NO * | |
quantity |
DECIMAL | NO * | |
quoteOrderQty |
DECIMAL | NO * | |
newClientOrderId |
STRING | NO | 客户自定义的唯一订单ID。如果未发送,则自动生成。 |
newOrderRespType |
ENUM | NO | 可选的响应格式:
|
stopPrice |
DECIMAL | NO * | |
trailingDelta |
INT | NO * | 请看 Trailing Stop FAQ |
icebergQty |
DECIMAL | NO | |
strategyId |
INT | NO | 标识订单策略中订单的任意ID。 |
strategyType |
INT | NO | 标识订单策略的任意数值。 小于 |
selfTradePreventionMode |
ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有 EXPIRE_TAKER ,EXPIRE_MAKER ,EXPIRE_BOTH ,NONE 。 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
根据订单 type
,某些参数(*) 可能成为必需参数:
订单 type |
强制要求的参数 |
---|---|
LIMIT |
|
LIMIT_MAKER |
|
MARKET |
|
STOP_LOSS |
|
STOP_LOSS_LIMIT |
|
TAKE_PROFIT |
|
TAKE_PROFIT_LIMIT |
|
支持的订单类型:
订单 type |
描述 |
---|---|
LIMIT |
以指定的 |
LIMIT_MAKER |
此订单类型也称为 POST-ONLY 订单。 |
MARKET |
以最佳市场价格买入或卖出。
|
STOP_LOSS |
当满足指定条件时,执行给定
I.e., 当达到 |
STOP_LOSS_LIMIT |
当满足指定条件时,执行给定参数的 |
TAKE_PROFIT |
与 |
TAKE_PROFIT_LIMIT |
与 |
可用的 timeInForce
选项,设置订单在到期前应该活跃多长时间:
TIF | 描述 |
---|---|
GTC |
Good 'til Canceled – 成交为止。订单会一直有效,直到被成交或者取消。 |
IOC |
Immediate 或者 Cancel – 无法立即成交的部分就撤销。订单在失效前会尽量多的成交。 |
FOK |
Fill 或者 Kill – 无法全部立即成交就撤销。如果无法全部成交,订单会失效。 |
备注:
newClientOrderId
指定订单的clientOrderId
值。
仅当前一个订单已成交或过期时,才会接受具有相同 clientOrderId
的新订单。
- 任何
LIMIT
或LIMIT_MAKER
订单都可以通过指定icebergQty
变成冰山订单。
带有 icebergQty
的订单必须将 timeInForce
设置为 GTC
。
STOP_LOSS
/TAKE_PROFIT
订单的触发订单价格规则:stopPrice
必须高于市场价格:STOP_LOSS BUY
,TAKE_PROFIT SELL
stopPrice
必须低于市场价格:STOP_LOSS SELL
,TAKE_PROFIT BUY
使用
quoteOrderQty
的MARKET
订单遵循LOT_SIZE
过滤规则。
该订单将执行一个名义价值尽可能接近请求的 quoteOrderQty
的数量。
数据源: 撮合引擎
订单响应中的特定条件时才会出现的字段
订单响应中的有一些字段仅在满足特定条件时才会出现。这些订单响应可以来自下订单,查询订单或取消订单,并且可以包括订单列表类型。 下面列出了这些字段:
名称 | 描述 | 显示的条件 | 示例 |
---|---|---|---|
icebergQty |
冰山订单的数量。 | 只有在请求中发送 icebergQty 参数时才会出现。 |
"icebergQty": "0.00000000" |
preventedMatchId |
与 symbol 结合使用时,可用于查询因为 STP 导致订单失效的过期订单。 |
只有在因为 STP 导致订单失效时可见。 | "preventedMatchId": 0 |
preventedQuantity |
因为 STP 导致订单失效的数量。 | 只有在因为 STP 导致订单失效时可见。 | "preventedQuantity": "1.200000" |
stopPrice |
用于设置逻辑订单中的触发价。 | STOP_LOSS ,TAKE_PROFIT ,STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单时可见。 |
"stopPrice": "23500.00000000" |
strategyId |
策略单ID; 用以关联此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyId": 37463720 |
strategyType |
策略单类型; 用以显示此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyType": 1000000 |
trailingDelta |
用以定义追踪止盈止损订单被触发的价格差。 | 出现在追踪止损订单中。 | "trailingDelta": 10 |
trailingTime |
追踪单被激活和跟踪价格变化的时间。 | 出现在追踪止损订单中。 | "trailingTime": -1 |
测试下单 (TRADE)
请求:
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"method": "order.test",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "15af09e41c36f3cc61378c2fbe2c33719a03dd5eba8d0f9206fbda44de717c88",
"timestamp": 1660801715431
}
}
响应:
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"status": 200,
"result": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
或者
{
"id": "6ffebe91-01d9-43ac-be99-57cf062e0e30",
"status": 200,
"result": {
"standardCommissionForOrder": { // 订单交易的标准佣金率
"maker": "0.00000112",
"taker": "0.00000114"
},
"taxCommissionForOrder": { // 订单交易的税率
"maker": "0.00000112",
"taker": "0.00000114"
},
"discount": { // 以BNB支付时的标准佣金折扣。
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000" // 当用BNB支付佣金时,在标准佣金上按此比率打折
}
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
测试下单。
验证新订单参数并验证您的签名但不会将订单发送到撮合引擎。
权重(IP):
| 条件 | 请求权重 |
|------------ | ------------ |
|没有 computeCommissionRates
| 1 |
|有 computeCommissionRates
|20 |
参数:
除了 order.place
的所有参数,
下面参数也有效:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
computeCommissionRates |
BOOLEAN | NO | 默认: false |
数据源: 缓存
查询订单 (USER_DATA)
请求:
{
"id": "aa62318a-5a97-4f3b-bdc7-640bbe33b291",
"method": "order.status",
"params": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "2c3aab5a078ee4ea465ecd95523b77289f61476c2f238ec10c55ea6cb11a6f35",
"timestamp": 1660801720951
}
}
响应:
{
"id": "aa62318a-5a97-4f3b-bdc7-640bbe33b291",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1, // 订单列表的ID,不然就是-1
"clientOrderId": "4d96324ff9d44481926157",
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00847000",
"cummulativeQuoteQty": "198.33521500",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000", // 始终存在,如果订单类型不使用 stopPrice,则为零
"icebergQty": "0.00000000", // 始终存在,非冰山订单为零
"time": 1660801715639, // 下单时间
"updateTime": 1660801717945, // 最后一次更新订单的时间
"isWorking": true,
"workingTime": 1660801715639,
"origQuoteOrderQty": "0.00000000", // 始终存在,如果订单类型不使用 quoteOrderQty,则为零
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
查询订单状态。
权重(IP): 4
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
orderId |
INT | YES | 按 orderId 查找顺序 |
origClientOrderId |
STRING | 按 clientOrderId 查找顺序 |
|
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
如果同时指定了
orderId
和origClientOrderId
参数,仅使用orderId
并忽略origClientOrderId
。对于某些历史订单,
cummulativeQuoteQty
响应字段可能为负数,意味着此时数据不可用。
数据源: 缓存 => 数据库
注意: 响应示例没有显示所有可以出现的字段,更多请看 "订单响应中的特定条件时才会出现的字段" 部分。
撤销订单 (TRADE)
请求:
{
"id": "5633b6a2-90a9-4192-83e7-925c90b6a2fd",
"method": "order.cancel",
"params": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "33d5b721f278ae17a52f004a82a6f68a70c68e7dd6776ed0be77a455ab855282",
"timestamp": 1660801715830
}
}
响应:
取消单个订单时:
{
"id": "5633b6a2-90a9-4192-83e7-925c90b6a2fd",
"status": 200,
"result": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157", // 被取消的 clientOrderId
"orderId": 12569099453,
"orderListId": -1, // 订单列表的ID,不然就是 -1
"clientOrderId": "91fe37ce9e69c90d6358c0", // 请求的 newClientOrderId
"transactTime": 1684804350068,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"cummulativeQuoteQty": "0.23416100",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
取消订单列表时:
{
"id": "16eaf097-bbec-44b9-96ff-e97e6e875870",
"status": 200,
"result": {
"orderListId": 19431,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "iuVNVJYYrByz6C4yGOPPK0",
"transactionTime": 1660803702431,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY"
},
{
"symbol": "BTCUSDT",
"orderId": 12569099454,
"clientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW"
}
],
// 订单列表中的订单状态格式与单个订单相同。
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"orderId": 12569099453,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23450.50000000",
"origQty": "0.00850000"
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "23430.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW",
"orderId": 12569099454,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23400.00000000",
"origQty": "0.00850000"
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
取消有效订单。
权重(IP): 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
orderId |
INT | YES | 按 orderId 取消订单 |
origClientOrderId |
STRING | 按 clientOrderId 取消订单 |
|
newClientOrderId |
STRING | NO | 已取消订单的新 ID。如果未发送,则自动生成 |
cancelRestrictions |
ENUM | NO | 支持的值: ONLY_NEW - 如果订单状态为 NEW ,撤销将成功。ONLY_PARTIALLY_FILLED - 如果订单状态为 PARTIALLY_FILLED ,撤销将成功。 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
如果同时指定了
orderId
和origClientOrderId
参数,仅使用orderId
并忽略origClientOrderId
。newClientOrderId
将替换已取消订单的clientOrderId
,为新订单腾出空间。如果您取消属于订单列表的订单,则整个订单列表将被取消。
数据源: 撮合引擎
注意: 响应示例没有显示所有可以出现的字段,更多请看 "订单响应中的特定条件时才会出现的字段" 部分。
关于 cancelRestrictions
- 如果
cancelRestrictions
值不是任何受支持的值,则错误将是:{"code": -1145,"msg": "Invalid cancelRestrictions"}
- 如果订单没有通过
cancelRestrictions
的条件,错误将是:{"code": -2011,"msg": "Order was not canceled due to cancel restrictions."}
撤消挂单再下单 (TRADE)
请求:
{
"id": "99de1036-b5e2-4e0f-9b5c-13d751c93a1a",
"method": "order.cancelReplace",
"params": {
"symbol": "BTCUSDT",
"cancelReplaceMode": "ALLOW_FAILURE",
"cancelOrigClientOrderId": "4d96324ff9d44481926157",
"side": "SELL",
"type": "LIMIT",
"timeInForce": "GTC",
"price": "23416.10000000",
"quantity": "0.00847000",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "7028fdc187868754d25e42c37ccfa5ba2bab1d180ad55d4c3a7e2de643943dc5",
"timestamp": 1660813156900
}
}
响应:
如果撤销订单和下新订单都成功,响应会是
"status": 200
:
{
"id": "99de1036-b5e2-4e0f-9b5c-13d751c93a1a",
"status": 200,
"result": {
"cancelResult": "SUCCESS",
"newOrderResult": "SUCCESS",
// 格式与 "order.cancel" 格式相同。
// 某些字段是可选的,仅在订单中有设置它们时才包括。
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157", // 请求的 cancelOrigClientOrderId
"orderId": 125690984230,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0", // 请求的 cancelNewClientOrderId
"transactTime": 1684804350068,
"price": "23450.00000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"cummulativeQuoteQty": "0.23450000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
// 格式与 "order.place" 格式相同, 受 "newOrderRespType" 影响。
// 某些字段是可选的,仅在订单中有设置它们时才包括。
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY", // 请求的 newClientOrderId
"transactTime": 1660813156959,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1660813156959,
"fills": [],
"selfTradePreventionMode": "NONE"
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
在
STOP_ON_FAILURE
模式,失败的撤销订单会阻止下新订单,响应会是"status": 400
:
{
"id": "27e1bf9f-0539-4fb0-85c6-06183d36f66c",
"status": 400,
"error": {
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "NOT_ATTEMPTED",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": null
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
如果 cancel-replace 模式允许失败并且其中一个操作失败,响应会是
"status": 409
和"data"
字段会制定哪个操作成功,哪个失败,以及原因:
{
"id": "b220edfe-f3c4-4a3a-9d13-b35473783a25",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"orderId": 125690984230,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0",
"transactTime": 1684804350068,
"price": "23450.00000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"cummulativeQuoteQty": "0.23450000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
{
"id": "ce641763-ff74-41ac-b9f7-db7cbe5e93b1",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"transactTime": 1660813156959,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1669693344508,
"fills": [],
"selfTradePreventionMode": "NONE"
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
如果两个操作都失败,响应将有
"status": 400
:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 400,
"error": {
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "FAILURE",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 1
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 1
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
如果
orderRateLimitExceededMode
是DO_NOTHING
,那么无论cancelReplaceMode
的取值,当账户超出下单速率限制时,响应将有"status": 429
:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 429,
"error": {
"code": -1015,
"msg": "Too many new orders; current limit is 50 orders per 10 SECOND."
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 50
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
如果
orderRateLimitExceededMode
是CANCEL_ONLY
,那么无论cancelReplaceMode
的取值,当账户超出下单速率限制时,响应将有"status": 409
:
{
"id": "3b3ac45c-1002-4c7d-88e8-630c408ecd87",
"status": 409,
"error": {
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "LTCBNB",
"origClientOrderId": "GKt5zzfOxRDSQLveDYCTkc",
"orderId": 64,
"orderListId": -1,
"clientOrderId": "loehOJF3FjoreUBDmv739R",
"transactTime": 1715779007228,
"price": "1.00",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -1015,
"msg": "Too many new orders; current limit is 50 orders per 10 SECOND."
}
}
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 50
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
撤消挂单并在同个交易对上重新下单。
权重(IP): 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
cancelReplaceMode |
ENUM | YES | |
cancelOrderId |
INT | YES | 按 orderId 取消订单 |
cancelOrigClientOrderId |
STRING | 按 clientOrderId 取消订单 |
|
cancelNewClientOrderId |
STRING | NO | 已取消订单的新 ID。如果未发送,则自动生成 |
side |
ENUM | YES | BUY 或者 SELL |
type |
ENUM | YES | |
timeInForce |
ENUM | NO * | |
price |
DECIMAL | NO * | |
quantity |
DECIMAL | NO * | |
quoteOrderQty |
DECIMAL | NO * | |
newClientOrderId |
STRING | NO | 客户自定义的唯一订单ID。如果未发送,则自动生成 |
newOrderRespType |
ENUM | NO |
选择响应格式:
|
stopPrice |
DECIMAL | NO * | |
trailingDelta |
DECIMAL | NO * | 请看 Trailing Stop FAQ |
icebergQty |
DECIMAL | NO | |
strategyId |
INT | NO | 标识订单策略中订单的任意ID。 |
strategyType |
INT | NO |
标识订单策略的任意数值。 小于 1000000 的值被保留,不能使用。 |
selfTradePreventionMode |
ENUM | NO |
允许的 ENUM 取决于交易对的配置。 支持的值有 |
cancelRestrictions |
ENUM | NO | 支持的值: ONLY_NEW - 如果订单状态为 NEW ,撤销将成功。ONLY_PARTIALLY_FILLED - 如果订单状态为 PARTIALLY_FILLED ,撤销将成功。 |
apiKey |
STRING | YES | |
orderRateLimitExceededMode |
ENUM | NO | 支持的值: DO_NOTHING (默认值)- 仅在账户未超过未成交订单频率限制时,会尝试取消订单。CANCEL_ONLY - 将始终取消订单。 |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
类似于 order.place
请求,额外的强制参数 (*) 由新订单的 type
确定。
可用的 cancelReplaceMode
选项:
STOP_ON_FAILURE
– 如果撤销订单请求失败,将不会尝试下新订单。ALLOW_FAILURE
– 即使撤销订单请求失败,也会尝试下新订单。
请求 | 响应 | ||||
---|---|---|---|---|---|
cancelReplaceMode |
orderRateLimitExceededMode |
下单数 | cancelResult |
newOrderResult |
status |
STOP_ON_FAILURE |
DO_NOTHING |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
❌ FAILURE |
➖ NOT_ATTEMPTED |
400 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
N/A | ||
❌ FAILURE |
➖ NOT_ATTEMPTED |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
N/A | |||
CANCEL_ONLY |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
|
❌ FAILURE |
➖ NOT_ATTEMPTED |
400 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ❌ FAILURE |
➖ NOT_ATTEMPTED |
429 |
||
✅ SUCCESS |
❌ FAILURE |
429 |
|||
ALLOW_FAILURE |
DO_NOTHING |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
409 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
N/A | ||
❌ FAILURE |
❌ FAILURE |
N/A | |||
❌ FAILURE |
✅ SUCCESS |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
N/A | |||
CANCEL_ONLY |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
|
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
409 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
200 |
||
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
409 |
备注:
如果同时指定了
cancelOrderId
和cancelOrigClientOrderId
参数,仅使用cancelOrderId
并忽略cancelOrigClientOrderId
。cancelNewClientOrderId
将替换已撤销订单的clientOrderId
,为新订单腾出空间。newClientOrderId
指定下单的clientOrderId
值。
仅当前一个订单已成交或过期时,才会接受具有相同 clientOrderId
的新订单。
新订单可以重用已取消订单的旧 clientOrderId
。
- 此 cancel-replace 操作不是事务性的。
如果一个操作成功但另一个操作失败,则仍然执行成功的操作。
例如,在 STOP_ON_FAILURE
模式下,如果下新订单达失败,旧订单仍然被撤销。
过滤器和订单次数限制会在撤销和下订单之前评估。
如果未尝试下新订单,订单次数仍会增加。
与
order.cancel
一样,如果您撤销订单列表的某个订单,则整个订单列表将被撤销。
数据源: 撮合引擎
注意: 响应示例没有显示所有可以出现的字段,更多请看 "订单响应中的特定条件时才会出现的字段" 部分。
当前挂单 (USER_DATA)
请求:
{
"id": "55f07876-4f6f-4c47-87dc-43e5fff3f2e7",
"method": "openOrders.status",
"params": {
"symbol": "BTCUSDT",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "d632b3fdb8a81dd44f82c7c901833309dd714fe508772a89b0a35b0ee0c48b89",
"timestamp": 1660813156812
}
}
响应:
{
"id": "55f07876-4f6f-4c47-87dc-43e5fff3f2e7",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "4d96324ff9d44481926157",
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00720000",
"cummulativeQuoteQty": "172.43931000",
"status": "PARTIALLY_FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"icebergQty": "0.00000000",
"time": 1660801715639,
"updateTime": 1660801717945,
"isWorking": true,
"workingTime": 1660801715639,
"origQuoteOrderQty": "0.00000000",
"selfTradePreventionMode": "NONE"
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 6
}
]
}
查询所有挂订单的执行状态。
如果您需要持续监控订单状态更新,请考虑使用 WebSocket Streams:
挂单的状态报告与 order.status
相同。
请注意,某些字段是可选的,仅在订单中有设置它们时才包括。
挂订单始终作为平面列表返回。
如果所有交易对被请求,请使用 symbol
字段来告知订单属于哪个交易对。
权重(IP): 根据交易对的数量进行调整:
参数 | 重量 |
---|---|
symbol |
6 |
none | 80 |
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | NO | 如果省略,则返回所有交易对的挂单 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 缓存 => 数据库
注意: 响应示例没有显示所有可以出现的字段,更多请看 "订单响应中的特定条件时才会出现的字段" 部分。
撤销单一交易对的所有挂单 (TRADE)
请求:
{
"id": "778f938f-9041-4b88-9914-efbf64eeacc8",
"method": "openOrders.cancelAll"
"params": {
"symbol": "BTCUSDT",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "773f01b6e3c2c9e0c1d217bc043ce383c1ddd6f0e25f8d6070f2b66a6ceaf3a5",
"timestamp": 1660805557200
}
}
响应:
{
"id": "778f938f-9041-4b88-9914-efbf64eeacc8",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "4d96324ff9d44481926157",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "91fe37ce9e69c90d6358c0",
"transactTime": 1684804350068,
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00001000",
"cummulativeQuoteQty": "0.23416100",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"icebergQty": "0.00000000",
"strategyId": 37463720,
"strategyType": 1000000,
"selfTradePreventionMode": "NONE"
},
{
"orderListId": 19431,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "iuVNVJYYrByz6C4yGOPPK0",
"transactionTime": 1660803702431,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"clientOrderId": "bX5wROblo6YeDwa9iTLeyY"
},
{
"symbol": "BTCUSDT",
"orderId": 12569099454,
"clientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "bX5wROblo6YeDwa9iTLeyY",
"orderId": 12569099453,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23450.50000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "23430.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "Tnu2IP0J5Y4mxw3IATBfmW",
"orderId": 12569099454,
"orderListId": 19431,
"clientOrderId": "OFFXQtxVFZ6Nbcg4PgE2DA",
"transactTime": 1684804350068,
"price": "23400.00000000",
"origQty": "0.00850000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"selfTradePreventionMode": "NONE"
}
]
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
撤销单一交易对的所有挂单, 包括订单列表。
订单和订单列表的撤销报告的格式与 order.cancel
中的格式相同。
权重(IP): 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 撮合引擎
注意: 响应示例没有显示所有可以出现的字段,更多请看 "订单响应中的特定条件时才会出现的字段" 部分。
OCO下单 - 已弃用 (TRADE)
请求:
{
"id": "56374a46-3061-486b-a311-99ee972eb648",
"method": "orderList.place",
"params": {
"symbol": "BTCUSDT",
"side": "SELL",
"price": "23420.00000000",
"quantity": "0.00650000",
"stopPrice": "23410.00000000",
"stopLimitPrice": "23405.00000000",
"stopLimitTimeInForce": "GTC",
"newOrderRespType": "RESULT",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "6689c2a36a639ff3915c2904871709990ab65f3c7a9ff13857558fd350315c35",
"timestamp": 1660801713767
}
}
响应:
{
"id": "57833dc0-e3f2-43fb-ba20-46480973b0aa",
"status": 200,
"result": {
"orderListId": 1274512,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "08985fedd9ea2cf6b28996",
"transactionTime": 1660801713793,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"orderListId": 1274512,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU",
"transactTime": 1660801713793,
"price": "23410.00000000",
"origQty": "0.00650000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "23405.00000000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"orderListId": 1274512,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us",
"transactTime": 1660801713793,
"price": "23420.00000000",
"origQty": "0.00650000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": 1660801713793,
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 2
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 2
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
发送新的OCO(one-cancels-the-other) 订单:
LIMIT_MAKER
订单 + STOP_LOSS
/STOP_LOSS_LIMIT
订单(称呼为 legs), 其中一个订单的激活会立即取消另一个订单。
使用 newOrderRespType
参数选择 orderReports
的响应格式。
以下示例适用于 RESULT
响应类型。
有关更多示例,请参阅 order.place
。
权重(IP): 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
side |
ENUM | YES | BUY 或者 SELL |
price |
DECIMAL | YES | Limit 订单的价格 |
quantity |
DECIMAL | YES | |
listClientOrderId |
STRING | NO | 订单列表挂单的客户自定义的唯一订单ID。如果未发送,则自动生成 |
limitClientOrderId |
STRING | NO | Limit 挂单的客户自定义的唯一订单ID。如果未发送,则自动生成 |
limitIcebergQty |
DECIMAL | NO | |
limitStrategyId |
INT | NO | 标识订单策略中的 limit 订单的任意ID。 |
limitStrategyType |
INT | NO | 标识 limit 订单策略的任意数值 小于 |
stopPrice |
DECIMAL | YES * | 必须指定 stopPrice 或 trailingDelta ,或两者都指定 |
trailingDelta |
INT | YES * | 请看 追踪止盈止损(Trailing Stop)订单常见问题 |
stopClientOrderId |
STRING | NO | Stop 订单的客户自定义的唯一订单ID。如果未发送,则自动生成 |
stopLimitPrice |
DECIMAL | NO * | |
stopLimitTimeInForce |
ENUM | NO * | 有关可用选项,请看 order.place |
stopIcebergQty |
DECIMAL | NO * | |
stopStrategyId |
INT | NO | 标识订单策略中的 stop 订单的任意ID。 |
stopStrategyType |
INT | NO | 标识 stop 订单策略的任意数值。 小于 |
newOrderRespType |
ENUM | NO | 可选的响应格式: ACK ,RESULT ,FULL (默认) |
selfTradePreventionMode |
ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有 EXPIRE_TAKER ,EXPIRE_MAKER ,EXPIRE_BOTH ,NONE 。 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
listClientOrderId
参数指定 OCO 对的listClientOrderId
。
只有当前一个 OCO 已满或完全过期时,才会接受具有相同 listClientOrderId
的新 OCO。
listClientOrderId
与单个订单的 clientOrderId
不同。
- legs 的价格限制:
side |
价格关系 |
---|---|
BUY |
price < 市场价格 < stopPrice |
SELL |
price > 市场价格 > stopPrice |
- 两个 legs 的
quantity
需要相同。
不过单个 leg 可以设置不同的冰山数量。
如果使用 stopIcebergQty
,stopLimitTimeInForce
必须是 GTC
。
trailingDelta
仅适用于 OCO 的STOP_LOSS
/STOP_LOSS_LIMIT
leg。
OCOs 将2个订单添加到未成交的订单计数, EXCHANGE_MAX_ORDERS
过滤器和 MAX_NUM_ORDERS
过滤器中。
数据源: 撮合引擎
发送新订单列表 - OTO订单 (TRADE)
请求:
{
"id": "1712544395950",
"method": "orderList.place.oto",
"params": {
"signature": "3e1e5ac8690b0caf9a2afd5c5de881ceba69939cc9d817daead5386bf65d0cbb",
"apiKey": "Rf07JlnL9PHVxjs27O5CvKNyOsV4qJ5gXdrRfpvlOdvMZbGZbPO5Ce2nIwfRP0iA",
"pendingQuantity": 1,
"pendingSide": "BUY",
"pendingType": "MARKET",
"symbol": "LTCBNB",
"recvWindow": "5000",
"timestamp": "1712544395951",
"workingPrice": 1,
"workingQuantity": 1,
"workingSide": "SELL",
"workingTimeInForce": "GTC",
"workingType": "LIMIT"
}
}
响应:
{
"id": "1712544395950",
"status": 200,
"result": {
"orderListId": 626,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "KA4EBjGnzvSwSCQsDdTrlf",
"transactionTime": 1712544395981,
"symbol": "1712544378871",
"orders": [
{
"symbol": "LTCBNB",
"orderId": 13,
"clientOrderId": "YiAUtM9yJjl1a2jXHSp9Ny"
},
{
"symbol": "LTCBNB",
"orderId": 14,
"clientOrderId": "9MxJSE1TYkmyx5lbGLve7R"
}
],
"orderReports": [
{
"symbol": "LTCBNB",
"orderId": 13,
"orderListId": 626,
"clientOrderId": "YiAUtM9yJjl1a2jXHSp9Ny",
"transactTime": 1712544395981,
"price": "1.000000",
"origQty": "1.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1712544395981,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBNB",
"orderId": 14,
"orderListId": 626,
"clientOrderId": "9MxJSE1TYkmyx5lbGLve7R",
"transactTime": 1712544395981,
"price": "0.000000",
"origQty": "1.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "BUY",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 10000000,
"count": 10
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 1000,
"count": 38
}
]
}
发送一个新的 OTO 订单。
- 一个 OTO 订单(One-Triggers-the-Other)是一个包含了两个订单的订单列表.
- 第一个订单被称为生效订单,必须为
LIMIT
或LIMIT_MAKER
类型的订单。最初,订单簿上只有生效订单。 - 第二个订单被称为待处理订单。它可以是任何订单类型,但不包括使用参数
quoteOrderQty
的MARKET
订单。只有当生效订单完全成交时,待处理订单才会被自动下单。 - 如果生效订单或者待处理订单中的任意一个被单独取消,订单列表中剩余的那个订单也会被随之取消或过期。
- 如果生效订单在下订单列表后立即完全成交,则可能会得到订单响应。其中,生效订单的状态为
FILLED
,但待处理订单的状态为PENDING_NEW
。针对这类情况,如果需要检查当前状态,您可以查询相关的待处理订单。 - OTOs 订单将2 个订单添加到未成交订单计数,
EXCHANGE_MAX_NUM_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器中。
权重(IP): 1
参数
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 listClientOrderId 值的新订单列表。 listClientOrderId 与 workingClientOrderId 和 pendingClientOrderId 不同。 |
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: ACK , FULL , RESULT |
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。 |
workingType | ENUM | YES | 支持的数值: LIMIT , LIMIT_MAKER |
workingSide | ENUM | YES | 支持的数值: BUY , SELL |
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。 |
workingPrice | DECIMAL | YES | |
workingQuantity | DECIMAL | YES | 用于设置生效订单的数量。 |
workingIcebergQty | DECIMAL | YES | 只有当 workingTimeInForce 为 GTC 时才能使用。 |
workingTimeInForce | ENUM | NO | 支持的数值: FOK , IOC , GTC |
workingStrategyId | INT | NO | 订单策略中用于标识生效订单的 ID。 |
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingType | ENUM | YES | 请注意,系统不支持使用 quoteOrderQty 的 MARKET 订单。 |
pendingSide | ENUM | YES | 支持的数值: BUY , SELL |
pendingClientOrderId | STRING | NO | 用于标识待处理订单的唯一ID。 如果未发送则自动生成。 |
pendingPrice | DECIMAL | NO | |
pendingStopPrice | DECIMAL | NO | |
pendingTrailingDelta | DECIMAL | NO | |
pendingQuantity | DECIMAL | YES | 用于设置待处理订单的数量。 |
pendingIcebergQty | DECIMAL | NO | 只有当 pendingTimeInForce 为 GTC 时才能使用。 |
pendingTimeInForce | ENUM | NO | 支持的数值: FOK , IOC , GTC |
pendingStrategyId | INT | NO | 订单策略中用于标识待处理订单的 ID。 |
pendingStrategyType | INT | NO | 用于标识待处理订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
recvWindow | LONG | NO | 不能大于 60000 。 |
timestamp | LONG | YES |
根据 pendingType
或者workingType
的不同值,对于某些参数的强制要求
根据 pendingType
或者workingType
的不同值,对于某些可选参数有强制要求,具体如下:
类型 | 强制要求的参数 | 其他信息 |
---|---|---|
workingType = LIMIT |
workingTimeInForce |
|
pendingType = LIMIT |
pendingPrice , pendingTimeInForce |
|
pendingType = STOP_LOSS 或 TAKE_PROFIT |
pendingStopPrice 与/或 pendingTrailingDelta |
|
pendingType = STOP_LOSS_LIMIT 或 TAKE_PROFIT_LIMIT |
pendingPrice , pendingStopPrice 与/或 pendingTrailingDelta , pendingTimeInForce |
数据源: 撮合引擎
发送新订单列表 - OTOCO订单 (TRADE)
请求:
{
"id": "1712544408508",
"method": "orderList.place.otoco",
"params": {
"signature": "c094473304374e1b9c5f7e2558358066cfa99df69f50f63d09cfee755136cb07",
"apiKey": "Rf07JlnL9PHVxjs27O5CvKNyOsV4qJ5gXdrRfpvlOdvMZbGZbPO5Ce2nIwfRP0iA",
"pendingQuantity": 5,
"pendingSide": "SELL",
"pendingBelowPrice": 5,
"pendingBelowType": "LIMIT_MAKER",
"pendingAboveStopPrice": 0.5,
"pendingAboveType": "STOP_LOSS",
"symbol": "LTCBNB",
"recvWindow": "5000",
"timestamp": "1712544408509",
"workingPrice": 1.5,
"workingQuantity": 1,
"workingSide": "BUY",
"workingTimeInForce": "GTC",
"workingType": "LIMIT"
}
}
响应:
{
"id": "1712544408508",
"status": 200,
"result": {
"orderListId": 629,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "GaeJHjZPasPItFj4x7Mqm6",
"transactionTime": 1712544408537,
"symbol": "1712544378871",
"orders": [
{
"symbol": "1712544378871",
"orderId": 23,
"clientOrderId": "OVQOpKwfmPCfaBTD0n7e7H"
},
{
"symbol": "1712544378871",
"orderId": 24,
"clientOrderId": "YcCPKCDMQIjNvLtNswt82X"
},
{
"symbol": "1712544378871",
"orderId": 25,
"clientOrderId": "ilpIoShcFZ1ZGgSASKxMPt"
}
],
"orderReports": [
{
"symbol": "LTCBNB",
"orderId": 23,
"orderListId": 629,
"clientOrderId": "OVQOpKwfmPCfaBTD0n7e7H",
"transactTime": 1712544408537,
"price": "1.500000",
"origQty": "1.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1712544408537,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBNB",
"orderId": 24,
"orderListId": 629,
"clientOrderId": "YcCPKCDMQIjNvLtNswt82X",
"transactTime": 1712544408537,
"price": "0.000000",
"origQty": "5.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS",
"side": "SELL",
"stopPrice": "0.500000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBNB",
"orderId": 25,
"orderListId": 629,
"clientOrderId": "ilpIoShcFZ1ZGgSASKxMPt",
"transactTime": 1712544408537,
"price": "5.000000",
"origQty": "5.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "ORDERS",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 10000000,
"count": 18
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 1000,
"count": 65
}
]
}
发送一个新的 OTOCO 订单。
- 一个 OTOCO 订单(One-Triggers-One-Cancels-the-Other)是一个包含了三个订单的订单列表。
- 第一个订单被称为生效订单,必须为
LIMIT
或LIMIT_MAKER
类型的订单。最初,订单簿上只有生效订单。- 生效订单的行为与此一致 OTO
- 一个OTOCO订单有两个待处理订单(pending above 和 pending below),它们构成了一个 OCO 订单列表。只有当生效订单完全成交时,待处理订单们才会被自动下单。
- 待处理上方(pending above)订单和待处理下方(pending below)订单都遵循与 OCO 订单列表相同的规则 Order List OCO。
- OTOCOs 在未成交订单计数,
EXCHANGE_MAX_NUM_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器的基础上添加3个订单。
权重(IP): 1
参数
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 listClientOrderId 值的新订单列表。 listClientOrderId 与 workingClientOrderId , pendingAboveClientOrderId 以及 pendingBelowClientOrderId 不同。 |
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: ACK , FULL , RESULT |
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。 |
workingType | ENUM | YES | 支持的数值: LIMIT , LIMIT_MAKER |
workingSide | ENUM | YES | 支持的数值: BUY , SELL |
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。 |
workingPrice | DECIMAL | YES | |
workingQuantity | DECIMAL | YES | |
workingIcebergQty | DECIMAL | NO | 只有当 workingTimeInForce 为 GTC 时才能使用。 |
workingTimeInForce | ENUM | NO | 支持的数值: FOK , IOC , GTC |
workingStrategyId | INT | NO | 订单策略中用于标识生效订单的 ID。 |
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingSide | ENUM | YES | 支持的数值: BUY , SELL |
pendingQuantity | DECIMAL | YES | |
pendingAboveType | ENUM | YES | 支持的数值: LIMIT_MAKER ,STOP_LOSS 和 STOP_LOSS_LIMIT |
pendingAboveClientOrderId | STRING | NO | 用于标识待处理上方订单的唯一ID。 如果未发送则自动生成。 |
pendingAbovePrice | DECIMAL | NO | |
pendingAboveStopPrice | DECIMAL | NO | |
pendingAboveTrailingDelta | DECIMAL | NO | |
pendingAboveIcebergQty | DECIMAL | NO | 只有当 pendingAboveTimeInForce 为 GTC 时才能使用。 |
pendingAboveTimeInForce | ENUM | NO | |
pendingAboveStrategyId | INT | NO | 订单策略中用于标识待处理上方订单的 ID。 |
pendingAboveStrategyType | INT | NO | 用于标识待处理上方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingBelowType | ENUM | NO | 支持的数值: LIMIT_MAKER ,STOP_LOSS 和 STOP_LOSS_LIMIT |
pendingBelowClientOrderId | STRING | NO | 用于标识待处理下方订单的唯一ID。 如果未发送则自动生成。 |
pendingBelowPrice | DECIMAL | NO | |
pendingBelowStopPrice | DECIMAL | NO | |
pendingBelowTrailingDelta | DECIMAL | NO | |
pendingBelowIcebergQty | DECIMAL | NO | 只有当 pendingBelowTimeInForce 为 GTC 时才能使用。 |
pendingBelowTimeInForce | ENUM | NO | |
pendingBelowStrategyId | INT | NO | 订单策略中用于标识待处理下方订单的 ID。 |
pendingBelowStrategyType | INT | NO | 用于标识待处理下方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
recvWindow | LONG | NO | 不能大于 60000 。 |
timestamp | LONG | YES |
根据 pendingAboveType
, pendingBelowType
或者workingType
的不同值,对于某些参数的强制要求
根据 pendingAboveType
, pendingBelowType
或者workingType
的不同值,对于某些可选参数有强制要求,具体如下:
类型 | 强制要求的参数 | 其他信息 |
---|---|---|
workingType = LIMIT |
workingTimeInForce |
|
pendingAboveType = LIMIT_MAKER |
pendingAbovePrice |
|
pendingAboveType = STOP_LOSS |
pendingAboveStopPrice 与/或 pendingAboveTrailingDelta |
|
pendingAboveType =STOP_LOSS_LIMIT |
pendingAbovePrice , pendingAboveStopPrice 与/或 pendingAboveTrailingDelta , pendingAboveTimeInForce |
|
pendingBelowType = LIMIT_MAKER |
pendingBelowPrice |
|
pendingBelowType = STOP_LOSS |
pendingBelowStopPrice 与/或 pendingBelowTrailingDelta |
|
pendingBelowType =STOP_LOSS_LIMIT |
pendingBelowPrice , pendingBelowStopPrice 与/或 pendingBelowTrailingDelta , pendingBelowTimeInForce |
数据源: 撮合引擎
查询订单列表 (USER_DATA)
请求:
{
"id": "b53fd5ff-82c7-4a04-bd64-5f9dc42c2100",
"method": "orderList.status",
"params": {
"origClientOrderId": "08985fedd9ea2cf6b28996"
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "d12f4e8892d46c0ddfbd43d556ff6d818581b3be22a02810c2c20cb719aed6a4",
"timestamp": 1660801713965
}
}
响应:
{
"id": "b53fd5ff-82c7-4a04-bd64-5f9dc42c2100",
"status": 200,
"result": {
"orderListId": 1274512,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "08985fedd9ea2cf6b28996",
"transactionTime": 1660801713793,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us"
}
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 4
}
]
}
检查订单列表的执行状态。
对于单个订单的执行状态,使用 order.status
。
权重(IP): 4
Parameters:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
origClientOrderId |
STRING | YES | 通过 listClientOrderId 获取订单列表 |
orderListId |
INT | 通过 orderListId 获取订单列表 |
|
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
origClientOrderId
指的是订单列表本身的listClientOrderId
。如果同时指定了
origClientOrderId
和orderListId
参数,仅使用origClientOrderId
并忽略orderListId
。
数据源: 数据库
发送新订单列表 - OCO 订单 (TRADE)
请求:
{
"id": "56374a46-3261-486b-a211-99ed972eb648",
"method": "orderList.place.oco",
"params":
{
"symbol": "LTCBNB",
"side": "BUY",
"quantity": 1,
"timestamp": 1711062760647,
"aboveType": "STOP_LOSS_LIMIT",
"abovePrice": "1.5",
"aboveStopPrice": "1.50000001",
"aboveTimeInForce": "GTC",
"belowType": "LIMIT_MAKER",
"belowPrice": "1.49999999",
"apiKey": "duwNf97YPLqhFIk7kZF0dDdGYVAXStA7BeEz0fIT9RAhUbixJtyS6kJ3hhzJsRXC",
"signature": "64614cfd8dd38260d4fd86d3c455dbf4b9d1c8a8170ea54f700592a986c30ddb"
}
}
适用
newOrderRespType
RESULT
的响应:
{
"id": "56374a46-3261-486b-a211-99ed972eb648",
"status": 200,
"result":
{
"orderListId": 2,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "cKPMnDCbcLQILtDYM4f4fX",
"transactionTime": 1711062760648,
"symbol": "LTCBNB",
"orders":
[
{
"symbol": "LTCBNB",
"orderId": 2,
"clientOrderId": "0m6I4wfxvTUrOBSMUl0OPU"
},
{
"symbol": "LTCBNB",
"orderId": 3,
"clientOrderId": "Z2IMlR79XNY5LU0tOxrWyW"
}
],
"orderReports":
[
{
"symbol": "LTCBNB",
"orderId": 2,
"orderListId": 2,
"clientOrderId": "0m6I4wfxvTUrOBSMUl0OPU",
"transactTime": 1711062760648,
"price": "1.50000000",
"origQty": "1.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "1.50000001",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBNB",
"orderId": 3,
"orderListId": 2,
"clientOrderId": "Z2IMlR79XNY5LU0tOxrWyW",
"transactTime": 1711062760648,
"price": "1.49999999",
"origQty": "1.000000",
"executedQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": 1711062760648,
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits":
[
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 2
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 2
},
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
发送新 one-cancels-the-other (OCO) 订单,激活其中一个订单会立即取消另一个订单。
- OCO 有 2 legs,称为 上方 leg 和 下方 leg。
- 其中一条 leg 必须是
LIMIT_MAKER
订单,另一条 leg 必须是STOP_LOSS
或STOP_LOSS_LIMIT
订单。 - 针对价格限制:
- 如果 OCO 订单方向是
SELL
:LIMIT_MAKER
price
> 最后交易价格 >stopPrice
- 如果 OCO 订单方向是
BUY
:LIMIT_MAKER
price
< 最后交易价格 <stopPrice
- 如果 OCO 订单方向是
- OCOs 将2个订单添加到未成交的订单计数,
EXCHANGE_MAX_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器中。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
listClientOrderId |
STRING | NO | 整个 order list 的唯一ID。 如果未发送则自动生成。 仅当前一个订单已填满或完全过期时,才会接受具有相同的 listClientOrderId 。 listClientOrderId 与 aboveClientOrderId 和 belowCLientOrderId 不同。 |
side |
ENUM | YES | 订单方向:BUY or SELL |
quantity |
DECIMAL | YES | 两个 legs 的数量。 |
aboveType |
ENUM | YES | 支持值:STOP_LOSS_LIMIT , STOP_LOSS , LIMIT_MAKER 。 |
aboveClientOrderId |
STRING | NO | 上方 leg 的唯一ID。 如果未发送则自动生成。 |
aboveIcebergQty |
LONG | NO | 请注意,只有当 aboveTimeInForce 为 GTC 时才能使用。 |
abovePrice |
DECIMAL | NO | |
aboveStopPrice |
DECIMAL | NO | 如果 aboveType 是 STOP_LOSS 或 STOP_LOSS_LIMIT 才能使用。必须指定 aboveStopPrice 或 aboveTrailingDelta 或两者。 |
aboveTrailingDelta |
LONG | NO | 请看 追踪止盈止损(Trailing Stop)订单常见问题. |
aboveTimeInForce |
DECIMAL | NO | 如果 aboveType 是 STOP_LOSS_LIMIT ,则为必填项。 |
aboveStrategyId |
INT | NO | 订单策略中上方 leg 订单的 ID。 |
aboveStrategyType |
INT | NO | 上方 leg 订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
belowType |
ENUM | YES | 支持值:STOP_LOSS_LIMIT , STOP_LOSS , LIMIT_MAKER |
belowClientOrderId |
STRING | NO | |
belowIcebergQty |
LONG | NO | 请注意,只有当 belowTimeInForce 为 GTC 时才能使用。 |
belowPrice |
DECIMAL | NO | |
belowStopPrice |
DECIMAL | NO | 如果 belowType 是 STOP_LOSS 或 STOP_LOSS_LIMIT 才能使用 必须指定 belowStopPrice 或 belowTrailingDelta 或两者。 |
belowTrailingDelta |
LONG | NO | 请看 追踪止盈止损(Trailing Stop)订单常见问题。 |
belowTimeInForce |
ENUM | NO | 如果belowType 是 STOP_LOSS_LIMIT ,则为必须配合提交的值。 |
belowStrategyId |
INT | NO | 订单策略中下方 leg 订单的 ID。 |
belowStrategyType |
INT | NO | 下方 leg 订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
newOrderRespType |
ENUM | NO | 响应格式可选值: ACK , RESULT , FULL 。 |
selfTradePreventionMode |
ENUM | NO | 允许的 ENUM 取决于交易对上的配置。 可能支持的值为 EXPIRE_TAKER , EXPIRE_MAKER , EXPIRE_BOTH , NONE 。 |
apiKey |
STRING | YES | |
recvWindow |
LONG | NO | 不能大于 60000 。 |
signature |
STRING | YES | |
timestamp |
LONG | YES |
数据源: 撮合引擎
撤销订单列表 (TRADE)
请求:
{
"id": "c5899911-d3f4-47ae-8835-97da553d27d0",
"method": "orderList.cancel",
"params": {
"symbol": "BTCUSDT",
"orderListId": 1274512,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "4973f4b2fee30bf6d45e4a973e941cc60fdd53c8dd5a25edeac96f5733c0ccee",
"timestamp": 1660801720210
}
}
响应:
{
"id": "c5899911-d3f4-47ae-8835-97da553d27d0",
"status": 200,
"result": {
"orderListId": 1274512,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "6023531d7edaad348f5aff",
"transactionTime": 1660801720215,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"orderListId": 1274512,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU",
"transactTime": 1660801720215,
"price": "23410.00000000",
"origQty": "0.00650000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "23405.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"orderListId": 1274512,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us",
"transactTime": 1660801720215,
"price": "23420.00000000",
"origQty": "0.00650000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"selfTradePreventionMode": "NONE"
}
]
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
取消整个订单列表。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
orderListId |
INT | YES | 通过 orderListId 撤销订单列表 |
listClientOrderId |
STRING | 通过 listClientId 撤销订单列表 |
|
newClientOrderId |
STRING | NO | 已取消订单列表内订单的新 ID。如果未发送,则自动生成。 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
如果同时指定了
orderListId
和listClientOrderId
参数,仅使用orderListId
并忽略listClientOrderId
。使用
order.cancel
取消单个订单也将会取消整个订单列表。
数据源: 撮合引擎
查询订单列表挂单 (USER_DATA)
请求:
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"method": "openOrderLists.status",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "1bea8b157dd78c3da30359bddcd999e4049749fe50b828e620e12f64e8b433c9",
"timestamp": 1660801713831
}
}
响应:
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"status": 200,
"result": [
{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "08985fedd9ea2cf6b28996",
"transactionTime": 1660801713793,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 4,
"clientOrderId": "CUhLgTXnX5n2c0gWiLpV4d"
},
{
"symbol": "BTCUSDT",
"orderId": 5,
"clientOrderId": "1ZqG7bBuYwaF4SU8CwnwHm"
}
]
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 6
}
]
}
查询所有订单列表挂单的执行状态。
如果您需要持续监控订单状态更新,请考虑使用 WebSocket Streams:
权重: 6
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 数据库
下 SOR 订单 (TRADE)
请求:
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"method": "sor.order.place",
"params":
{
"symbol": "BTCUSDT",
"side": "BUY",
"type": "LIMIT",
"quantity": 0.5,
"timeInForce": "GTC",
"price": 31000,
"timestamp": 1687485436575,
"apiKey": "u5lgqJb97QWXWfgeV4cROuHbReSJM9rgQL0IvYcYc7BVeA5lpAqqc3a5p2OARIFk",
"signature": "fd301899567bc9472ce023392160cdc265ad8fcbbb67e0ea1b2af70a4b0cd9c7"
}
}
响应:*
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"orderId": 2,
"orderListId": -1,
"clientOrderId": "sBI1KM6nNtOfj5tccZSKly",
"transactTime": 1689149087774,
"price": "31000.00000000",
"origQty": "0.50000000",
"executedQty": "0.50000000",
"cummulativeQuoteQty": "14000.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1689149087774,
"fills": [
{
"matchType": "ONE_PARTY_TRADE_REPORT",
"price": "28000.00000000",
"qty": "0.50000000",
"commission": "0.00000000",
"commissionAsset": "BTC",
"tradeId": -1,
"allocId": 0
}
],
"workingFloor": "SOR",
"selfTradePreventionMode": "NONE",
"usedSor": true
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
下使用智能订单路由 (SOR) 的新订单。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
side |
ENUM | YES | BUY 或 SELL |
type |
ENUM | YES | |
timeInForce |
ENUM | NO | 只适用于限价 订单类型 |
price |
DECIMAL | NO | 只适用于限价 订单类型 |
quantity |
DECIMAL | YES | |
newClientOrderId |
STRING | NO | 用户自定义的任意唯一值orderid,如空缺系统会自动赋值 |
newOrderRespType |
ENUM | NO | 可选的响应格式:
|
icebergQty |
DECIMAL | NO | |
strategyId |
INT | NO | 用于标识订单策略中订单的任意数字值。 |
strategyType |
INT | NO | 用于标识订单策略的任意数字值。 小于 |
selfTradePreventionMode |
ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有 EXPIRE_TAKER ,EXPIRE_MAKER ,EXPIRE_BOTH ,NONE 。 |
apiKey |
STRING | YES | |
timestamp |
INT | YES | |
recvWindow |
INT | NO | 赋值不能大于 60000 |
signature |
STRING | YES |
注意: sor.order.place
只支持 限价
和 市场
单, 并不支持 quoteOrderQty
。
数据源: 撮合引擎
测试 SOR 下单接口 (TRADE)
请求:
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"method": "sor.order.test",
"params":
{
"symbol": "BTCUSDT",
"side": "BUY",
"type": "LIMIT",
"quantity": 0.1,
"timeInForce": "GTC",
"price": 0.1,
"timestamp": 1687485436575,
"apiKey": "u5lgqJb97QWXWfgeV4cROuHbReSJM9rgQL0IvYcYc7BVeA5lpAqqc3a5p2OARIFk",
"signature": "fd301899567bc9472ce023392160cdc265ad8fcbbb67e0ea1b2af70a4b0cd9c7"
}
}
响应:
{
"id": "3a4437e2-41a3-4c19-897c-9cadc5dce8b6",
"status": 200,
"result": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 1
}
]
}
用于测试使用智能订单路由 (SOR) 的订单请求,但不会提交到撮合引擎。
权重:
条件 | 请求权重 |
---|---|
没有 computeCommissionRates |
1 |
有 computeCommissionRates |
20 |
参数:
除了 sor.order.place
所有参数,
下面参数也有效:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
computeCommissionRates |
BOOLEAN | NO | 默认: false |
数据源: 缓存
账户请求
账户信息 (USER_DATA)
请求:
{
"id": "605a6d20-6588-4cb9-afa0-b0ab087507ba",
"method": "account.status",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "83303b4a136ac1371795f465808367242685a9e3a42b22edb4d977d0696eb45c",
"timestamp": 1660801839480
}
}
响应:
{
"id": "605a6d20-6588-4cb9-afa0-b0ab087507ba",
"status": 200,
"result": {
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"commissionRates": {
"maker": "0.00150000",
"taker": "0.00150000",
"buyer": "0.00000000",
"seller":"0.00000000"
},
"brokered": false,
"requireSelfTradePrevention": false,
"preventSor": false,
"updateTime": 1660801833000,
"accountType": "SPOT",
"balances": [
{
"asset": "BNB",
"free": "0.00000000",
"locked": "0.00000000"
},
{
"asset": "BTC",
"free": "1.3447112",
"locked": "0.08600000"
},
{
"asset": "USDT",
"free": "1021.21000000",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
],
"uid": 354937868
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取当前账户信息。
权重(IP): 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
apiKey |
STRING | YES | |
omitZeroBalances |
BOOLEAN | NO | 如果true ,将隐藏所有零余额。默认值: false 。 |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 缓存 => 数据库
查询未成交的订单计数 (USER_DATA)
请求:
{
"id": "d3783d8d-f8d1-4d2c-b8a0-b7596af5a664",
"method": "account.rateLimits.orders",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "76289424d6e288f4dc47d167ac824e859dabf78736f4348abbbac848d719eb94",
"timestamp": 1660801839500
}
}
响应:
{
"id": "d3783d8d-f8d1-4d2c-b8a0-b7596af5a664",
"status": 200,
"result": [
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 0
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 0
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 40
}
]
}
显示用户在所有时间间隔内的未成交订单计数。
权重(IP): 40
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
数据源: 缓存
账户订单历史 (USER_DATA)
请求:
{
"id": "734235c2-13d2-4574-be68-723e818c08f3",
"method": "allOrders",
"params": {
"symbol": "BTCUSDT",
"startTime": 1660780800000,
"endTime": 1660867200000,
"limit": 5,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "f50a972ba7fad92842187643f6b930802d4e20bce1ba1e788e856e811577bd42",
"timestamp": 1661955123341
}
}
响应:
{
"id": "734235c2-13d2-4574-be68-723e818c08f3",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"orderId": 12569099453,
"orderListId": -1,
"clientOrderId": "4d96324ff9d44481926157",
"price": "23416.10000000",
"origQty": "0.00847000",
"executedQty": "0.00847000",
"cummulativeQuoteQty": "198.33521500",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"icebergQty": "0.00000000",
"time": 1660801715639,
"updateTime": 1660801717945,
"isWorking": true,
"workingTime": 1660801715639,
"origQuoteOrderQty": "0.00000000",
"selfTradePreventionMode": "NONE",
"preventedMatchId": 0, // 这仅在订单因 STP 而过期时可见
"preventedQuantity": "1.200000" // 这仅在订单因 STP 而过期时可见
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取所有账户订单; 有效,已取消或已完成。按时间范围过滤。
订单状态报告与 order.status
相同。
请注意,某些字段是可选的,仅在订单中有设置它们时才包括。
权重(IP): 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
orderId |
INT | NO | 起始订单ID |
startTime |
INT | NO | |
endTime |
INT | NO | |
limit |
INT | NO | 默认 500; 最大值 1000 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
- 如果指定了
startTime
和/或endTime
,则忽略orderId
。
订单是按照最后一次更新的执行状态的time
过滤的。
如果指定了
orderId
,返回的订单将是订单ID >=orderId
如果不指定条件,则返回最近的订单。
对于某些历史订单,
cummulativeQuoteQty
响应字段可能为负数,代表着此时数据还不可用。
数据源: 数据库
账户订单列表历史 (USER_DATA)
请求:
{
"id": "8617b7b3-1b3d-4dec-94cd-eefd929b8ceb",
"method": "allOrderLists",
"params": {
"startTime": 1660780800000,
"endTime": 1660867200000,
"limit": 5,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "c8e1484db4a4a02d0e84dfa627eb9b8298f07ebf12fcc4eaf86e4a565b2712c2",
"timestamp": 1661955123341
}
}
响应:
{
"id": "8617b7b3-1b3d-4dec-94cd-eefd929b8ceb",
"status": 200,
"result": [
{
"orderListId": 1274512,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "08985fedd9ea2cf6b28996",
"transactionTime": 1660801713793,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 12569138901,
"clientOrderId": "BqtFCj5odMoWtSqGk2X9tU"
},
{
"symbol": "BTCUSDT",
"orderId": 12569138902,
"clientOrderId": "jLnZpj5enfMXTuhKB1d0us"
}
]
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
查询所有订单列表的信息,按时间范围过滤。
订单列表的状态报告与 orderList.status
相同。
权重(IP): 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
fromId |
INT | NO | 起始的 Order list ID |
startTime |
INT | NO | |
endTime |
INT | NO | |
limit |
INT | NO | 默认 500; 最大值 1000 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
- 如果指定了
startTime
和/或endTime
,则忽略fromId
。
订单列表是按照最后一次更新的订单列表执行状态的 transactionTime
过滤的。
如果指定了
fromId
,返回的订单列表将是 order list ID >=fromId
。如果不指定条件,则返回最近的订单列表。
数据源: 数据库
账户成交历史 (USER_DATA)
请求:
{
"id": "f4ce6a53-a29d-4f70-823b-4ab59391d6e8",
"method": "myTrades",
"params": {
"symbol": "BTCUSDT",
"startTime": 1660780800000,
"endTime": 1660867200000,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "c5a5ffb79fd4f2e10a92f895d488943a57954edf5933bde3338dfb6ea6d6eefc",
"timestamp": 1661955125250
}
}
响应:
{
"id": "f4ce6a53-a29d-4f70-823b-4ab59391d6e8",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"id": 1650422481,
"orderId": 12569099453,
"orderListId": -1,
"price": "23416.10000000",
"qty": "0.00635000",
"quoteQty": "148.69223500",
"commission": "0.00000000",
"commissionAsset": "BNB",
"time": 1660801715793,
"isBuyer": false,
"isMaker": true,
"isBestMatch": true
},
{
"symbol": "BTCUSDT",
"id": 1650422482,
"orderId": 12569099453,
"orderListId": -1,
"price": "23416.50000000",
"qty": "0.00212000",
"quoteQty": "49.64298000",
"commission": "0.00000000",
"commissionAsset": "BNB",
"time": 1660801715793,
"isBuyer": false,
"isMaker": true,
"isBestMatch": true
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取账户指定交易对的成交历史,按时间范围过滤。
权重(IP): 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES | |
orderId |
INT | NO | |
startTime |
INT | NO | |
endTime |
INT | NO | |
fromId |
INT | NO | 起始交易 ID |
limit |
INT | NO | 默认 500; 最大值 1000 |
apiKey |
STRING | YES | |
recvWindow |
INT | NO | 值不能大于 60000 |
signature |
STRING | YES | |
timestamp |
INT | YES |
备注:
如果指定了
fromId
,则返回的交易将是 交易ID >=fromId
。如果指定了
startTime
和/或endTime
,则交易按执行时间(time
)过滤。
fromId
不能与 startTime
和 endTime
一起使用。
- 如果指定了
orderId
,则只返回与该订单相关的交易。
startTime
和 endTime
不能与 orderId
一起使用。
- 如果不指定条件,则返回最近的交易。
数据源: 缓存 => 数据库
账户的 Prevented Matches (USER_DATA)
请求:
{
"id": "g4ce6a53-a39d-4f71-823b-4ab5r391d6y8",
"method": "myPreventedMatches",
"params": {
"symbol": "BTCUSDT",
"orderId": 35,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "c5a5ffb79fd4f2e10a92f895d488943a57954edf5933bde3338dfb6ea6d6eefc",
"timestamp": 1673923281052
}
}
响应:
{
"id": "g4ce6a53-a39d-4f71-823b-4ab5r391d6y8",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"preventedMatchId": 1,
"takerOrderId": 5,
"makerOrderId": 3,
"tradeGroupId": 1,
"selfTradePreventionMode": "EXPIRE_MAKER",
"price": "1.100000",
"makerPreventedQuantity": "1.300000",
"transactTime": 1669101687094
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取因 STP 触发而过期的订单列表。
这些是支持的组合:
symbol
+preventedMatchId
symbol
+orderId
symbol
+orderId
+fromPreventedMatchId
(limit
默认为 500)symbol
+orderId
+fromPreventedMatchId
+limit
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
preventedMatchId | LONG | NO | |
orderId | LONG | NO | |
fromPreventedMatchId | LONG | NO | |
limit | INT | NO | 默认:500 ;最大:1000 |
recvWindow | LONG | NO | 赋值不得大于 60000 |
timestamp | LONG | YES |
权重(IP):
情况 | 权重 |
---|---|
如果 symbol 无效 |
2 |
用 preventedMatchId 查询 |
2 |
用 orderId 查询 |
20 |
数据源:
数据库
查询分配结果 (USER_DATA)
请求:
{
"id": "g4ce6a53-a39d-4f71-823b-4ab5r391d6y8",
"method": "myAllocations",
"params": {
"symbol": "BTCUSDT",
"orderId": 500,
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "c5a5ffb79fd4f2e10a92f895d488943a57954edf5933bde3338dfb6ea6d6eefc",
"timestamp": 1673923281052
}
}
响应:
{
"id": "g4ce6a53-a39d-4f71-823b-4ab5r391d6y8",
"status": 200,
"result": [
{
"symbol": "BTCUSDT",
"allocationId": 0,
"allocationType": "SOR",
"orderId": 500,
"orderListId": -1,
"price": "1.00000000",
"qty": "0.10000000",
"quoteQty": "0.10000000",
"commission": "0.00000000",
"commissionAsset": "BTC",
"time": 1687319487614,
"isBuyer": false,
"isMaker": false,
"isAllocator": false
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
检索由 SOR 订单生成引起的分配结果。
权重: 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | Yes | |
startTime |
LONG | No | |
endTime |
LONG | No | |
fromAllocationId |
INT | No | |
limit |
INT | No | 默认值 500; 最大值 1000 |
orderId |
LONG | No | |
recvWindow |
LONG | No | 不能大于 60000 |
timestamp |
LONG | No |
支持的参数组合:
参数 | 响应 |
---|---|
symbol |
按从最旧到最新排序的分配 |
symbol + startTime |
从 startTime 开始的最旧的分配 |
symbol + endTime |
到 endTime 为止的最新的分配 |
symbol + startTime + endTime |
在指定时间范围内的分配 |
symbol + fromAllocationId |
从指定 AllocationId 开始的分配 |
symbol + orderId |
按从最旧到最新排序并和特定订单关联的分配 |
symbol + orderId + fromAllocationId |
从指定 AllocationId 开始并和特定订单关联的分配 |
注意: startTime
和 endTime
之间的时间不能超过 24 小时。
数据源: 数据库
账户佣金费率 (USER_DATA)
请求
{
"id": "d3df8a61-98ea-4fe0-8f4e-0fcea5d418b0",
"method": "account.commission",
"params": {
"symbol": "BTCUSDT",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A",
"signature": "c5a5ffb79fd4f2e10a92f895d488943a57954edf5933bde3338dfb6ea6d6eefc",
"timestamp": 1673923281052
}
}
响应:
{
"id": "d3df8a61-98ea-4fe0-8f4e-0fcea5d418b0",
"status": 200,
"result":
[
{
"symbol": "BTCUSDT",
"standardCommission": // 订单交易的标准佣金率。
{
"maker": "0.00000010",
"taker": "0.00000020",
"buyer": "0.00000030",
"seller": "0.00000040"
},
"taxCommission": // 订单交易的税率。
{
"maker": "0.00000112",
"taker": "0.00000114",
"buyer": "0.00000118",
"seller": "0.00000116"
},
"discount": // 以BNB支付时的标准佣金折扣。
{
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.75000000" // 当用BNB支付佣金时,在标准佣金上按此比率打折
}
}
],
"rateLimits":
[
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 20
}
]
}
获取当前账户的佣金费率。
参数:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol |
STRING | YES |
权重: 20
数据源: 数据库
Websocket 账户信息
以下请求管理 Websocket 账户信息 订阅。
注意: 账户信息只能在连接到用户数据流服务器的连接上获取, 其服务器URL是 wss://stream.binance.com:443
.
开始用户数据流 (USER_STREAM)
请求:
{
"id": "d3df8a61-98ea-4fe0-8f4e-0fcea5d418b0",
"method": "userDataStream.start",
"params": {
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"
}
}
响应:
{
"id": "d3df8a61-98ea-4fe0-8f4e-0fcea5d418b0",
"status": 200,
"result": {
"listenKey": "xs0mRXdAKlIPDRFrlPcw0qI41Eh3ixNntmymGyhrhgqo7L6FuLaWArTD7RLP"
},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
开始新的用户数据流
之后在 WebSocket Stream 上订阅收到的 listen key。
注意:
数据流将在 60 分钟后关闭,除非定期发送 userDataStream.ping
请求。
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
apiKey |
STRING | YES |
数据源: 缓存
Ping 账户数据流 (USER_STREAM)
请求:
{
"id": "815d5fce-0880-4287-a567-80badf004c74",
"method": "userDataStream.ping",
"params": {
"listenKey": "xs0mRXdAKlIPDRFrlPcw0qI41Eh3ixNntmymGyhrhgqo7L6FuLaWArTD7RLP",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"
}
}
响应:
{
"id": "815d5fce-0880-4287-a567-80badf004c74",
"status": 200,
"response": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
即使在监听, 用户数据流也会在60分钟后会自动关闭。
若要保持账户数据流的活动状态,必须使用 userDataStream.ping
请求定期发送 ping,建议的是在每30分钟发送一次 ping。
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
listenKey |
STRING | YES | |
apiKey |
STRING | YES |
数据源: 缓存
关闭账户数据流 (USER_STREAM)
请求:
{
"id": "819e1b1b-8c06-485b-a13e-131326c69599",
"method": "userDataStream.stop",
"params": {
"listenKey": "xs0mRXdAKlIPDRFrlPcw0qI41Eh3ixNntmymGyhrhgqo7L6FuLaWArTD7RLP",
"apiKey": "vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"
}
}
响应:
{
"id": "819e1b1b-8c06-485b-a13e-131326c69599",
"status": 200,
"response": {},
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 2
}
]
}
强制停止和关闭账户数据流
权重(IP): 2
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
listenKey |
STRING | YES | |
apiKey |
STRING | YES |
数据源: 缓存