指标使用检查清单要解决的是一个很具体的问题:一张图上的线条、色块和文字标记,与它背后的计算是不是同一回事。公式从哪来、参数设成什么、数据够不够、量纲能不能放在一起——这些都不看,就直接讨论指标好不好用,讨论的是自己对图的一个印象。
下面把这份清单按核对顺序排开,七个环节,每个环节都指明在软件里能直接查看的位置。全文只讲公式的计算口径与核对方法,不评价任何指标的效果,也不给出操作结论。文中目录名与菜单路径以通达信金融终端个人版为参照,版本号可在「帮助 → 关于」中核对,券商定制版的菜单名称可能与之不同。
一、公式依赖哪些数据
打开公式源码,先做一件事:把里面出现的数据名逐个抄出来。常见的是开盘、最高、最低、收盘、成交量与成交额这几条按时间排列的序列,写法分别是 OPEN、HIGH、LOW、CLOSE、VOL、AMOUNT。这一层不查出处的数据,只要本地有行情就能取到。
需要留意的是第二类:引用了本品种之外的数据。板块指数、行业指数、大盘指数都属于这一类,它们的代码与个股不在同一段,公式里要单独指定。还有一类是财务数据或更细的资金类数据,这类数据的更新时点与行情不同,取到的值可能是上一报告期的。
核对办法是看输出与本地数据的重合范围。行情类序列在数据下载完整的情况下,从本地数据的起点往后每一根都有值;跨品种引用与财务类数据,起点更靠后,或者在某个位置之前一直返回空值。图上表现为线条前半段失踪,或者干脆从中间开始画。
二、参数表的读法
通达信的公式有两种参数写法。一种写在源码里,直接把数字写死在计算式中;另一种是参数表,在公式管理器的新建或修改界面里单独声明,写法和取值范围都填在那里。区别在于参数表里的值可以在不改源码的前提下调整,也能在多个窗口里用不同取值。
参数表的位置在公式管理器 → 技术指标公式 → 选中公式 → 修改 → 参数表。表里每一行是参数名、最小值、最大值、默认值四列。这里有一个容易忽略的点:默认值是在把公式挂到图上时自动带进去的那个值,改参数表不会改变已经挂在图上的那些实例,它们仍然用挂上去那一刻的取值。
{ 参数表声明后,源码里直接用参数名 }
{ 参数表:N 最小 5 最大 60 默认 20 }
MA1:MA(CLOSE,N);
MA2:MA(CLOSE,N*3);
{ 与硬编码写法对照 }
MA3:MA(CLOSE,20);
看参数的意义要落在它引用的数据段上。周期类参数改变的是取样长度,权重类参数改变的是不同位置的权重分配,阈值类参数改变的是判断成立的门槛。三者对输出的影响方向不同,混在一起调,很难说清是哪一个起了作用。
三、输出量纲与坐标轴
主图公式和 K 线共用一套坐标轴。如果公式输出的值落在与价格同一量级,两者能放在一起看;如果输出的值高出价格一个量级,K 线会被压成一条细带,图上只剩下公式的线条。这类问题不报错,也不影响计算出结果,但它让图失去了可读性。
副图公式要单独判断一次。副图有自己的一套纵坐标,公式输出的量若是比值或百分比,量级在 0 到 100 之间,纵轴范围是合适的;若同一张副图上放了两条量级相差很大的线,两条线的相对高低就没有含义,看起来的交叉也未必对应什么。
四、挂载位置与显示范围
公式挂在哪里由它的输出决定。主图叠加适合画在 K 线附近的线;副图适合独立的量纲;再有就是画在 K 线之间的标记类输出。挂载位置在公式编辑界面选定,或者右键图上区域选择「选择主图指标」与「选择副图指标」。
显示范围是另一项。图上看多少根 K 线,可以在图表底部拖动,也可以在系统设置里改默认的数量。这个数量和公式的计算量相关:公式里如果含逐根递推的写法,比如用前一期的结果参与当期计算,计算量会随显示根数增长。把显示范围从几百根拉到几千根,刷新时的等待时间会明显变长。
显示范围还会影响一件更隐蔽的事:前几根 K 线上的输出。递推类写法需要足够长度的历史数据才能收敛,图上最左边那几根的输出是在数据不足的条件下算出来的,把它们当作正常值看待会得到错误的印象。核对办法是把显示范围往左扩一段,看最左侧的输出是否还在变化。这一项在指标使用检查清单里排在挂载位置之后,它同样属于公式输出的性质问题,而不是写法问题。
五、用同一天的数据复核一个点
指标使用检查清单走到这一步,要做的是一次逐点复核。公式输出不必整段核对,挑一个点就够。选一根收盘数据已知的 K 线,把公式里最重要的那条输出手算一遍,与图上显示的数值对照。手算要用到的中间量,可以在源码里临时加输出,逐层打印出来看。
{ 逐层打印中间量,用于手算核对 }
A1:=CLOSE;
A2:=REF(CLOSE,1);
A3:=A1-A2;
X:A3;
{ 图上显示的 X 值应与手算一致 }
一根对得上,说明取值链条没接错。对不上时不要急着改公式,先确认两件事:图上那根 K 线的日期与你手算用的是不是同一根;该股的复权设置与公式是否一致。除权日的收盘价在复权前后是两个数,用不复权的数据去套复权计算的公式,两者的结果对不上。
六、几类会让结果失真的情形
第一类是数据缺失。本地日线数据没有下载完整,公式在缺失区间返回的是空值,画到图上就是断线。判断办法是打开数据下载工具,看该品种的日线数据起止日期,与图上输出的起止位置对照。
第二类是停牌与长期无成交。停牌期间没有新的行情,某些以成交量为分母的计算会得到分母为零的结果,输出可能直接跳过一段或给出异常值。这类情形属于数据本身的特性,不是公式写错。
第三类是品种差异。同一段公式在个股与指数上跑,取到的序列不同,用到换手率一类需要流通股本的计算时,指数的分母含义与个股不同。把个股上验证过的公式直接套到指数上,输出的数值可比性会下降。
第四类是周期切换。日线公式套到分钟线上,周期参数对应的实际时间长度变了。二十周期的均线在日线上是二十个交易日,在一分钟线上是二十分钟,两者的含义无法互相替代。
七、这份清单用完之后
指标使用检查清单走完一遍,得到的是对一张图的确认:数据从哪来、参数怎么定、画在哪、量纲合不合、某一点能不能复现、什么情况下会失真。这些确认做完,再去判断指标是否符合自己的使用习惯,判断才有依据。反过来,跳过确认直接看线条好不好看,得到的只是对图形的观感。
把这份清单固定成一种习惯,还有一个附带的好处:拿到任何一个新公式,核对路径都是同一条,不必每次重新摸索。核对项的推进顺序也可以按需要调整,不建议跳过的是一开始的源码查看——不看源码就无从知道输出是怎么来的。
站内还有几处可以对照查看:公式编写与语法函数 一栏讲函数本身的写法,指标原理与参数优化 一栏讲参数改变对计算的影响,公式安装与导入 一栏讲文件放在哪个目录。三处侧重点不同,按需要挑一处看即可。
文中出现的目录名、菜单路径与函数名来自软件安装后的目录结构与公式管理器界面;不同版本、不同券商定制版可能存在差异,请以你所用版本的「帮助 → 关于」与本地实际目录为准。
