通达信公式定制流程里最难的一步不在编写,而在把需求说清楚。委托方描述的是想要什么效果,编写方需要的是能算出是或否的条件。中间这段翻译如果没做,交付之后双方都会觉得对方理解错了。
下面按需求怎么写成可计算的条件、参数与输出形态要写死哪些、验收怎么做、边界情形测什么、三处容易起争议的地方,以及三条路径的取舍来写。文中函数与操作按通达信公式体系的通用描述,不同版本对函数与数据范围的支持存在差异。
一、把需求写成可以计算的条件
需求描述里出现的每个形容词,都要能落到一个取数对象与一个比较关系上。写出「放量」这个词,编写方无法直接使用;写出「成交量大于它前十根的均值」才能变成算式。翻译的判据只有一个:这句话里有没有出现具体的取数对象、比较关系和窗口长度。
| 需求里的说法 | 缺什么 | 补全之后 |
|---|---|---|
| 持续放量 | 持续几根、量以什么为基准 | 成交量连续三根大于其二十根均值 |
| 涨幅明显 | 与谁比、比较窗口多长 | 当日涨幅大于前五根平均涨幅 |
| 回踩支撑 | 支撑用什么表示 | 最低价触及二十日均线且收盘价在其上方 |
表格里的翻译还可以再往下推一层。补全之后的条件要再问一次:这个取数对象在当前版本里是否存在,窗口长度是否写成了可计算的常数,比较关系是大于还是大于等于。这三处的选择不同,算出来的结果就不同,而它们在口头需求里都体现不出来。翻译阶段把这些选择逐项写下来并标注,编写阶段就不需要再猜。
第三行是沟通成本最高的一类。支撑、压力、强势这些词在口头交流里有共识,在算式里没有对应物。把它们换成一个具体的取数对象,例如某条均线、某个前期高点、某段区间的边界,需求才具备可编写性。这一步由谁来做,是定制流程里要先确认的事。
二、参数与输出形态要在需求里写死
参数与输出形态属于需求里要提前写死的部分,它们不改变逻辑本身,却决定交付之后能不能直接用。通达信公式定制流程在这一步的产出,是一份写明参数名称、缺省值与输出形态的清单。
同样一条逻辑,可以写成数值全部写死的形式,也可以写成开放参数的形式。两者交付之后的可用性差别很大。
参数写死的公式,改一个数值就要回到编辑器里改算式。开放参数的公式,在调用时通过参数表填数值就能调整,算式结构不动。委托方后续要自己试几组数值的,需求里要明确写出参数开放,以及每个参数的缺省值。
输出形态同样要提前确认。要求是在图表上画出曲线并做标记,还是要输出一份成立与不成立的判定结果,决定这条公式归到哪一类,也决定了它在客户端里怎么被调用。
{ 同一段逻辑,两种输出形态 }
参考线:MA(CLOSE,20);
条件:CLOSE>参考线;
{ 第一行画线,第二行供筛选调用 }
两条输出同时存在时,这条公式在图上既画线又能被筛选调用。若只需要其中一种,把用不到的那一行的输出符号改成赋值形式,它就不会对外显示。
三、验收用历史区间逐条对照
交付之后的第一件事不是看曲线好不好看,而是逐条条件对照。做法是把复合条件拆开,每个分条件单独输出一条曲线,在一段已知的历史区间里核对每一根上成立与不成立的位置是否与需求一致。
- 确认公式能正确装入,落在约定的类型分支下。
- 把每个分条件单独输出,逐条核对边界位置。分条件全对,复合之后才可能对。
- 核对复合结果,检查与、或的组合方式是否与需求一致。这一处最容易写反。
- 用一段需求里提到过的行情核对,再换一段没提过的行情核对。第二段用来检查有没有过拟合到某一段行情上。
第四步容易被跳过,它检验的是条件在需求描述之外的表现。第二段行情上的信号密度与前一段差别很大,说明参数对某一段数据过于贴合,需要重新讨论窗口长度。
四、边界情形的测试清单
正常行情下算得对,不代表边界情形下不出问题。下面几类要专门测。
- 数据缺失与停牌前后的位置,分母可能归零,输出会不会出现断点或极端值。
- 连续一字走势期间的取数,平均类函数的分母是否稳定。
- 新品种或少数据品种,窗口长度大于已有根数时算出来是什么。
- 复权切换前后,涉及价格比较的条件是否仍按预期成立。
- 跨越较长周期时,跨周期引用取到的是哪一根的值。
这几类的处理方式与常规写法一致:给可能归零的分母加下限,给窗口不足的位置加判断,把数据来源与复权口径写进说明。写入公式时把这些判断放在算式前段,比散落在各条输出语句里更便于维护。
五、三处容易产生争议的地方
第一处是信号数量与预期不符。委托方按印象估计的密度与实际算出来的数量有差距,此时要回到分条件逐条对照,看差距来自哪一个条件,而不是直接调参数把数量凑上去。调参数凑数量会把条件本身改掉,需求与实现就不对应了。
第二处是引用了当前根之后的数据。这类函数会让历史位置的判定依赖后来才出现的数值,图上看着结果理想,放到真实的时间顺序里无法复现。交付前用历史区间做一次复核就能发现:把统计区间截到某一天,看那一天的判定在这之后有没有变化。
第三处是参数未开放。需求里写了要可调,交付的是写死的数值,这一处属于沟通遗漏,发现得越早改起来越省事。验收清单里加一行「参数表能否改动并保存」,就能提前发现。
六、自己写、下载现成与委托编写的取舍
通达信公式定制流程的适用场景,要和另外两条路径放在一起比较。
需求能用现成函数组合表达、且不涉及个性化的判断口径,自己写。学习成本集中在函数查表上,改动时的往返次数最少。
需求属于通用类型、市面上已有对应写法,找一份现成的参考。省下编写时间,代价是对方的口径与方法要重新核对一遍,需求里个性化的部分仍需自行调整。
需求包含独有的判断口径、或者要把内部的一套观察规则固定下来,走定制。此时真正需要交付的不只是算式,还有一份写清参数、边界与验证方式的说明。指标资源的筛选维度,见 指标资源选择与会员 一栏。
三段各有可核对的产出:一张说法与算式对照表、一份拆开了分条件输出的草稿公式、一份边界情形的测试记录。三段都留下记录,后续每一处分歧都能落到具体某一项上讨论,而不是靠回忆当时的对话内容。这就是通达信公式定制流程里成本最低的一处投入,写下来的时间远小于事后重新对一遍的时间。
文中函数与操作按通达信公式体系的通用描述;不同版本与券商定制版对函数范围、参数表机制与跨周期取数的支持情况存在差异,具体请以你所用客户端的实际界面与帮助文档为准。本文只讨论需求描述与验收流程,不构成任何投资建议。
