公开 API 参数
术语
这里的术语适用于全部文档,建议特别是新手熟读,也便于理解。
base asset指一个交易对的交易对象,即写在靠前部分的资产名, 比如BTCUSDT,BTC是base asset。quote asset指一个交易对的定价资产,即写在靠后部分的资产名, 比如BTCUSDT,USDT是quote asset。
枚举定义
交易对状态 (状态 status):
PRE_TRADING交易前TRADING交易 中POST_TRADING交易后END_OF_DAYHALTAUCTION_MATCHBREAK
交易对类型:
SPOT现货MARGIN杠杆LEVERAGED杠杆代币TRD_GRP_002交易组 002TRD_GRP_003交易组 003TRD_GRP_004交易组 004TRD_GRP_005交易组 005TRD_GRP_006交易组 006TRD_GRP_007交易组 007TRD_GRP_008交易组 008TRD_GRP_009交易组 009TRD_GRP_010交易组 010TRD_GRP_011交易组 011TRD_GRP_012交易组 012TRD_GRP_013交易组 013TRD_GRP_014交易组 014
订单状态 (状态 status):
| 状态 | 描述 |
|---|---|
NEW | 订单被交易引擎接 |
PARTIALLY_FILLED | 部分订单被成交 |
FILLED | 订单完全成交 |
CANCELED | 用户撤销了订单 |
PENDING_CANCEL | 撤销中(目前并未使用) |
REJECTED | 订单没有被交易引擎接受,也没被处理 |
EXPIRED | 订单被交易引擎取消,比如: LIMIT FOK 订单没有成交 市价单没有完全成交 强平期间被取消的订单 交易所维护期间被取消的订单 |
EXPIRED_IN_MATCH | 表示订单由于 STP 触发而过期 (e.g. 带有 EXPIRE_TAKER 的订单与订 单簿上属于同账户或同 tradeGroupId 的订单撮合) |
OCO 状态 (状态类型集 listStatusType):
| 状态 | 描述 |
|---|---|
RESPONSE | 当ListStatus响应失败的操作时使用。 (订单完成或取消订单) |
EXEC_STARTED | 当已经下单或者订单有更新时 |
ALL_DONE | 当订单执行结束或者不在激活状态 |
OCO 订单状态 (订单状态集 listOrderStatus):
| 状态 | 描述 |
|---|---|
EXECUTING | 当已经下单或者订单有更新时 |
ALL_DONE | 当订单执行结束或者不在激活状态 |
REJECT | 当订单状态响应失败(订单完成或取消订单) |
指定订单的类型
OCO选择性委托订单
分配类型 (allocationtype, type):
SOR智能订单路由
工作平台
EXCHANGE- 常规交易SOR- 智能订单路由
订单类型 (orderTypes, type):
LIMIT限价单MARKET市价单STOP_LOSS止损单STOP_LOSS_LIMIT限价止损单TAKE_PROFIT止盈单TAKE_PROFIT_LIMIT限价止盈单LIMIT_MAKER限价只挂单
订单返回类型 (newOrderRespType):
ACKRESULTFULL
订单方向 (方向 side):
BUY买入SELL卖出
有效方式 (timeInForce):
这里定义了订单多久能够失效
| 状态 | 描述 |
|---|---|
GTC | 成交为止 订单会一直有效,直到被成交或者取消。 |
IOC | 无法立即成交的部分就撤销 订单在失效前会尽量多的成交。 |
FOK | 无法全部立即成交就撤销 如果无法全部成交,订单会失效。 |
K线间隔:
s -> 秒; m -> 分钟; h -> 小时; d -> 天; w -> 周; M -> 月
- 1s
- 1m
- 3m
- 5m
- 15m
- 30m
- 1h
- 2h
- 4h
- 6h
- 8h
- 12h
- 1d
- 3d
- 1w
- 1M
限制种类 (rateLimitType)
REQUEST_WEIGHT
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000
}
ORDERS
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 100
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 200000
}
RAW_REQUESTS
{
"rateLimitType": "RAW_REQUESTS",
"interval": "MINUTE",
"intervalNum": 5,
"limit": 5000
}
-
REQUEST_WEIGHT 单位时间请求权重之和上限
-
ORDERS 单位时间下单次数限制
-
RAW_REQUESTS 单位时间请求次数上限
限制间隔 (interval)
- SECOND 秒
- MINUTE 分
- DAY 天
过滤器
过滤器,即Filter,定义了一系列交易规则。 共有两类,分别是针对交易对的过滤器symbol filters,和针对整个交易所的过滤器 exchange filters
交易对过滤器
PRICE_FILTER 价格过滤器
/exchangeInfo 响应中的格式:
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000100",
"maxPrice": "100000.00000000",
"tickSize": "0.00000100"
}
价格过滤器 用于检测订单中 price 参数的合法性。包含以下三个部分:
minPrice定义了price/stopPrice允许的最小值。maxPrice定义了price/stopPrice允许的最大值。tickSize定义了price/stopPrice的步进间隔,即price必须等于minPrice+(tickSize的整数倍)
以上每一项均可为0,为0时代表这一项不再做限制。
逻辑伪代码如下:
price>=minPriceprice<=maxPriceprice%tickSize== 0
PERCENT_PRICE 价格振幅过滤器
/exchangeInfo 响应中的格式:
{
"filterType": "PERCENT_PRICE",
"multiplierUp": "5",
"multiplierDown": "0.2",
"avgPriceMins": 5
}
PERCENT_PRICE过滤器基于先前交易的平均值来定义价格的有效范围。
avgPriceMins是计算平均价格的分钟数。 0表示使用最后的价格。
为了通过"价格百分比","价格"必须符合以下条件:
price<=weightedAveragePrice*multiplierUpprice> =weightedAveragePrice*multiplierDown
PERCENT_PRICE_BY_SIDE 基于买卖方向的价格振幅过滤器
ExchangeInfo format:
{
"filterType": "PERCENT_PRICE_BY_SIDE",
"bidMultiplierUp": "1.2",
"bidMultiplierDown": "0.2",
"askMultiplierUp": "5",
"askMultiplierDown": "0.8",
"avgPriceMins": 1
}
PERCENT_PRICE_BY_SIDE 过滤器定义了基于交易对平均价格的合法价格范围. 取决于BUY或者SELL, 价格范围可能有所不同.
avgPriceMins 是用来计算平均价格的分钟数. 0 表示用最新价(last price).
买向订单需要满足:
Order price<=weightedAveragePrice*bidMultiplierUpOrder price>=weightedAveragePrice*bidMultiplierDown
卖向订单需要满足:
Order Price<=weightedAveragePrice*askMultiplierUpOrder Price>=weightedAveragePrice*askMultiplierDown
LOT_SIZE 订单尺寸
/exchangeInfo 响应中的格式:
{
"filterType": "LOT_SIZE",
"minQty": "0.00100000",
"maxQty": "100000.00000000",
"stepSize": "0.00100000"
}
Lots是拍卖术语,LOT_SIZE 过滤器对订单中的 quantity 也就是数量参数进行合法性检查。包含三个部分:
minQty表示quantity/icebergQty允许的最小值。maxQty表示quantity/icebergQty允许的最大值。stepSize表示quantity/icebergQty允许的步进值。
逻辑伪代码如下:
quantity>=minQtyquantity<=maxQtyquantity%stepSize== 0
MIN_NOTIONAL 最小名义价值(成交额)
/exchangeInfo 响应中的格式:
{
"filterType": "MIN_NOTIONAL",
"minNotional": "0.00100000",
"applyToMarket": true,
"avgPriceMins": 5
}
MIN_NOTIONAL过滤器定义了交易对订单所允许的最小名义价值(成交额)。
订单的名义价值是价格*数量。
如果是高级订单(比如止盈止损订单STOP_LOSS_LIMIT),名义价值会按照stopPrice * quantity来计算。
如果是冰山订单,名义价值会按照price * icebergQty来计算。
applyToMarket确定 MIN_NOTIONAL过滤器是否也将应用于MARKET订单。
由于MARKET订单没有价格,因此会在最后avgPriceMins分钟内使用平均价格。
avgPriceMins是计算平均价格的分钟数。 0表示使用最后的价格。
NOTIONAL 名义价值
/exchangeInfo 响应中的格式:
{
"filterType": "NOTIONAL",
"minNotional": "10.00000000",
"applyMinToMarket": false,
"maxNotional": "10000.00000000",
"applyMaxToMarket": false,
"avgPriceMins": 5
}
名义价值过滤器(NOTIONAL)定义了订单在一个交易对上可以下单的名义价值区间.
applyMinToMarket 定义了 minNotional 是否适用于市价单(MARKET)
applyMaxToMarket 定义了 maxNotional 是否适用于市价单(MARKET).
要通过此过滤器, 订单的名义价值 (单价 x 数量, price * quantity) 需要满足如下条件:
price * quantity<=maxNotionalprice * quantity>=minNotional
对于市价单(MARKET), 用于计算的价格采用的是在 avgPriceMins 定义的时间之内的平均价.
如果 avgPriceMins 为 0, 则采用最新的价格.
ICEBERG_PARTS 冰山订单拆分数
/exchangeInfo 响应中的格式:
{
"filterType": "ICEBERG_PARTS",
"limit": 10
}
ICEBERG_PARTS 代表冰山订单最多可以拆分成多少个小订单。
计算方法为 向上取整(qty / icebergQty)。
MARKET_LOT_SIZE 市价订单尺寸
*/exchangeInfo 响应中的格式:
{
"filterType": "MARKET_LOT_SIZE",
"minQty": "0.00100000",
"maxQty": "100000.00000000",
"stepSize": "0.00100000"
}
MARKET_LOT_SIZE过滤器为交易对上的MARKET订单定义了数量(即拍卖中的"手数")规则。 共有3部分:
minQty定义了允许的最小quantity。maxQty定义了允许的最大数量。stepSize定义了可以增加/减少数量的间隔。
为了通过market lot size,quantity必须满足以下条件:
quantity>=minQtyquantity<=maxQtyquantity%stepSize== 0
MAX_NUM_ORDERS 最多订单数
/exchangeInfo 响应中的格式:
{
"filterType": "MAX_NUM_ORDERS",
"maxNumOrders": 25
}
定义了某个交易对最多允许的挂单数量(不包括已关闭的订单)
普通订单与条件订单均计算在内
MAX_NUM_ALGO_ORDERS 最多条件单数
/exchangeInfo 响应中的格式:
{
"filterType": "MAX_NUM_ALGO_ORDERS",
"maxNumAlgoOrders": 5
}
MAX_NUM_ALGO_ORDERS过滤器定义允许账户在交易对上开设的"algo"订单的最大数量。
"Algo"订单是STOP_LOSS,STOP_LOSS_LIMIT,TAKE_PROFIT和TAKE_PROFIT_LIMIT止盈止损单。
MAX_NUM_ICEBERG_ORDERS 最多冰山单数
MAX_NUM_ICEBERG_ORDERS过滤器定义了允许在交易对上开设账户的ICEBERG订单的最大数量。
ICEBERG订单是icebergQty大于0的任何订单。.
/exchangeInfo 响应中的格式:
{
"filterType": "MAX_NUM_ICEBERG_ORDERS",
"maxNumIcebergOrders": 5
}
MAX_POSITION 过滤器
这个过滤器定义账户允许的基于base asset的最大仓位。一个用户的仓位可以定义为如下资产的总和:
base asset的可用余额base asset的锁定余额- 所有处于open的买单的数量总和
如果用户的仓位大于最大的允许仓位,买单会被拒绝。
如果一个订单的数量(quantity) 可能导致持有仓位溢出, 会触发过滤器 MAX_POSITION.
/exchangeInfo 响应中的格式:
{
"filterType": "MAX_POSITION",
"maxPosition": "10.00000000"
}
TRAILING_DELTA
ExchangeInfo format:
{
"filterType": "TRAILING_DELTA",
"minTrailingAboveDelta": 10,
"maxTrailingAboveDelta": 2000,
"minTrailingBelowDelta": 10,
"maxTrailingBelowDelta": 2000
}
此过滤器定义了参数trailingDelta的最大和最小值.
下追踪止损订单, 需要满足条件:
对于 STOP_LOSS BUY, STOP_LOSS_LIMIT_BUY, TAKE_PROFIT SELL 和 TAKE_PROFIT_LIMIT SELL 订单:
trailingDelta>=minTrailingAboveDeltatrailingDelta<=maxTrailingAboveDelta
对于 STOP_LOSS SELL, STOP_LOSS_LIMIT SELL, TAKE_PROFIT BUY, 和 TAKE_PROFIT_LIMIT BUY 订单:
trailingDelta>=minTrailingBelowDeltatrailingDelta<=maxTrailingBelowDelta
交易所级别过滤器
EXCHANGE_MAX_NUM_ORDERS 最多订单数
/exchangeInfo 响应中的格式:
{
"filterType": "EXCHANGE_MAX_NUM_ORDERS",
"maxNumOrders": 1000
}
EXCHANGE_MAX_NUM_ORDERS过滤器定义了允许在交易对上开设账户的最大订单数。
请注意,此过滤器同时计算"algo"订单和常规订单。
EXCHANGE_MAX_ALGO_ORDERS 交易最大ALGO订单数
/exchangeInfo 响应中的格式:
{
"filterType": "EXCHANGE_MAX_ALGO_ORDERS",
"maxNumAlgoOrders": 200
}
EXCHANGE_MAX_ALGO_ORDERS过滤器定义了允许在交易上开设账户的"algo"订单的最大数量。
"Algo"订单是STOP_LOSS,STOP_LOSS_LIMIT,TAKE_PROFIT和TAKE_PROFIT_LIMIT订单。
EXCHANGE_MAX_NUM_ICEBERG_ORDERS 冰山订单的最大订单数
此过滤器定义了允许账号持有的最大冰山订单数量.
/exchangeInfo 响应中的格式:
{
"filterType": "EXCHANGE_MAX_NUM_ICEBERG_ORDERS",
"maxNumIcebergOrders": 10000
}