Skip to main content

公开 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}