通达信公式注释写法要抓住一个事实:注释在通达信里只有一种形式,就是花括号 { }。它不是装饰,而是留给下一个读这段算式的人的路标,而那个「下一个人」可能是三个月后的自己。把注释写对,返回头看懂一段旧公式的时间会从十几分钟降到几分钟。
下面按注释的语法边界、输出行的命名、命名规范、需要标注的三类信息、以及一段可直接套用的模板来写。文中语法以通达信 PC 版的公式系统为准,不同版本与券商定制版对中文标点与注释的处理存在差异,请以你所用客户端帮助文档为准。
一、注释只认花括号这一种形式
写公式时不要拿别的语言里的 // 或 /* */ 来套。// 在这里会被当成两个除号参与运算,编译器会报错或者算出一个无意义的结果。能被识别的注释符号只有花括号。
花括号还有两条常被踩到的边界。第一,注释不能嵌套,写在注释里的花括号会被当成注释结束,后面的字会重新进入解析。第二,注释内容不参与计算,但一样占用公式长度,把整段历史说明贴进去,公式容易碰到长度上限。
{ 正确的注释:单层花括号,写完即结束 }
均线:=MA(CLOSE,20);
{ 下面这种写法会提前结束注释,后面的字被当成算式
内层花括号 { 就会被当作结束符 }
注释还有一处实用价值:临时屏蔽。输出行不想显示时,把它整行包进花括号,编译仍会通过,图上不再画线,改回来只需去掉两个符号。这比删掉再补回来安全。
二、输出行的名字就是图例名
注释之外,真正影响可读性的还有输出行的名称。通达信公式里,: 声明的行会输出并画线,行名就是图上图例显示的文字;:= 声明的行只做中间变量,不输出、不出现在图例里。通达信公式注释写法与命名写法要一起考虑,原因就在这里:注释管「给人看的解释」,行名管「给图看的标签」。
| 写法 | 是否输出 | 出现在哪里 |
|---|---|---|
MA5:MA(CLOSE,5); |
输出 | 图上画线,图例显示 MA5 |
差价:=CLOSE-MA(CLOSE,20); |
不输出 | 只在算式内部使用 |
{MA5:MA(CLOSE,5);} |
不输出 | 被注释屏蔽 |
行名用英文字母与数字组合最稳,长度控制在四到八个字符。行名里带空格、中文标点或括号,图例可能显示不全,取值面板里的对齐也会被打乱。
三、公式名称与描述填在管理器里
算式文件本身只承载算法与行名,另外三项文字是在公式管理器里填的:公式名称、中文名与描述。公式名称是调用标识,建议与行名同风格;描述是能写整段说明的地方,把用途、数据前提与参数含义写进去,比在算式里塞大段注释更清楚。
参数表里的每个参数也有自己的名称与说明栏。参数的默认值、最小值与最大值的取值范围要一次定死,说明栏写清这个参数控制的是什么窗口或阈值,将来调参时不用回头猜。
四、注释里要标注的三类信息
不是每行都要注释。真正需要标注的是三类容易随时间失真的信息。
- 单位与口径。成交量按手还是股、金额单位、价格是否复权,这类前提不写下来,换一个数据源或换一个周期就可能对不上。
- 参数各档的含义。窗口写成参数之后,注释要说明这一档对应多长的观察范围,而不是只写「参数一」。
- 已知的失效场景。这段算式在数据不足、停牌复牌、除权前后会给出什么表现,写在旁边,比事后重新排查省事。
- 修改记录。改过哪一处、为什么改,用一行日期加一句话记下。公式被改坏之后,这一行是回到可用版本的最短路径。
第三类信息最容易被省略,因为写的时候心里清楚。但公式一旦离开本机,或者过上几个月,这段算式的失效边界就没人记得了。把它写下来的成本是一行字,补回来的成本是一次完整的排查。
五、命名上要避开的四类写法
行名与变量名不受注释规则约束,但它们踩的坑和注释很像,都要等到别人接手时才暴露出来。下面四类写法在图例显示或公式调用时会出问题。
| 写法 | 会出现什么 | 改法 |
|---|---|---|
| 与内置函数同名,例如把变量直接叫 MA | 解析时与函数名冲突,取值不符合预期 | 加后缀区分,写成 MA1 这类形式 |
| 行名里带空格或中文标点 | 图例只显示前半段,取值面板对不齐 | 去掉空格与标点,用下划线或直接连写 |
| 以数字开头,例如 5MA | 部分版本按数值解析,编译不通过 | 数字放到后面,写成 MA5 |
| 同一段里两个输出行重名 | 图例出现两条同名线,读图时分不清 | 按用途区分,例如 MA20 与 MA20B |
命名还有一处容易忽略:中间变量名在整段算式里是共享的。同一个名字被赋第二次值,先前那次取值就被覆盖,后面所有引用都会拿到新值。所以变量名不要复用,宁可多起几个名字,也不要让一个名字在不同位置代表两种含义。
另外一件事值得单独说:注释会随导出一起带走。把公式导出成文件交给别人时,花括号里的内容原样保留,这在交接场景里是好事。反过来,注释里写过的内部标记、试算记录也会一起传出去,交付前把这一段清理一遍。导出格式与交接说明的写法,可对照 跨平台对比与公式转换 一栏。
六、一段可以直接套用的模板
把上面的规则压成一份模板,新写一段算式时照抄结构,改动量最小。
{ ===== 公式用途 ===== }
{ 主图叠加两条均价线,用于对照价格与均价的相对位置 }
{ 数据前提:日线,价格按前复权;窗口为周期根数 }
{ ===== 输出行 ===== }
MA5:MA(CLOSE,5),COLORWHITE; { 5 周期均价 }
MA20:MA(CLOSE,20),COLORYELLOW; { 20 周期均价 }
{ ===== 中间量(不输出) ===== }
偏离值:=CLOSE-MA20; { 价格相对 20 周期均价的差值 }
{ ===== 已知边界 ===== }
{ 数据不足 20 根时 MA20 给出无效值,图上会出现断点 }
模板里的分段标题用等号连接即可,不必追求美观。真正起作用的是每一行后面的短注释,它让读者不必回头翻函数手册。写完之后建议挂到图上验证一次:图例里出现的行名,应当与你在注释里描述的行意义一致。命名与图例相关的问题,可另外对照 主图与副图指标 一栏。
如果只记一条动作:每次写完一段新算式,先花两分钟补上「用途、数据前提、已知边界」三行注释,再保存。通达信公式注释写法并不复杂,难的是在还看得懂的时候把它写下来。语法层面还需要对照的内容,见 通达信公式编写教程 一栏;公式保存不成功、提示异常时的排查顺序,见 报错与卡顿排查 一栏。
文中语法与界面用词按通达信 PC 版的常见形态描述;不同版本与券商定制版在注释符号、公式长度上限与描述栏字段上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论公式写法与可读性,不构成任何投资建议。
