限价填出去,页面直接报下单失败,当前委托里也找不到这张单——先别把它和“挂着不成交”混为一谈。挂着不成交,说明订单已经进了订单簿,在等对手盘;被拒,说明订单在进订单簿之前就被价格检查拦下了,什么都没占用,也什么都不会发生。
拦下它的,多半是一条按买卖方向分开计算的价格区间:限价离最近几分钟的成交均价太远,就不收。币安接口文档把这条规则叫 PERCENT_PRICE_BY_SIDE,用接口下单时报错原文是“Filter failure: PERCENT_PRICE_BY_SIDE”。
区间以近几分钟的成交均价为基准,不是最新价
币安现货接口文档对这条规则的定义是:订单价格的有效范围,按此前成交价格的平均值来定。取多长一段的平均,由同一条规则里的 avgPriceMins 决定;文档还写明,avgPriceMins 为 0 时改用最新价,交易对配置了参考价时则用参考价。
2026 年 10 月 7 日查公开的交易对信息,BTC/USDT、ETH/BTC、USDC/USDT 三个交易对的 avgPriceMins 都是 5,也就是拿近 5 分钟的均价当基准。这意味着行情刚急拉或急跌时,你眼里的“现价”已经走远,判断区间用的均价还落在后面。按最新价算着正好贴边的限价,可能因为均价没跟上而被拒。
BTC/USDT 买单最高填到均价的 1.2 倍,卖单最低到 0.8 倍
同一天查到的 BTC/USDT 四个倍数如下。假设近 5 分钟均价是 80,000 USDT,可填范围就是均价乘上对应倍数:
| 方向 | 倍数(下限~上限) | 均价 80,000 时能填的限价 |
|---|---|---|
| 买入 | 0.5~1.2 | 40,000~96,000 USDT |
| 卖出 | 0.8~2 | 64,000~160,000 USDT |
两侧并不对称。买单往下可以挂得很远,挂到均价一半都收;往上只放到 1.2 倍。卖单反过来,往上能挂到两倍,往下只放到 0.8 倍。
受影响最大的是“故意把价格填过头、想立刻成交”的做法:比如想马上买到,把买入限价填成 100,000,比均价高出 25%,超过 96,000 的上限,订单不会进簿。同理,急着卖、把卖出限价填成 60,000,低于 64,000 的下限,也会被拒。要立刻成交,限价只要越过对面最优价、又落在区间里就够了,填得再远并不会让它成交得更快。
币安帮助中心《为什么我的限价单没有被成交?》写的是另一种说法:普通交易对只能在市场价的 50%~200% 之间下限价单。这正好是 BTC/USDT 买单下限 0.5 和卖单上限 2 拼起来的外框;落到具体方向,还要看各自那一侧的倍数。
稳定币交易对的区间窄得多
同一篇帮助文章给稳定币交易对的说法是 80%~120%。2026 年 10 月 7 日查 USDC/USDT,买卖两侧倍数都是 0.9~1.1,比帮助文章写的还窄;这个交易对另有一条 PRICE_FILTER,把价格本身限定在 0.8~1.2 之间。
假设均价是 1.0000,这一天能填的限价就是 0.9000~1.1000。想在 0.85 挂一张低价买单等脱锚,会被拒,而不是挂上等着。帮助文章是通用说明,订单实际要过的是这个交易对自己的数;两边对不上时,按交易对信息里查到的倍数来算更稳妥。
不登录也能查:两个公开地址算出你这个交易对的区间
倍数和均价都是公开数据,不需要账户和 API 密钥,在浏览器地址栏打开就能看到原始返回:
- 打开
https://api.binance.com/api/v3/exchangeInfo?symbol=BTCUSDT(把 BTCUSDT 换成你的交易对,斜杠去掉),在 filters 里找 filterType 为 PERCENT_PRICE_BY_SIDE 的那一段。bid 开头的两个数管买单,ask 开头的两个数管卖单,Up 是上限,Down 是下限。 - 打开
https://api.binance.com/api/v3/avgPrice?symbol=BTCUSDT,返回里的 mins 是取均价的分钟数,price 是这段时间的均价。 - 均价 × 你这一侧的上限倍数、均价 × 下限倍数,得出两个边界;限价落在两者之间才能进簿。
有两处容易看漏。其一,有的交易对返回的是不分方向的 PERCENT_PRICE,字段叫 multiplierUp 和 multiplierDown,买卖共用一组。其二,均价每分钟都在走,刚算出的边界过一会儿就变;离边界太近的限价,算的时候能过,提交时未必。
价格进了区间仍被拒:再看价格步长和最小金额
同一张订单还要过别的检查,被拒的原因不一定是这一条。PRICE_FILTER 管价格本身的最小值、最大值和步长:BTC/USDT 当天的步长是 0.01,限价写成 80,000.005 就过不去。数量步长和最小下单金额又是另外两条,见数量不合法那一篇。
止损限价单多一个限价,这个限价同样要按交易对自己的倍数来算。BTC/USDT 上,卖出止损的限价低于均价的 0.8 倍就落在区间外;USDC/USDT 这一侧的卖出下限是 0.9 倍。上面引的过滤器文档没有写这条检查是挂单时就做,还是等止损触发后才做,所以别指望一个离市价很远的限价在挂单那一刻就被拦住。触发之后限价单为什么还可能卖不掉,是另一回事,见止损触发了为什么没卖掉。
被拒之后:订单不存在,余额也没被占用
被拒的订单没有进订单簿,当前委托里没有它,可用余额也不会因它减少。确认这两处都没有变化,再按算出的区间改价重下,不会出现“原单还挂着、又多下一张”的情况。
拿不准是被拒还是网络超时、提交结果未知,处理顺序不同:超时的单可能已经进簿,要先去查订单状态,见下单超时后怎样避免重复提交。限价在区间里、订单也挂上了,只是迟迟不成交,那就回到限价到了为什么还没有成交。