跳到主要内容

公开 API 参数

术语

这里的术语适用于全部文档,建议特别是新手熟读,也便于理解。

  • base asset 指一个交易对的交易对象,即写在靠前部分的资产名, 比如BTCUSDT, BTCbase asset
  • quote asset 指一个交易对的定价资产,即写在靠后部分的资产名, 比如BTCUSDT, USDTquote asset

枚举定义

交易对状态 (状态 status):

  • PRE_TRADING 交易前
  • TRADING 交易中
  • POST_TRADING 交易后
  • END_OF_DAY
  • HALT
  • AUCTION_MATCH
  • BREAK

交易对类型:

  • SPOT 现货
  • MARGIN 杠杆
  • LEVERAGED 杠杆代币
  • TRD_GRP_002 交易组 002
  • TRD_GRP_003 交易组 003
  • TRD_GRP_004 交易组 004
  • TRD_GRP_005 交易组 005
  • TRD_GRP_006 交易组 006
  • TRD_GRP_007 交易组 007
  • TRD_GRP_008 交易组 008
  • TRD_GRP_009 交易组 009
  • TRD_GRP_010 交易组 010
  • TRD_GRP_011 交易组 011
  • TRD_GRP_012 交易组 012
  • TRD_GRP_013 交易组 013
  • TRD_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):

  • ACK
  • RESULT
  • FULL

订单方向 (方向 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 >= minPrice
  • price <= maxPrice
  • price % tickSize == 0

PERCENT_PRICE 价格振幅过滤器

/exchangeInfo 响应中的格式:

  {
"filterType": "PERCENT_PRICE",
"multiplierUp": "5",
"multiplierDown": "0.2",
"avgPriceMins": 5
}

PERCENT_PRICE过滤器基于先前交易的平均值来定义价格的有效范围。
avgPriceMins是计算平均价格的分钟数。 0表示使用最后的价格。

为了通过"价格百分比","价格"必须符合以下条件:

  • price <=weightedAveragePrice *multiplierUp
  • price> =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 * bidMultiplierUp
  • Order price >= weightedAveragePrice * bidMultiplierDown

卖向订单需要满足:

  • Order Price <= weightedAveragePrice * askMultiplierUp
  • Order 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 >= minQty
  • quantity <= maxQty
  • quantity % 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 <= maxNotional
  • price * 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 sizequantity必须满足以下条件:

  • quantity >= minQty
  • quantity <= maxQty
  • quantity % 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_LOSSSTOP_LOSS_LIMITTAKE_PROFITTAKE_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的最大仓位。一个用户的仓位可以定义为如下资产的总和:

  1. base asset的可用余额
  2. base asset的锁定余额
  3. 所有处于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 SELLTAKE_PROFIT_LIMIT SELL 订单:

  • trailingDelta >= minTrailingAboveDelta
  • trailingDelta <= maxTrailingAboveDelta

对于 STOP_LOSS SELL, STOP_LOSS_LIMIT SELL, TAKE_PROFIT BUY, 和 TAKE_PROFIT_LIMIT BUY 订单:

  • trailingDelta >= minTrailingBelowDelta
  • trailingDelta <= 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_LOSSSTOP_LOSS_LIMITTAKE_PROFITTAKE_PROFIT_LIMIT订单。

EXCHANGE_MAX_NUM_ICEBERG_ORDERS 冰山订单的最大订单数

此过滤器定义了允许账号持有的最大冰山订单数量.

/exchangeInfo 响应中的格式:

{
"filterType": "EXCHANGE_MAX_NUM_ICEBERG_ORDERS",
"maxNumIcebergOrders": 10000
}