同一份公式,盘中看着成立的位置,收盘后重新打开却对不上了;或者昨天复盘的结论,今天再看图,曲线整体挪了一个位置。这类现象在排查笔记里常被写成「公式不稳定」,但把它直接归到公式写法上,方向就偏了。通达信公式结果不一致的一大来源不在表达式里,而在本地数据。

本文只讨论数据层:历史数据是否完整、除权数据是否更新、复权口径是否一致、周期与起点是否对齐,以及日常怎么减少这类差异。文中的菜单项与目录名以通达信金融终端个人版为准,券商定制版的入口位置可能有差异。全文只讨论数据的口径与核对方法,不涉及任何标的的判断。

一、同一个信号,收盘后重看变了

先把这类现象按发生的时间点分开。差异出现在什么时候,指向的成因不同。

差异出现的时点 先查的方向
盘中与收盘后不一致 当根 K 线在盘中还没有定下来,收盘后数据才落定
今天复查与昨天复查不一致 两次之间发生过数据更新,历史数值被改写
同一天两台机器上不一致 两台机器的数据下载范围、复权设置或数据起点不同
换周期后不一致 不同周期的本地数据完整程度不同

四类里,第二类与第三类是纯粹的数据问题。它们不需要改公式,改的是数据本身或者数据的读法。第一类属于数据尚未落定的正常状态,对照的意义有限。下面逐一说明后两类。

二、先分清是数据变了还是设置变了

通达信公式结果不一致这件事,先要区分两种变化。一种是底层数值被改写了,另一种是数值没变但读法变了。区分方法很简单:把光标停在有疑问的那根 K 线上,直接看行情本身的数值。

  • 如果行情数值本身变了,说明数据被更新或补写,问题在数据来源。
  • 如果行情数值没变而公式输出变了,说明公式读到的历史区间或口径不同,问题在设置。

这一步做完,后面就只需沿着一条线查。跳过这一步直接去看公式,会在一个没有问题的表达式里反复找原因。

三、本地历史数据的缺段

本地历史数据来自数据下载。下载范围与下载时机决定了哪一段数据在本地存在。缺失的那一段在图上会表现为跳空,公式引用到这一段时,取值与有数据时不同。

需要单独确认的下载项有三类:

下载项 影响什么 怎么确认
日线数据 依赖较长历史窗口的表达式 在图上向左翻,看起始位置与缺口
分钟线数据 短周期公式与分时相关的取数 把周期切到分钟级,看数据是否连续
除权除息数据 跨除权日的历史价格 在数据管理里单独核对这一项的更新时点
日线数据与分钟线数据是两份独立的文件。只下载了日线,切到分钟周期会看到大段空白,而日线图上一切正常。遇到「换周期就不对」的问题,先确认这一项。

四、除权除息与复权口径

除权除息会让历史价格与当前价格不在同一口径上。软件处理这件事的办法是复权:把历史价格按除权比例调整,使前后价格可比。复权方式的不同选择,会让同一根 K 线的开高低收,也就是表达式里 O、H、L、C 的取值发生变化。

{ 依赖价格本身的数值,对复权敏感 }
价格相对位置:(C-LLV(L,120))/(HHV(H,120)-LLV(L,120));

{ 只依赖价格之间的比值,对复权不敏感 }
涨跌幅:(C-REF(C,1))/REF(C,1);

上面两段写法的区别值得留意。第一段用了历史区间的最高最低价,复权方式一换,分母就变;第二段用的是相邻两根 K 线的比值,只要除权日当天的比值口径一致,结果受复权影响小得多。排查时可以把公式里直接用到价格数值的语句挑出来,它们是与复权口径绑得最紧的部分。

复权设置有两个层次:一个是全局的系统设置里的复权方式,另一个是图上手动切换的复权处理。两个层次不一致时,同一根 K 线在不同窗口下会显示不同数值。核对时把两处都看一遍。

五、周期对齐与数据起点

通达信公式结果不一致的第三个来源是周期。日线、周线、分钟线各自取各自的本地数据,同一份源码在不同周期上求值,引用的历史根数含义不同。公式里写 REF(C,1),在日线上是上一个交易日,在周线上是上一周。

跨周期引用还会再叠一层:在短周期上引用长周期的数据,需要做一次周期对应。这个对应关系依赖两侧数据都存在且起点一致。

数据起点是另一个容易被放过的变量。本地数据的起始日期不同,长窗口表达式的可算范围就不同。窗口长度超过起始日期到当前的距离时,表达式在最早的那一段会取不到值。同一份公式在数据下载得多的机器上算得出来,在下载得少的机器上算不出来,原因就在这里。

把周期与起点这两项写进核对记录,有一个附带好处:下次再遇到同类问题时,能直接对照上次的记录,不必从头翻数据。

六、把核对顺序固定下来

上面几类成因合在一起,对应一条固定的核对顺序。按这条顺序走,每一步都能得到一个可以观察的结果,不会卡在猜测里。

  1. 看行情本身。把光标停在有疑问的那根 K 线上,确认开高低收的数值。数值变了说明是数据更新,没变说明是设置差异。
  2. 看缺口。在图上向左翻到起点,看有没有连续的空白段。若有,先在数据管理里补齐相应的下载项。
  3. 看除权项。核对除权除息数据的更新时点,确认它晚于最近一次除权。
  4. 看复权设置。把系统设置里的复权方式与图上手动切换的复权处理对一遍,两者应当一致。
  5. 看周期与起点。切到出问题的那个周期,确认该周期的本地数据存在,并确认数据的起始日期早于公式窗口需要的长度。

这五步的顺序是有讲究的:从最容易观察的行情数值开始,到需要翻数据的项目结束。怎么走完这五步,也决定了下一步该做什么。

七、减少这类差异的日常做法

排查之外,还有几件可以提前做的事,让通达信公式结果不一致的现象少出现一些。

  • 固定复权口径。在日常使用的机器上把复权方式定下来,不在排查过程中临时切换。口径一变,历史数值整体跟着变,容易把正常变化误判成异常。
  • 补齐下载项。把常用周期与除权数据都设为常规下载项,避免在需要时才想起某一项没下载。
  • 记录数据起点。把本机日线数据的起始日期记一次,长窗口公式取值异常时可以直接比对。
  • 复核时统一时点。同一次核对在同一时点完成,避免盘中与盘后两个时点的数据混在一张对照表里。

这四条的共同点是把变量固定住。数据层的问题之所以难查,原因在于数值会变;把能固定下来的口径固定住,剩下的变化就只剩数据更新这一项,判断起来直接得多。

本文只讲数据完整性与口径的核对方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式报错与卡顿排查 里讲其它故障的对照条目、指标原理与参数 里讲取值口径的条目、指标回测与风险验证 里讲样本区间选法的条目,可对照查看。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。