通达信公式没有源码,不等于完全无法判断。能看的部分有三层:输出线、周期行为、历史末端的变化。这三层都是用行为去反推内部,看不到的那部分只能承认看不到。问题在于把「看不到源码」直接等同于「只能听介绍」,于是要么全信,要么全不信,两种做法都跳过了中间那段可以自己动手验证的部分。

先把话说清楚:本文讲的是验证方法,不是判断好坏的标准。同一套方法用在不同公式上,结论可能相反,具体怎么用取决于你要拿这支公式做什么。

一、先分清「没有源码」是哪一种

看不到源码有几种不同的情形,可验证的余地差别很大。

情形 能看到的 不能做的
加密导出件(导入后源码区为空) 图上的线、参数表里开放的参数 逐句读、改语句、在中间插输出
编译后的二进制包 同上,另加运行时的输出 确认内部用了哪些函数
只给截图与说明的「指标」 只有别人给的图 在本机复现,任何一项都无法验证
系统内置指标 部分版本可查看源码,部分只读 改动内置定义

第一种与第二种还能装进本机跑,第三层要特别小心:没有文件,就没有任何一项可以自己观察的东西,后面几节的方法一条都用不上。判断一支公式能不能验证,第一步就是确认手里有没有可导入的文件。

导入之后,在公式管理器里点开那条公式,看编辑区是空的还是灰的,看参数表里哪些项可以改。这两个信息决定了后面的验证能做到多细。

二、输出线层:数量、量级、越界

通达信公式没有源码时,第一层能读的是输出。把公式挂到副图上,数一数有几条线,再逐条看取值范围。

数量。副图上画出来的线的条数,等于这支公式的输出个数。NODRAW 的输出不画线,但仍然是一个输出,在公式管理器的测试输出区里能看到它的值。数一遍线条数、再数一遍测试输出区的行数,两个数对不上,说明有输出没挂上或者被隐藏了。

量级。每条线的取值落在什么范围,能反推它在算什么。价格类的值在个位到几十之间,百分比类的值在 0 到 100 之间,比值类的值在 0 附近,成交量类的值可能上万。量级不对,说明取数的对象不对,或者单位换算漏了一步。

越界。有些线会跑到正常范围之外,比如百分比类的线跑到 -20 或者 130。越界有两种来源:一种是把两条线的差放大,例如把差值乘上一个系数;另一种是用外推公式,例如用两个平均值的线性组合去估计斜率。越界本身不是错误,但它限定了这支公式的用法——按固定阈值去卡一条会越界的线,阈值会时不时失效。

{ 看不到源码时,先用这几项读输出 }
{ 1. 输出条数:副图线条数 与 测试输出区行数 对齐 }
{ 2. 每条线的量级:价格 / 百分比 / 比值 / 成交量 }
{ 3. 越界情况:是否有负值、是否超过 100 }
{ 4. 是否有 NODRAW 输出:有则不画线,但算过 }

三、周期层:换周期之后数值怎么变

同一支公式挂在日线、周线、分钟线上,数值的变化方式能说明它取的是哪一层数据。

如果它只做当前周期的计算,换周期后数值会按新周期的 K 线重算,形状相似但幅度不同:周线的波动范围比日线大,分钟线的波动范围比日线小。这种变化是连续的,切换周期时不会出现整条线突然变成另一段数值区间。

如果它内部引用了另一个周期的数据,换周期后会出现一种特征:某些线的数值固定在另一个周期的刻度上,不随当前周期变化。比如在分钟图上,某条线始终停留在日线的水平,说明它引用的是日线数据。这类写法不是错误,但它带来的一个后果要注意——分钟图上那条线在一天之内是平的,不会告诉你日内发生了什么。

切换周期还有一个自检点:把同一支公式在日线与周线上分别导出一段数值,比一比同一日期的读数。两次读数一致,说明取数不依赖当前周期的 K 线根数;两次读数不同,说明计算里用到了根数或窗口长度,跨周期时参数的物理含义已经变了。

这一步不需要任何工具,只需要在图上切换周期,看线形有没有「卡住不动」的段落。卡住的那一段,多半就是跨周期引用的位置。

四、历史末端:重绘与未来取值的痕迹

看不到源码,最需要确认的一件事是它有没有用未来数据。这件事没法靠读源码确认,只能靠观察历史值会不会变。

做法很直接:在某一天收盘后,把这条线在该日的数值抄下来,连同前后几根 K 线的值一起记;过几个交易日,再把同一日的数值调出来,与前一次记录对照。两次一致,说明该日之后的数据没有参与该日的计算;两次不一致,说明后来发生的事改写了当时的读数,也就是重绘。

重绘的机制在通达信里对应几类函数:ZIG 这类找拐点的函数,拐点要等到后面的价格走出来才能确认;REFX 这类向前取值的函数,取的是尚未发生的值;BACKSET 这类回填函数,会把后面的状态写回到前面。用了这几类里的任何一个,历史末端的读数都会随新数据变化。站内 公式报错与卡顿排查 里讲过漂移与重算的区别,那里的判断方法在无源码的情况下同样适用。

观察窗口要留够。抄完数值的第二根 K 线就去看,一部分重绘还不会显现;拐点类的公式要等到下一次转向才会改写前一段。记录时把日期与数值一起写下来,比对时按日期对齐,不要凭印象。

五、对照验证:同一段数据两处比

通达信公式没有源码时,还有一种不需要源码的办法,是拿同一段数据在两处做对照。

第一处是对照已知公式。如果这支公式宣称算的是某个标准指标,就在同一只标的、同一周期上把系统自带的同名指标挂出来,两条线并排看。形状一致、数值量级一致,说明它算的是同一件事;形状差得远,说明它换了算法,或者用了几条线的组合,这时候不要再用「这就是某某指标」去理解它。

第二处是对照另一台机器。同一份文件导入到另一个版本上,看输出线数量、参数表项数、数值量级是否一致。版本差异造成的差别,在源头上是数据接口与函数支持范围的变化,与公式写得对不对无关。两处一比,能分掉一部分「换台电脑就不对」的怀疑。

两处对照都有前提:标的、周期、复权方式要一致。复权方式不一致时,价格类的数值整体不同,形状却相似,很容易被误当成算法差异。

六、看不到的那部分,只能承认

三层验证做完,能确认的边界大致如下:能确认它输出了几条线、量级对不对、有没有越界、跨不跨周期、会不会重绘;不能确认它内部用了哪个窗口、怎么组合、参数之间的换算关系,也不能确认它在别的品种或别的行情阶段会怎么表现。

这个边界不影响使用,影响的是说法。可以说「这条线在切换周期后卡在日线水平,说明它引用的是日线数据」,这是观察到的;不能说「它内部用了二十日均线」,除非能看到源码或作者说明了写法。前者可以复现,后者无法核对。

再看这一层:通达信公式没有源码时,验证的着力点从「读代码」转到「读行为」。行为能读到的部分不少,读不到的部分也有明确的边界。真正需要警惕的不是「没有源码」这件事本身,而是把观察到的一层当成全部——看到三条线就说懂了算法,看到一条平滑的线就说没有重绘。

反过来问一句:一支公式值得你花多少时间做这三层观察,取决于你要用它做什么。只是挂在图上看个大概,前两层够了;要写进复盘记录、要跨版本对比、要在别的标的上复用,第四节的末端比对就不能省。

本文只作技术研究口径,内容为无源码条件下的行为验证方法,不涉及对任何标的的判断,也不提供操作层面的建议。函数名与界面项以本机版本的实际显示为准,不同版本对加密件的限制与可查看范围可能有差异。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。