Senzoukria · 术语表

K 线内歧义

K 线内歧义是一个基于 K 线的回测在「单独一根 K 线的最高价与最低价同时触及一个头寸的止损和目标」时所面对的那份不确定:开高低收并不说明哪一个价位先成交。被选来解决它的那个约定,可以大幅改变一套策略的结果。

更新于 2026 年 9 月首次发布:2026年10月9日

本页目录
  1. 要点
  2. 这个问题
  3. 在用的那些约定
  4. 在 Senzoukria 里
  5. 常见错误
  6. 相关内容
  7. 同一栏目
  8. 其他语言版本
  9. 常见问题

要点

发生在
K 线区间覆盖了两个离场价位时
更频繁于
止损与目标相对 K 线区间都很窄时
能被精确解决的
逐笔数据或一个细得多的周期
Senzoukria 的约定
止损胜出(最不利的结果)

这个问题

一个多头头寸在 100 入场,止损在 98、目标在 104。下一根 K 线开在 101、上到 105、下到 97,收在 103。两个离场都被触及了,但单凭这根 K 线无法分辨价格是先到 105 再跌下来,还是先到 97 再涨上去。一种读法给出 +4,另一种给出 −2。如果三百笔交易里有三十笔落在这样的 K 线上,那么两种约定在同一份数据上就差 30 × 6 = 180 点。

随着两个离场相对这根 K 线典型区间越靠近,有歧义的 K 线出现得越频繁。一套在 15 分钟 K 线上测试的剥头皮规则,可以有很大一部分交易是由这个约定、而不是由市场来决定的。

在用的那些约定

处理一根同时触及两个离场的 K 线的几种办法
约定规则效果
悲观假设止损先被打到当真实顺序有利时低估结果
乐观假设目标先被打到高估结果;在实盘里很少被复现
按离开盘价的距离假设价格先去离开盘价更近的那个极值平均而言合理,在个别 K 线上是错的
更细的数据用逐笔或 1 分钟 K 线重放这根 K 线在存在这类更细数据的地方解决顺序

在 Senzoukria 里

自动回测引擎把止损与目标对着每根 K 线的最高价和最低价检验,而当一根 K 线同时触及两者时,它按止损平掉这笔交易。这条规则写在引擎的源码和文档里:没有逐笔数据,顺序就是未知的,所以取对这笔交易最不利的那个结果。那根 K 线的偏移在离场被应用之前,会被记录到这笔交易的 MAE 和 MFE 里。图表上的多头与空头持仓工具应用同样的顺序,先检查止损。而自营规则引擎更进一步:当一条回撤规则的判定取决于那个未知的 K 线内顺序时,它把结果标为不确定,而不是去猜这个账户活下来了没有。

由于回测提供 1 分钟、5 分钟、15 分钟和 1 小时这几种粒度,所以一套策略对这个约定的敏感程度,可以通过把同一条规则跑在一个更细的粒度上、再比较结果来检查。

常见错误

  • 用一个平台的默认设置,而不知道它施加的是哪一种约定。
  • 在粗粒度的 K 线上收紧止损和目标,而那会让有歧义的交易成倍增加。
  • 把那个悲观的结果当成一个有保证的下限:滑点和跳空仍然能让它更糟。

同一栏目

其他语言版本

常见问题

为什么不干脆假设离开盘价更近的那个价位先被打到?
那是一个合理的平均猜测,但在任何一根具体的 K 线上它都可能是错的,而且如果这套策略的入场系统性地靠在区间的某一侧,那些误差并不会相互抵消。一个保守的约定,把误差留在那个不讨好结果的方向上。
我怎么知道我的回测依赖这个约定?
数一数那些在同时触及两个价位的 K 线上离场的交易,或者把同一条规则在一个更细的周期上重跑一遍。如果结果有实质性的变化,那么这套策略的优势至少有一部分是「有歧义的 K 线怎么被处理」所造成的人为产物。
NEXT

继续阅读