2026年十月8日 · 研究

为什么市场从未触及我的限价单,回测却显示成交?

为什么市场从未触及我的限价单,回测却显示成交?

即使根本没有可交易的机会,回测也可能显示你的限价单成交。如果柱线最低价跌破了买入限价,许多引擎就会计为成交。但最低价只能说明至少有一笔已报告的交易在该价格或更低价格发生。它无法说明成交量有多少、你前面排了多少队,或你的订单是否及时挂出。

当策略的优势依赖频繁的被动成交时,这一区别尤其重要。把每次价格触及都视为全部成交的模型,可能会把耐心等待的入场变成凭空捏造的 alpha 来源。

柱线触及我的限价,就意味着订单成交了吗?

没有。这只表示柱线记录的价格区间包含了你的限价。订单能否成交,取决于市场订单簿、交易流、你的排队位置,以及订单到达的时间。

假设买入限价为 $100.00。柱线开盘价为 $100.20,最低价达到 $99.98,收盘价为 $100.10。可能有一笔交易价格比你的限价低了 2 美分,但如果 $100.00 处排在你前面的队列很长,而该价位的成交量很少,你的订单仍可能完全没有成交。仅凭 OHLCV,你看不到这段队列。

还有一个问题:柱线会把一段时间内的事件汇总起来。如果你的信号是根据该柱线收盘价计算的,就不能假设在最低价出现时,你的订单已经提前挂在那里。柱线压缩了能回答这个问题的事件顺序。

OHLCV 数据究竟能告诉我哪些关于限价单成交的信息?

OHLCV 可以排除某些成交的可能性,也能让另一些成交变得合理,但无法确定排队优先级,也无法保证有多少成交量可供你的订单成交。

观察可以说明什么无法证明什么
柱线最低价高于买入限价该柱线期间没有已报告的交易达到该价格订单会成交
柱线最低价触及买入限价该限价曾被报告为市场价格订单到达后该价位发生了任何成交
柱线最低价低于买入限价交易发生在该价格或更低价位有足够的成交量排到你的队列位置
柱线总成交量超过你的订单规模市场在该柱线期间某个价位的成交量至少达到这个规模订单到达后,足够的成交量在你的限价成交

因此,基于柱线的引擎需要采用成交假设。应把这一假设视为存在已知盲点的模型,而不是从蜡烛图中提取出的事实。

在回测中应该如何建模限价单成交?

先明确订单时序:信号何时可用、订单何时到达交易场所,以及之后的哪些市场事件可能与订单发生交互。对于在柱线收盘时才确定的信号,一种较为保守的柱线规则是从下一根柱线开始让订单具备成交资格。

然后把价格条件与成交数量分开处理。限价单具备成交资格,并不代表整笔订单都会成交。如果你有逐笔成交记录,但没有订单簿历史,可以要求限价或更优价位的成交量超过订单规模的一定倍数。这个倍数只是粗略的排队缓冲,并非通用常数。测试多个取值,并报告结果如何变化。

例如,假设策略挂出 2 BTC 的买入限价单,而在订单具备成交资格后,选定价格成交了 3 BTC。若模型要求符合条件的成交量达到 5 BTC,订单就不会成交;若模型采用 1.0 的成交量倍数,订单则会成交。两种结果都无法还原实际队列。比较这些结果,可以看出策略在多大程度上依赖无法观测的假设。

在模拟中保留未成交订单。按策略实际的撤单逻辑撤销订单,也要让错过的交易继续算作错过。限价一旦触及就让策略成交,却忽略那些到期仍未成交的订单,会同时扭曲执行情况和机会数量。

什么时候需要订单簿数据?

当排队位置或部分成交对策略至关重要时,应使用订单簿更新和交易数据,例如做市、短时被动报价,或依赖排在拥挤价位前列的入场策略。即便如此,历史公开数据也可能无法揭示你在队列中的确切位置。你还需要对订单到达、前方订单撤销、撮合规则以及自身市场冲击进行建模。

对于较慢的策略,详细订单簿可能只会增加复杂度,却无法解决主要的不确定性。基于柱线的研究仍然可以比较触及即成交的上限情景与更严格的成交量门槛情景。如果一旦要求成交条件合理,表面上的优势就消失了,这本身就是有价值的研究信息。

如何判断结果是否依赖过于乐观的成交假设?

用少数几种明确的成交规则运行同一策略,并比较最终收益以外的指标。跟踪成交订单数、部分成交率、挂单时间、撤销数量、未成交后错过的行情,以及换手率。即使策略的主要收益指标看起来没变,它也可能依赖数量少得多、时机更有利的交易。

接下来可以进行模拟交易:提交实际的订单逻辑,并记录确认、成交和撤单。模拟成交仍取决于交易场所或模拟器自身的规则,但能检验蜡烛图无法呈现的时序和订单处理过程。

限价被触及,是关于价格的证据。声称订单成交,则是在陈述执行结果。你的回测应该让这两者之间的差距清晰可见。

限价单回测市场微观结构成交模型执行
← 全部文章