过滤器
过滤器,即Filter,定义了一系列交易规则。
共有三类,分别是针对交易对的过滤器 symbol filters,针对整个交易所的过滤器 exchange filters 和针对资产的过滤器 asset filters。
交易对过滤器
PRICE_FILTER 价格过滤器
价格过滤器用于检测order订单中price参数的合法性
minPrice定义了price/stopPrice允许的最小值;minPrice== 0 的时候则失效。maxPrice定义了price/stopPrice允许的最大值;maxPrice== 0 的时候则失效。tickSize定义了price/stopPrice的步进间隔;tickSize== 0 的时候则失效。
以上每一项均可为0,为0时代表这一项不再做限制。
订单需满足以下条件,方可通过该过滤器校验:
price>=minPriceprice<=maxPriceprice%tickSize== 0
/exchangeInfo 响应中的格式:
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000100",
"maxPrice": "100000.00000000",
"tickSize": "0.00000100"
}
PERCENT_PRICE 价格振幅过滤器
PERCENT_PRICE 过滤器会根据前序交易的平均成交价来定义订单价格的有效范围。
- 当该交易对存在非空的 参考价格 时,过滤器校验将使用该参考价格。
- 当该交易对不存在非空的参考价格时,过滤器校验将使用
avgPriceMins分钟前的成交量加权平均价。- 如果
avgPriceMins为 0,那么过滤器校验将使用最新成交价。
- 如果
订单需满足以下条件,方可通过该过滤器校验:
price<=average of previous trade prices*multiplierUpprice>=average of previous trade prices*multiplierDown
/exchangeInfo 响应中的格式:
{
"filterType": "PERCENT_PRICE",
"multiplierUp": "1.3000",
"multiplierDown": "0.7000",
"avgPriceMins": 5
}
PERCENT_PRICE_BY_SIDE
PERCENT_PRICE_BY_SIDE 过滤器会根据前序交易的平均成交价来定义订单价格的有效范围。
- 当该交易对存在非空的 参考价格 时,过滤器校验将使用该参考价格。
- 当该交易对不存在非空的参考价格时,过滤器校验将使用
avgPriceMins分钟前的成交量加权平均价。avgPriceMins为 0,那么过滤器校验将使用最新成交价。
买方订单需满足以下条件,方可通过该过滤器校验:
price<=average of previous trade prices*bidMultiplierUpprice>=average of previous trade prices*bidMultiplierDown
卖方订单需满足以下条件,方可通过该过滤器校验:
price<=average of previous trade prices*askMultiplierUpprice>=average of previous trade prices*askMultiplierDown
/exchangeInfo 响应中的格式:
{
"filterType": "PERCENT_PRICE_BY_SIDE",
"bidMultiplierUp": "1.2",
"bidMultiplierDown": "0.2",
"askMultiplierUp": "5",
"askMultiplierDown": "0.8",
"avgPriceMins": 1
}
LOT_SIZE 订单尺寸
"lots" 是拍卖术语,这个过滤器对订单中的 quantity 也就是数量参数进行合法性检查。包含三个部分:
minQty表示quantity/icebergQty允许的最小值.maxQty表示quantity/icebergQty允许的最大值stepSize表示quantity/icebergQty允许的步进值。
订单需满足以下条件,方可通过该过滤器校验:
quantity>=minQtyquantity<=maxQtyquantity%stepSize== 0
/exchangeInfo 响应中的格式:
{
"filterType": "LOT_SIZE",
"minQty": "0.00100000",
"maxQty": "100000.00000000",
"stepSize": "0.00100000"
}
MIN_NOTIONAL 最小金额
MIN_NOTIONAL 过滤器定义了交易对订单所允许的最小名义价值(成交额)。
- 订单的名义价值是
价格*数量。 applyToMarket确定MIN_NOTIONAL过滤器是否也将应用于MARKET订单。- 由于
MARKET订单没有价格,因此会使用前序交易的平均成交价。- 当该交易对存在非空的 参考价格 时,过滤器校验将使用该参考价格来作为
价格。 - 当该交易对不存在非空的参考价格时,过滤器校验将使用
avgPriceMins分钟前的成交量加权平均价来作为价格。- 如果
avgPriceMins为 0,那么过滤器校验将使用最新成交价来作为价格。
- 如果
- 当该交易对存在非空的 参考价格 时,过滤器校验将使用该参考价格来作为
- 由于
订单需满足以下条件,方可通过该过滤器校验:
price*quantity>=minNotional
/exchangeInfo 响应中的格式:
{
"filterType": "MIN_NOTIONAL",
"minNotional": "0.00100000",
"applyToMarket": true,
"avgPriceMins": 5
}
NOTIONAL 名义价值
名义价值过滤器(NOTIONAL)定义了订单在一个交易对上可以下单的名义价值区间。
applyMinToMarket定义了minNotional是否适用于市价单(MARKET)。applyMaxToMarket定义了maxNotional是否适用于市价单(MARKET)。- 由于
MARKET订单没有价格,因此会使用前序交易的平均成交价。- 当该交易对存在非空的 参考价格 时,过滤器校验将使用 该参考价格来作为
价格。 - 当该交易对不存在非空的参考价格时,过滤器校验将使用
avgPriceMins分钟前的成交量加权平均价来作为价格。- 如果
avgPriceMins为 0,那么过滤器校验将使用最新成交价来作为价格。
- 如果
- 当该交易对存在非空的 参考价格 时,过滤器校验将使用 该参考价格来作为
- 由于
订单需满足以下条件,方可通过该过滤器校验:
price*quantity<=maxNotionalprice*quantity>=minNotional
/exchangeInfo 响应中的格式:
{
"filterType": "NOTIONAL",
"minNotional": "10.00000000",
"applyMinToMarket": false,
"maxNotional": "10000.00000000",
"applyMaxToMarket": false,
"avgPriceMins": 5
}