回测可能给出一个清晰的离场结果,但源数据未必能说明两个离场条件谁先发生。当一根历史柱线同时覆盖上方止盈和下方止损时,就会出现这种歧义。最高价和最低价能说明两个价位都落在区间内,却没有保留价格在它们之间经过的路线。
模拟器仍然需要生成交易记录,因此必须采用某种成交规则。它可能根据柱线推断一条柱内路径,使用更小周期的数据,或应用一条明确的同柱处理规则。结果会依赖于这个选择。仅凭 OHLC 本身无法确定事件的先后。
OHLC 保留了什么,又丢掉了什么?
OHLC 用四个价格概括一个周期:开盘价、最高价、最低价和收盘价。最高价和最低价限定了该周期内观测到的价格范围,却不包含每一次中间变动及其发生时间。很多不同路径可以从同一开盘价开始,经过相同的最高价和最低价,再以相同的收盘价结束。
看图时,人很容易把几个价格点连成一条连续的走势线。除非底层数据提供了更细的观测,这条连线其实是一种解释。如果一笔交易只涉及一个相关价位,缺失的路径未必改变模拟结果;但当两个已生效的离场价位分处开盘价上下,先后顺序就可能决定这笔交易的记录结果。
一个有两种可能结果的假设柱线
看一个明确标注为假设的多头持仓:柱线开始前,两个离场订单都已生效。暂时忽略费用和滑点,并假设本例中先触及的离场订单成交后,另一个订单便被取消。柱线开盘价为100,最高价为106,最低价为94,收盘价为101;上方止盈价为105,下方止损价为95。
第一种路径是从开盘价100上涨至106,再下跌至94,最后回到收盘价101。这样会先经过止盈价。另一种路径是从100先跌至94,再上涨至106,最后回到101。这样则会先经过止损价。两种路径产生的四个 OHLC 数值完全相同。
这些数字只是为了说明汇总数据缺失了什么,并非历史行情。两条路径不代表发生概率相同,也不用于估算哪一种更常见。它们只说明,同一份 OHLC 记录可以对应不同的离场顺序。如果入场订单也在这根柱线内才生效,模型还必须考虑入场时间;否则可能会在订单生效前就判断离场条件。
每个模拟器都必须作出自己的处理
需要生成交易账本的模拟器不能把所有冲突都留白。它必须采用某条规则:根据可用价格推断一条确定性路径、读取更细粒度的数据、应用明确的优先规则,或把事件标记为无法判定。每种方法回答的问题略有不同。它们都不会补回原始 OHLC 柱线中没有的信息。
这些约定因软件而异。例如,TradingView 当前的 Pine Script 文档说明,其经纪商模拟器会根据开盘价离最高价还是最低价更近,推断默认的历史柱内路径;文档还介绍了使用低周期数据提高柱线细节的选项。这是一个有文档说明的模型,不是所有回测工具通用的规则。关键区别在于:先后顺序是被观察到的,还是由模拟器推断出来的。
把规则写明,比隐藏规则更容易检查。持续采用同一规则也能让比较更有意义:如果看到哪种假设能让结果更好之后才更改优先规则,那么成交假设本身就成了另一项研究选择,也应当披露。
更细的数据可以缩小疑问,但未必消除疑问
如果低周期柱线显示两个价位分别在不同的小周期内被触及,就能解决较大柱线上的先后歧义。如果两个价位仍落在同一根更小的柱线内,那么在更细的尺度上仍然存在同样的问题。更细粒度的数据可以减少歧义,但更小周期的 OHLC 并不会自动揭示该周期内的每个事件。
逐笔记录可以提供更细的已报告价格顺序,但它仍无法重现判断真实成交所需的全部条件,例如队列位置或可执行流动性是否存在。细节增加会改变证据的分辨率,却不会把历史模拟变成经纪商成交单。
DayTradeDrill 根据一分钟 OHLC 柱线,按照自身确定性的事件和订单执行规则生成柱内价格与成交量。这些生成路径不是历史逐笔数据,也不保证对应真实可成交价格;产品不会连接实时经纪商或下达真实订单。回放可以展示某个明确模型如何运行,但源一分钟柱线仍不能证明这一分钟内部的确切顺序。
为什么一根歧义柱线会影响整份报告
在上面的简化双离场示例中,选择先到止盈的路径而不是先到止损的路径,会改变这笔交易记录的离场结果。类似情况如果出现在多个样本中,也可能影响交易结果以及据此计算的汇总指标,例如平均值或权益曲线形状。影响有多大、方向如何,取决于数据和相关订单规则;单看这根K线无法推断。
如何计数同样重要。报告说有五根歧义柱线,却不说明分母是全部柱线、持仓期间的柱线,还是止损与止盈均已生效的交易,就很难解读。歧义比例属于定义明确的一项测试,本身并不是独立的质量指标。
透明的报告应记录什么
一份有用的回测报告,应让读者在比较结果前能够检查成交模型。至少可以说明:
- 输入分辨率:注明源柱线的周期,是否使用了更低周期数据,以及哪些时段缺少这类数据。
- 订单状态:说明每根柱线开始前哪些订单已生效,以及柱线期间是否可能新建或修改入场、离场订单。
- 冲突规则:说明假设路径、优先规则或无法判定时的处理方式,也说明如何处理柱线间的跳空。
- 范围与敏感性:报告歧义案例数量和清晰的分母,再对比其他合理约定;不能看过结果之后才选择看起来更好的那一种。
如果替代约定会产生明显不同的汇总结果,这种差异本身就是结果的一部分。把它藏在一条看似精确的权益曲线之后,只会让报告更整齐,不会让信息更充分。
诚实的结论带有条件
当一根柱线同时触及两个离场价位时,OHLC 数据可以确认两个价位都位于该周期范围之内,却不能证明哪一个先被触及。只要报告说明产生结果的假设路径或优先规则,模拟器仍然可以给出有用且可重复的结果。
结论因此只适用于这组数据分辨率和成交模型。它描述的是在已声明假设下测试如何运行;它不会预测未来的价格顺序、保证某个价格可以成交,也不构成交易建议。
参考资料与延伸阅读
- 概念 / 策略:经纪商模拟器TradingView Pine Script 文档



