规则与费用
币安限价单提示价格超出范围:委托价最多能离现价多远
下单时一道关,成交时一道关;认出是哪道拦的,再决定改价还是等。

想在远低于现价的地方挂一张买单等着接货:余额够,金额过了最小门槛,价格也按步长填了,点下去却被拒。拦住它的多半是一条专管价格的规则——委托价不能离系统认定的基准价太远,买单、卖单各有一组上下限倍数,超出就不接这张单。它没进订单簿,也就没有成交。
另一种情况看着像,其实是两回事:单子接下了,成交了一截,剩下的状态变成过期。这通常和币安 2026 年 4 月 14 日起逐步推出的现货价格区间保护机制有关。它盯的是每一笔成交价,不看你挂单时填了什么。两道关的检查时刻、基准和后果都不一样,下面分开讲。
“离现价太远”,是跟哪个价比
币安现货过滤规则文档里,管这件事的一项叫 PERCENT_PRICE_BY_SIDE。名字不用记,它做的事是:取一个基准价,分别乘上买单、卖单的倍数,划出两段能填的价格区间。
基准价:交易对有非空的参考价(reference price)时,用参考价;没有时,用过去 avgPriceMins 分钟的成交量加权均价;这个分钟数设为 0 时,直接用最新成交价。
也就是说,你盯着的那一口最新价,和系统拿来比较的数,不一定是同一个。参考价是一段时间里成交价的平均,比最新价走得慢。贴着边界填价格的单子,这一刻被拒、过几分钟又能挂上,或者反过来,都不奇怪。
通过条件按方向分开:
- 买单:委托价不低于基准价 × bidMultiplierDown,也不高于基准价 × bidMultiplierUp。
- 卖单:委托价不低于基准价 × askMultiplierDown,也不高于基准价 × askMultiplierUp。
同一份文档里还有一项 PRICE_FILTER,给价格定了绝对的最低值、最高值和价格步长。那是另一道检查,和“离现价多远”无关,这里不展开。
通过接口下单时,价格不满足这条规则,返回的错误是 Filter failure: PERCENT_PRICE_BY_SIDE。App 和网页上会提示价格不符合要求之类的信息,具体文字以页面为准。分辨时看提示说的是价格,还是金额、数量:说金额太小的,去看下单金额太小那篇,那是另一条规则。
用 BTC/USDT 查到的一组数,算能挂到哪里
下面的倍数是 2026 年 9 月从币安公开接口查到的 BTC/USDT 值,倍数官方可以调整。参考价每隔几秒就在更新,本例不用某一刻的实时值,而是取一个整数 84,000 USDT 当示例输入,方便你自己复算。拿来学算法,别当成固定答案。
| 字段 | 本例用的值 | 含义 |
|---|---|---|
| bidMultiplierUp | 1.2 | 买单最高能填到基准价的几倍 |
| bidMultiplierDown | 0.5 | 买单最低能填到基准价的几倍 |
| askMultiplierUp | 2 | 卖单最高能填到基准价的几倍 |
| askMultiplierDown | 0.8 | 卖单最低能填到基准价的几倍 |
| avgPriceMins | 5 | 没有参考价时,取几分钟的成交量加权均价 |
| 参考价 | 84,000 USDT(示例输入) | 实际值查 /api/v3/referencePrice,每隔几秒就变 |
接口给 BTC/USDT 参考价标注的计算方式是算术平均(ARITHMETIC_MEAN),窗口为 80 个桶、每桶 3.75 秒,合起来就是最近 5 分钟的成交价。BTC/USDT 有参考价,所以用的是它,而不是成交量加权均价。
| 方向 | 最低能填 | 最高能填 |
|---|---|---|
| 买单 | 84,000 × 0.5 = 42,000 | 84,000 × 1.2 = 100,800 |
| 卖单 | 84,000 × 0.8 = 67,200 | 84,000 × 2 = 168,000 |
表里的上下限只是参考价乘倍数,没有按价格步长取整。真下单时,先查当时的参考价换进去算,价格还得同时对得上步长。
按这组示例数试几种填法。想在 40,000 挂买单等回落:低于 42,000,被拒。改到 42,500:进了区间,能挂上。卖单手滑少打一位,83,000 填成 8,300:远低于 67,200,被拒。买单多打一位,填成 838,000:高过 100,800,同样被拒。
两边的倍数不对称,值得多看一眼。买单往下放到 0.5 倍,往上只到 1.2 倍;卖单往上放到 2 倍,往下只到 0.8 倍。收得紧的恰好是对下单人不利的那一侧:出价太高地买、要价太低地卖,这种单一提交多半马上和对手盘成交,吃亏当场兑现。放得宽的是挂着慢慢等的那一侧。官方文档没解释为什么这样设,但从数字上看,打错一位数的单子大多会被它挡在门外。
回到开头那个场景:买单的委托价低于参考价的一半,按这组倍数就是跌破了 0.5 倍,下单那一刻直接被拒。比的是参考价,不是屏幕上那口最新价,贴着这条线填的单子,要拿当时的参考价来算。这条线跟着参考价移动,BTC 跌下来,能挂的最低价也跟着往下走。
想自己查倍数,要注意本站的现货下单规则查询会显示交易对的公开状态、数量上下限和步长、金额门槛、价格步长以及固定最高最低价,这组价格倍数它不显示。能看到倍数的是币安公开接口返回的交易对过滤规则;不查接口的话,就按下单页面的提示把价格往区间里挪。
成交了一截、剩下过期:这是成交那一刻的关
币安在 2026 年 4 月 7 日发布公告,推出现货价格区间保护机制(英文缩写 PRER),自 4 月 14 日起逐步推出。它和上一节那条规则不在同一时刻起作用:上一节在提交订单时检查你填的委托价;这个机制在撮合时看实际成交价,只让成交落在一个动态区间里。
公告里的要点有三条:订单只能在动态价格区间内执行;任何类型的订单在作为吃单方成交时,若执行价格将超出指定范围,就会过期;正常市场价格下,这项机制对日常交易没有影响。

