通达信选股公式源码挑选的第一个动作不该是从头往下读语句。打开一段没有注释、变量名是 A1 到 Z9 的源码,读到哪里不懂就卡住,是效率最低的一种读法。更省力的顺序是先找这段源码的输入与输出:它拿了哪些字段,最后画了什么线出来。输入输出定下来,中间那堆变量的作用范围就缩小了,逐段推断才有可能。

这里说的挑选,不是挑一段拿来用的源码,而是拿到一段源码后判断它值不值得用、以及它能不能被看懂。判断依据有四项可以逐个核。文中写法以通达信 PC 版的公式系统为准,不同版本与券商定制版在函数签名与字段命名上存在差异,请以你所用客户端帮助文档里的说明为准。

一、先看输入与输出,再看中间

读源码的顺序应当是:找输出线、找输入字段、再看中间计算。输出线在语句里带冒号,是公式画到图上的那条线;输入字段是 CLOSE、VOL、CAPITAL 这一类直接取行情或股本的内置字段。

{输出线与输入字段,是读源码的两个坐标}
输出线:表达式;              {冒号 = 画线}
中间量:=表达式;             {等号 = 不画线的中间变量}

{输入字段一般在算式的最底层出现}
快:EMA(CLOSE,12);
慢:EMA(CLOSE,26);

把输出线与输入字段列出来,就得到这段源码的骨架:它把哪几个原始数据,经过哪些加工,最后呈现成一条什么形态的线。骨架清楚了,中间那些命名随意的变量才能在骨架里找到位置。

先找的东西 怎么认 找到之后有什么用
输出线 语句里带冒号,会画到图上 确定公式的最终产出是什么
输入字段 CLOSE/VOL/CAPITAL 这类内置名 确定它的数据来源与量级
参数声明 公式头部可调的那几个数值 确定哪些数字会被改动
绘图调用 画柱、画图标、写文字类函数 确定视觉产出与可读性

二、通达信选股公式源码挑选的第一项判据:口径是否写明

第一项判据是源码有没有把口径写清楚:用的窗口长度是多少、字段是哪个、有没有跨周期引用、复权怎么处理。这些信息有的写在注释里,有的只能从算式里推。

拿不出这些信息的源码,用起来会有一类特定风险:它在原作者用的数据上表现正常,换到你的数据上会得到量级不同的结果,而你不知道差异从哪来。

口径未写明的源码,最大的问题是无法验证。你能看到线条形状,但无法判断这个形状对应的算式是否正确实现了原作者想表达的意思。挑选时把「口径有没有写明」排在「形态好不好看」之前。

三、第二项判据:变量命名能不能推断用途

变量命名是可读性的直接指标。用 快线、均量、信号 这类名字,比用 AA、BB1 好读得多。这一点在挑选源码时价值很高,因为可读性决定了后续能不能改动。

{命名可推断的源码}
均价线:MA(CLOSE,20);
当前量:VOL;
量能比:当前量/MA(当前量,5);

{命名不可推断的源码:同样的计算,读起来要逐行反推}
AA:=MA(CLOSE,20);
BB:=VOL;
CC:=BB/MA(BB,5);

两段源码的计算完全相同,但第一段可以直接改动窗口参数,因为你知道每个变量在算什么;第二段要先把每个名字对应回含义,才能动手。

四、第三项判据:有没有结构性冗余

结构性冗余指同一条计算被重复写了两遍、或者一个中间变量声明之后没有被任何语句引用。这类源码是在多次修改中累积出来的,可读性与可维护性都不好。

{冗余示例:同一个中间量在两处重复计算}
{第一段}
快线1:EMA(CLOSE,12);
判断1:CLOSE>快线1;

{第二段:同一个均线又算了一遍}
快线2:EMA(CLOSE,12);
判断2:CLOSE>快线2;

{清理后:算一次,两处引用}
快线:EMA(CLOSE,12);
判断甲:CLOSE>快线;
判断乙:CLOSE>REF(快线,1);

发现冗余的办法是查变量使用次数:一个中间变量声明之后,在后续语句里出现的次数是一,说明它只被用了一次,可以考虑合并;出现零次,说明它是残留。

五、第四项判据:参数有没有提取出来

参数化的源码,把窗口长度、阈值这些会调整的数值放在了公式头部的参数位,调用时能在界面上直接改。参数写死在算式里的源码,每次调整都要进编辑器。

写法 调整成本 对挑选的影响
窗口长度作为参数声明 调用界面直接改 可反复试验,适合留下
窗口长度写在算式里 每次进编辑器改源码 试错成本高,改动意愿低
阈值带说明 知道改动的边界 能判断改动是否安全
阈值无说明 只能试 容易改出无效范围

通达信选股公式源码挑选这一项上,参数化程度的高低,直接决定了这段源码是「只能看」还是「能改着用」。前者用一次就搁置,后者可以持续调整。

六、把四项判据合成一张核对表

拿到一段源码,按下面四项逐个核。四项都过的,值得留下来细读;有两项不过的,读它的时间成本可能高于自己重写。

  1. 口径是否写明:窗口长度、字段名、跨周期引用、复权处理有没有交代。
  2. 命名能否推断:变量名读起来能不能还原出它的含义。
  3. 有没有结构性冗余:同一计算是否重复,中间变量是否被引用。
  4. 参数是否提取:会调整的数值在参数位还是在算式里。

这四项是按投入产出排的序。第一项不过的,后面三项再好也不值得读,因为读懂了也无法判断它算得对不对。

七、读懂之后的第一件事是复算

源码读懂之后不要直接改成自己的用法,先做一次复算:取最近一两个数据点,按源码的算式手工算一遍,与图上数值对照。这一步能发现三类问题:算式里有用错单位的地方、窗口参数的写法与理解不一致、以及绘图函数的位置参数与预期不符。

{复算示例:把源码的核心算式抄出来单独跑}
{与原源码对比同一个数据点上的取值}
参考线:MA(CLOSE,20);
测试输出:参考线;

{手工算法:把最近 20 个收盘价加起来除以 20}
{与图上 参考线 的最后一个数值比对}

复算之后再改动,改动范围会缩小。这一步的时间是几分钟,但能省掉后面反复试错的过程。相关写法可以对照 通达信公式编写教程 一栏;源码能不能改成自己的版本所涉及的信息安全核对,见 指标资源选择与会员 一栏;改动后需要做的验证项,见 指标回测与风险验证 一栏。

挑选源码时有两个动作能显著降低成本:一是先看输出线画出来是什么形态,二是把输入字段列出来看量级。这两步花一分钟,能筛掉多数与需求不符的源码,不必逐行读。

通达信选股公式源码挑选的实质,是把「这段源码能不能被我说清楚」当作第一判据。说得清输入输出、说得清口径、说得清参数在哪,这段源码才有改动价值;说不清的话,读与改的时间加起来超过重新写一遍。

文中函数名与语法按通达信 PC 版公式系统的常见写法描述;不同版本与券商定制版在函数签名、字段命名与参数上限上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论源码读法、口径核对与资源取舍,不构成任何投资建议,也不对任何第三方源码的效果作评价或保证。

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