2026年九月20日 · 执行

你的模拟账户为何拒绝了回测成交:一封关于交易所过滤规则的信

你的模拟账户为何拒绝了回测成交:一封关于交易所过滤规则的信

你有一个规模不大的加密货币期货策略,会交易几种合约,刚把它从回测切换到模拟交易。第一次调仓要求下单 0.037 BTC。模拟器接受了,交易平台却因合约的数量步长为 0.001,且订单舍入后低于最低名义价值而拒绝了。你的仓位仍是空仓,回测却记下了一笔成交。

这种差异很容易被当成格式问题一笔带过。但它也可能改变你持有哪些资产、何时调仓,以及订单失败后还剩多少风险敞口。应把每个交易平台的交易过滤规则视为策略执行规则的一部分,并确保回测和模拟交易适配器以相同顺序应用相同规则。

哪些交易所过滤规则会导致订单无效?

先检查订单实际需要的合约元数据:数量增量、最小数量、最低名义价值、价格增量,以及订单规模或价格区间的限制。各交易平台的规则名称和适用范围可能不同。现货交易对的最低要求可能不同于对应的永续合约;策略运行期间,过滤规则也可能发生变化。

假设某个合约的目标仓位价值为 $12,最低订单价值为 $10。如果按数量步长向下舍入后,订单价值变成 $9.80,那么即使未舍入的目标金额高于最低要求,订单仍然无效。向上舍入到 $10.20 也许能让订单有效,但会比目标多出 $0.20。账户规模较小或策略交易的标的较多时,这种差异可能影响不小。

规则限制内容对回测的影响
数量步长订单规模允许的变动幅度舍入后的规模与目标不同
最小数量或名义价值可接受的最小订单部分交易会变成无操作,或需要向上舍入
价格最小变动单位限价和触发价允许的变动幅度价格舍入会改变订单成交的可能性
价格区间或规模上限交易平台为订单字段设定的范围限制市场剧烈波动或大幅调仓时,订单可能遭到拒绝

订单流程中应在哪一步进行舍入?

先计算目标仓位变化,再对订单字段进行舍入,然后才决定是否提交订单。分析时保留未舍入的目标值,再根据当前仓位、合约乘数和交易平台的增量要求,推导出可执行订单。卖出数量步长为 0.001 时,计划减仓 0.0017,按你设定的规则可能舍入为 0.001 或 0.002。这两种选择会留下不同的剩余仓位,因此“按精度舍入”并不是一套完整的策略。

对数量向零方向取整,可以避免实际减仓超过预期,但可能留下始终无法成交的零星仓位。四舍五入能减小平均误差,不过也可能让仓位越过目标。最低名义价值需要单独制定处理方式:跳过交易、累积订单直到达到门槛,或者扩大规模并接受超出目标。不要在不同做法之间悄然切换。

还要保留订单未能执行的原因。“未下单:低于最低名义价值”和“以零成交”代表的情况不同。在组合调仓中,跳过订单可能导致现金闲置,或让资金继续留在旧资产中;请将这一结果记录到账户状态里。

如何让回测和模拟交易的执行保持一致?

只要系统架构允许,就在两条执行路径中共用同一个订单校验函数。为它提供相同时间点的合约规则、目标订单和账户状态。函数应返回经过规范化的订单,或明确的拒绝原因。之后,模拟器可以对规范化订单应用成交假设,模拟交易适配器则向交易平台发送等效字段。

每次运行都要保存带日期的过滤规则元数据快照。数量增量或最低要求发生变化时,你需要知道回测使用的是哪一版规则。用今天的元数据重放一年前的策略,可能会让旧订单看起来无效,也可能让历史订单显得当时可以执行,实际上却不行。

模拟交易平台报告拒单时,先对照提交的字段和过滤规则快照,再考虑修改信号。如果回测的订单规范化器生成了 0.037 BTC,而交易平台允许的数量增量是 0.001 BTC,问题出在适配器或元数据上。如果提交的订单有效却始终未成交,那就要检查价格、流动性或有效时间等执行因素。

要相信对比结果,应先检查什么?

每次调仓都保留一份简明记录:目标仓位、当前仓位、原始订单、规范化后的订单、适用的过滤规则版本,以及最终状态。然后对照同一决策时点的模拟交易和模拟回测记录。

第一次模拟调仓失败,并不代表策略本身有问题。但在模拟器能够说明订单为何会被接受、舍入、跳过或拒绝之前,它描绘的权益曲线反映的仍是另一套执行系统,而不是你准备实际运行的那套系统。

交易所过滤规则模拟交易订单规模回测加密货币期货
← 全部文章