吃单方,指的是下单后立刻去和订单簿上已有挂单成交的那一方。英文版官方 FAQ 讲得更细:
- 吃单时要继续成交就得碰到区间外的挂单,剩余未成交部分直接过期,不会转成挂单留在订单簿上;
- 先在区间内成交了一部分、剩下的要越界才能成交,剩下那部分过期;
- 对所有订单类型都适用;
- 新上线的交易对,要等积累了足够成交数据、参考价可靠之后才启用。
区间的算法和上一节相似,也是参考价乘倍数,只是换了一组字段:买的一侧 bidLimitMultUp / bidLimitMultDown,卖的一侧 askLimitMultUp / askLimitMultDown。2026 年 9 月从 /api/v3/executionRules 查到,BTC/USDT 这一项买卖两边都是 0.85 ~ 1.15 倍。仍按 84,000 USDT 的示例参考价算,吃单成交价只能落在 84,000 × 0.85 = 71,400 到 84,000 × 1.15 = 96,600 USDT 之间。
举个例子:某个冷门交易对订单簿很薄,一张数量偏大的市价买单一路往上吃卖单。低于区间上沿的几档照常成交;再往上的卖单已经在区间外,剩下的数量不再成交,订单以过期收尾。前面成交的那截已经结算,不会因为后半段过期而退回。
公告的说法是,正常市场价格下这项机制对日常交易没有影响。它针对的是价格突然大幅偏离的时候,比如行情剧烈波动的那几分钟,或者订单簿很薄、一张单就能把价格推远的交易对。
通过接口看,这类订单的状态是 EXPIRED,过期原因是 EXECUTION_RULE_PRICE_RANGE_EXCEEDED。App 里对应显示哪几个中文字,以你屏幕上显示的状态文字为准。已成交那截怎么对账、剩下的去了哪里,订单只成交一部分那篇有逐项核对的办法。
来源:币安公告《币安推出现货价格区间保护机制(PRER)》;PRER 官方 FAQ(英文);订单状态与过期原因的字段名见币安现货 API 文档「Price Range Execution Rules」一节。
被拒,还是过期?对着这张表认
| 对照项 | 下单时:委托价范围 | 成交时:价格区间保护 |
|---|---|---|
| 什么时候检查 | 提交订单那一刻 | 撮合时,每一笔成交发生前 |
| 检查哪个价 | 你填的委托价 | 实际成交价 |
| 拿什么当基准 | 参考价;没有参考价时用近几分钟成交量加权均价,分钟数为 0 时用最新成交价 | 参考价 |
| BTC/USDT 当时的倍数 | 买 0.5 ~ 1.2,卖 0.8 ~ 2 | 买卖都是 0.85 ~ 1.15 |
| 过不去会怎样 | 整张单不被接受 | 越界那部分过期,已成交部分照常结算 |
| 记录里看到什么 | 没进订单簿,当前委托里找不到 | 历史里留下一条过期记录,可能带着已成交数量 |
记录上最好认。被拒的单从没进过订单簿,没有任何成交,当前委托里找不到它。过期的单会在历史里留下一条记录,前面成交的那截照常结算,余额也按成交结果变动。
开头那种挂远价买单被拒的情况,只和第一道关有关。第二道关碰到的一般是吃单:市价单,或者价格已经越过对手盘、一提交就成交的限价单。
官方没单独说明的两处
止损限价这类条件单,是在提交时就检查价格区间,还是等触发、真正进入撮合时才检查,官方文档没单独说明,本文不下结论。
已经挂在订单簿上的挂单,后来行情走远了,它的价格落到区间外会不会被处理,官方文档同样没有单独说明,以你订单记录里实际显示的状态为准。公开说明的对象是吃单方,挂单这一侧不能照着推。碰上看不懂的状态,先记下订单号、时间和页面原始提示,再回到上面那张表,对一遍它是被拒还是过期。
被拒以后,能改的只有价格
下单时被拒,病根是价格离基准太远,能动的就是价格本身:低过下限的往上挪,高过上限的往下挪,买单卖单都是这样,挪回区间里。按上面那组示例数,参考价 84,000 USDT 时 BTC/USDT 的买单不能低于 42,000,也不能高于 100,800;参考价一变,这两条线就跟着变。
如果心里那个价就是挂不进去,比如非要在参考价四成的位置接货,那就是这一刻挂不了。这是交易对的规则,不是账户出了问题,也不是余额不够。可以等价格走近再挂,或者先挂在区间内自己能接受的价位。
下面几种常见的改法,解决不了问题。
拆成几张小单
这条规则看的是价格,不是金额。每张小单的价格一样离得远,一样被拒。拆得太碎,还可能再撞上最小金额那道线。
刷新页面、连点重试
基准价是几分钟的平均,价格没真正移动之前,重试的结果不会变。规则也不会因为提交次数多而放宽。
改成市价单
市价单按盘口当时的价格成交,等于放弃了想要的低价,和挂单接货的本意正好反着。价格区间保护对所有订单类型都生效,市价单打穿区间,越界那部分一样过期。
换成条件单碰运气
条件单在什么时候检查价格区间,前面说过官方没单独说明。拿它当绕路的办法,等于把结果交给一个没人讲清的环节,触发那一刻照样可能被拒。
价格挪进区间、单子挂上以后,它也可能很久不成交。那是挂单价和盘口之间的距离问题,跟这两道关已经没有关系。