-
Order Book 深度的变动
- 之前深度的数量在一些极端情况下会出现负数.
- 之后深度数量不会溢出, 而是限制在64位的最大值, 这表示深度的数量达到,或者超过了最大值. 最大值和交易对的
base asset
的精度有关. 比如如果精度是8位小数,最大值则为92,233,720,368.54775807. - 原有的深度价位, 在修复上线后, 需要价位上有变动, 才能体现新的修复.
-
哪里有影响?
- 现货深度接口
GET /api/v3/depth
- Websocket Streams
<symbol>@depth
<symbol>@depth@100ms
<symbol>@depth<levels>
<symbol>@depth<levels>@100ms
- 现货深度接口
-
MAX_POSITION
的更新- 如果一个订单的数量(
quantity
) 可能导致持有仓位溢出, 会触发过滤器MAX_POSITION
.
- 如果一个订单的数量(
GET api/v3/aggTrades
更新- 如果同时提供
startTime
和endTime
, 旧的记录会返回.
- 如果同时提供
- 如果接口
GET /api/v3/myTrades
中没有提供参数symbol
, 错误消息变为:
{
"code": -1102,
"msg": "Mandatory parameter 'symbol' was not sent, was empty/null, or malformed."
}
-
下面的接口提供参数
symbols
用于查询多个symbol.GET /api/v3/ticker/24hr
GET /api/v3/ticker/price
GET /api/v3/ticker/bookTicker
-
上面接口的权重取决于请求
symbols
的数量, 具体请看下面的列表:
接口 | Symbols的数量 | 权重 |
---|---|---|
GET /api/v3/ticker/price |
Any | 2 |
GET /api/v3/ticker/bookTicker |
Any | 2 |
GET /api/v3/ticker/24hr |
1-20 | 1 |
GET /api/v3/ticker/24hr |
21-100 | 20 |
GET /api/v3/ticker/24hr |
>= 101 | 40 |
REST API
- 现货交易支持追踪止损(Trailing Stop)订单.
- 追踪止损通过一个新的参数
trailingDelta
来设置基于市场价的一个自动触发价格. - 只适用于订单类型:
STOP_LOSS
,STOP_LOSS_LIMIT
,TAKE_PROFIT
,TAKE_PROFIT_LIMIT
. - 参数
trailingDelta
的单位为基点(BIPS).- 比如一个
STOP_LOSS
卖单设置trailingDelta
为100, 那么订单会在当前市场价格从下单后的最高点下降1%的时候被触发。(100 / 10,000 => 0.01 => 1%)
- 比如一个
- 用于OCO订单的时候, 如果市场变动触发了
STOP_LOSS
订单, 那么此止损订单变成追踪止损订单. - 当参数
trailingDelta
和stopPrice
一起使用时, 一旦stopPrice
条件被触发,系统会开始追踪当前的价格变动. 从stopPrice
价格开始,到基于trailingDelta
值之间变动. - 如果没有提供
stopPrice
, 系统开始追踪价格从最新价到基于trailingDelta
值之间变动.
- 追踪止损通过一个新的参数
POST /api/v3/order
变动- 添加新可选参数
trailingDelta
- 添加新可选参数
POST /api/v3/order/test
变动- 添加新可选参数
trailingDelta
- 添加新可选参数
POST /api/v3/order/oco
变动- 添加新可选参数
trailingDelta
- 添加新可选参数
- 添加新的过滤器
TRAILING_DELTA
- 用于限定
trailingDelta
的最大和最小值.
- 用于限定
USER DATA STREAM
- User Data Stream 的
executionReport
添加新参数- "d" 代表
trailingDelta
- "d" 代表
Note: 下面的变更会在后面几天上线.
GET api/v3/allOrders
如果没有提供symbol
, 则返回错误信息:{ "code": -1102, "msg": "Mandatory parameter 'symbol' was not sent, was empty/null, or malformed." }
- 修复一个错误信息中的拼写错误。 如果账号被禁用了相应的权限(比如提款,交易等), 则服务器返回错误:
"This action is disabled on this account."
- 在市场数据(market data)审计中,发现了一些现货的聚合交易数据(aggTrades)中的问题.
- 丢失的记录已经被补回.
- 重复的记录被标记成无效,具体的值设置成如下:
- p = '0' // price
- q = '0' // qty
- f = -1 // first_trade_id
- l = -1 // last_trade_id
- 在接口
GET /api/v3/exchangeInfo
中添加新字段allowTrailingStop
.
- 现货规则
PRICE_FILTER
里面的(price-minPrice) % tickSize == 0
改成price % tickSize == 0
- 新添加了一个规则
PERCENT_PRICE_BY_SIDE
. - 接口
GET api/v3/depth
的变动:limit
原先必须是固定值(比如 5, 10, 20, 50, 100, 500, 1000, 5000), 现在可以是在1-5000之间的任意的正整数, 服务器会返回指定的limit数量。(比如如果设置limit=3, 会返回前3个最好的卖价和买价)- 如果
limit
超过5000, 服务器也最多返回5000条记录. - 相应的, 此接口的权重变成:
Limit | Request Weight |
---|---|
1-100 | 1 |
101-500 | 5 |
501-1000 | 10 |
1001-5000 | 50 |
- GET
api/v3/aggTrades
接口的变动:- 当同时提供参数
startTime
和endTime
, 最旧的订单会优先返回.
- 当同时提供参数
- 移除交易对类型枚举
- 新增权限枚举
- 新增接口
GET /api/v3/rateLimit/order
- 回传用户在当前时间区间内的下单总数
- 此接口的权重为20
- 添加一个基于OpenAPI规范的RESTful API接口定义的YAML文件
- GET
api/v3/myTrades
添加新的参数orderId
- 在文档中添加接口的数据来源说明
- 在每个接口中添加相应的数据源
- GET
api/v3/exchangeInfo
现在支持单个或者多个交易对查询
从 April 28, 2021 00:00 UTC 开始,下面接口的权重有如下变动:
GET /api/v3/order
权重改为 2GET /api/v3/openOrders
权重改为 3GET /api/v3/allOrders
权重改为 10GET /api/v3/orderList
权重改为 2GET /api/v3/openOrderList
权重改为 3GET /api/v3/account
权重改为 10GET /api/v3/myTrades
权重改为 10GET /api/v3/exchangeInfo
权重改为 10
USER DATA STREAM
- 移除
outboundAccountInfo
事件.
为了优化性能,除了当前的api.binance.com
,新加了一些API的集群。如果访问api.binance.com
有性能问题,也可以尝试访问:
- https://api1.binance.com/api/v3/*
- https://api2.binance.com/api/v3/*
- https://api3.binance.com/api/v3/*
用户数据 STREAM
outboundAccountInfo
事件不再推荐使用。outboundAccountInfo
事件以后会被删除(具体时间未定) 请使用outboundAccountPosition
事件.outboundAccountInfo
只推送余额不为0,以及余额刚变成0的资产。
- 从2020-05-01 UTC 00:00开始, 所有交易对都会有最多200个挂单的限制, 体现在过滤器MAX_NUM_ORDERS上.
- 已经存在的挂单不会被移除或者撤销。
- 单交易对(
symbol
)的挂单数量达到或超过200的账号, 无法在此交易对上下新的订单, 除非挂单数量低于200。 - OCO订单在被触发成
LIMIT
订单, 或者被触发成STOP_LOSS
(或者STOP_LOSS_LIMIT
)前, 被认为是2个挂单量. 一旦OCO订单被触发, 就只被算作一个挂单。
WEB SOCKET 连接限制
- Websocket服务器每秒最多接受5个消息。消息包括:
- PING帧
- PONG帧
- JSON格式的消息, 比如订阅, 断开订阅.
- 如果用户发送的消息超过限制,连接会被断开连接。反复被断开连接的IP有可能被服务器屏蔽。
- 单个连接最多可以订阅 1024 个Streams。
- 添加过滤器
MAX_POSITION
.-
这个过滤器定义账户允许的基于
base asset
的最大仓位。一个用户的仓位可以定义为如下资产的总和:base asset
的可用余额base asset
的锁定余额- 所有处于open的买单的数量总和
-
如果用户的仓位大于最大的允许仓位,买单会被拒绝。
-
- 账户交易权限被禁时允许进行撤单操作。
- 增加了新的过滤器:
PERCENT_PRICE
,MARKET_LOT_SIZE
,MAX_NUM_ICEBERG_ORDERS
。 - 增加了
RAW_REQUESTS
频率限制. 该限制仅统计请求次数,不统计请求权重。 - /api/v3/ticker/price 无symbol参数时,权重增加到2。
- /api/v3/ticker/bookTicker 无symbol参数时,权重增加到2。
- DELETE /api/v3/order 现在会返回订单撤销前所处的末次状态。
MIN_NOTIONAL
新增两个参数:applyToMarket
(是否对市价单生效) andavgPriceMins
(对市价单生效时,估算金额时使用过去几分钟的平均价格?).- /api/v1/exchangeInfo 中的限制增加了
intervalNum
.intervalNum
表示该限制针对多少时间间隔进行统计. 例如:intervalNum
= 5,interval
= minute, 表示该限制对每5分钟内的行为进行统计。
- [对过去n分钟所有订单的数量*价格求和] / 过去n分钟所有订单的数量
- 如果过去n分钟没有交易发生,则继续向前追溯,直到找到第一个交易,以此价格作为过去n分钟平均价格。
- 如果该交易对之前从未发生过交易,则无平均价格,亦即无法在该交易对下市价单,必须至少有一个(双方均未限价单)的交易成交后才可以下市价单。
- 当前系统使用的平均价格可以通过接口
https://api.binance.com/api/v3/avgPrice?symbol=<symbol>
查询 例如 https://api.binance.com/api/v3/avgPrice?symbol=BNBUSDT
- 成交报告中增加了
末次成交金额
(Y
),等于末次成交量
*末次成交价格
(L
*l
).
- 新过滤器:
ICEBERG_PARTS
POST api/v3/order
中newOrderRespType
参数的缺省值更改;MARKET
LIMIT
默认为FULL
, 其他默认为ACK
.- POST api/v3/order
RESULT
与FULL
响应中增加cummulativeQuoteQty
- GET api/v3/openOrders 无symbol调用权重下降为 40.
- GET api/v3/ticker/24hr 无symbol调用权重下降为 40.
- GET /api/v1/trades amount最大可取到1000.
- GET /api/v1/historicalTrades amount最大可取到1000.
- GET /api/v1/aggTrades amount最大可取到1000.
- GET /api/v1/klines amount最大可取到1000.
- 订单查询结果返回中增加
updateTime
字段,代表该订单末次更新(创建、成交、过期、取消、拒绝等等)时间;time
仅表示创建时间. - 订单查询结果中增加
cummulativeQuoteQty
字段. 负值表示尚无任何成交,该字段不可用. REQUESTS
限制更名为REQUEST_WEIGHT
. 避免名字造成的误解。
- 订单报告与成交报告中增加
cummulativeQuoteQty
字段 (Z
). 表示已经成交的金额, 即已经花费的金额(买入订单)或已经收到的金额(卖出订单),均未计算手续费. 此功能增加之前成交的订单在历史订单接口中查询到的该字段可能小于零. cummulativeQuoteQty
/cummulativeQty
可以用来计算该订单已经成交部分的平均价格。- 成交报告中增加了
O
字段 (订单创建时间)
- GET /api/v1/historicalTrades权重降为 5
- GET /api/v1/aggTrades 权重降为 1
- GET /api/v1/klines 权重降为 1
- GET /api/v1/ticker/24hr 不带symbol参数的权重降为 symbols总数 / 2
- GET /api/v3/allOrders 权重降为 5
- GET /api/v3/myTrades 权重降为 5
- GET /api/v3/account 权重降为 5
- GET /api/v1/depth limit=500 权重降为 5
- GET /api/v1/depth limit=1000 权重降为 10
- websocket 用户增加 -1003 error code
- GET /api/v1/ticker/24hr 单symbol参数调用权重降为 1
- GET /api/v3/openOrders 不带symbol参数的权重降为 symbols总数 / 2
- GET /api/v3/allOrders 权重降为 15
- GET /api/v3/myTrades 权重降为 15
- GET /api/v3/order 权重降为 1
- 自成交现在会在myTrades结果中有两条记录。
- GET /api/v1/aggTrades 权重改为 2
- GET /api/v1/klines 权重改为 2
- GET /api/v3/order 权重改为 2
- GET /api/v3/allOrders 权重改为 20
- GET /api/v3/account 权重改为 20
- GET /api/v3/myTrades 权重改为 20
- GET /api/v3/historicalTrades 权重改为 20