通达信公式编写这件事,卡住新手的不是函数记不住,而是不知道一条公式由哪几段拼起来。把结构认清楚之后,剩下的就是往里填内容。这篇按「四段结构 — 每段写什么 — 常见写法错误 — 怎么验证」推进,不铺陈函数的逐个用法。

文中的函数名、语法符号与菜单位置按通达信 PC 版的常见形态描述。不同版本与券商定制版在支持的函数集合与编辑器行为上存在差异,写完后请以你所用客户端的测试结果为准。

一、一条公式的四个组成部分

把一条能运行的公式拆开,它由四类东西构成。这个划分不来自某个版本的文档,而是从编辑器实际接受什么、拒绝什么推出来的。

段落 作用 写错的表现
输出段 决定画出什么线或给什么值 能通过测试但图上没有东西
计算段 中间变量,被输出段引用 测试报未定义的标识符
参数段 可调数字的声明 参数表里看不到可调项
条件段 把数值比较转成真假判断 信号永远不出现或一直出现

四段不是必须按某个顺序排,但输出段与计算段之间有依赖关系:被引用的名字要先出现。编辑器是从上往下读的,这一点决定了变量声明的顺序不能随意调整。

二、输出段:用什么决定画什么

输出段的写法取决于你想要的呈现形态。三种常见形态对应不同的写法。

{输出段的三种形态}
形态一:画线
  名称:表达式;
  例:均价:MA(CLOSE,20);

形态二:只在条件下画线
  名称:IF(条件,表达式,空值);
  例:突破线:IF(CLOSE>均价,均价,空值);

形态三:不画线只给值(供其他公式引用)
  名称:=表达式;
  例:量比:=VOL/MA(VOL,5);

第二种写法里有一个容易踩的坑:条件不成立时返回空值,那条线会断开。断开是符合预期的,不是错误。若写成返回 0,图上会出现一条贴着坐标轴走的线,两种效果完全不同。

第三种写法用的是单等号还是双等号,是新手最容易搞混的地方。具体哪个符号表示「赋值但不输出」,以你所用版本的编辑器测试结果为准——把两种都试一次,看测试通过后出来的是线还是只有变量名。

三、计算段:中间变量怎么组织

计算段的作用是把复杂表达式拆成有名字的中间结果。这一步做得好不好,直接决定后面改起来是否顺手。

{中间变量的组织}
反例:一行写到底
  信号:MA(CLOSE,5)>MA(CLOSE,20) AND VOL>MA(VOL,5)*2;

正例:拆成有名字的中间结果
  快线:=MA(CLOSE,5);
  慢线:=MA(CLOSE,20);
  放量:=VOL>MA(VOL,5)*2;
  信号:快线>慢线 AND 放量;

拆开之后有三点好处:测试报错时能定位到具体哪一行;想调参数时只改一处;把中间结果单独输出一次就能看出它算得对不对。一行写到底的写法,出错时只能整段重写。

调试中间结果的做法:临时把某个中间变量的等号改成输出写法,让它画到图上,看一眼取值再改回去。这是排查「结果不对」最直接的手段,比反复读代码快。

四、参数段:把可调数字提出来

把公式里重复出现的数字提成参数,是让一条公式可复用的关键。提出来之后,换周期不必改代码。

{参数段的写法}
1. 在公式编辑器的参数区填写参数名、最小值、最大值、默认值
2. 在公式里用参数名替代原来的数字
3. 测试通过后保存
4. 在公式管理器的参数表里确认能看到这几项

参数名不要与函数名重名,也不要与输出段的名称重名。重名时编辑器的行为取决于它读取的顺序,容易出现测试通过但取值不是你要的情况。

参数写法 好处 代价
写死在公式里 复制到哪里都能用 换周期要改代码
提成参数 不改代码即可调整 参数被改动后结果与原来不同
两者混用 常用的提起,固定的写死 需要想清楚哪些该提

五、条件段:把数值变成判断

条件段的作用是产生真假值。这里容易出的错误是拿两个量级不同的东西直接比较。

{量级对齐的检查}
可能出错的写法:
  条件:VOL>5;

问题:VOL 是手数级别的大数,与 5 比较几乎处处成立。

按相对量比较:
  条件:VOL>MA(VOL,5)*2;

含义:当日成交量高于近 5 日均量的两倍。

这类错误的隐蔽之处在于它不报错、也不影响测试通过。信号会一直出现,你需要对着图上实际标记的位置去判断这是不是你要的条件。检查办法是把条件的两个量分别输出到图上,看它们的量级差多少。

六、通达信公式编写中的三类语法错误

测试不通过时,报错大致落在三类里。

  1. 标点类:源码里含全角括号、全角逗号或中文引号。编辑器只接受半角标点,这类错误报的位置常指向该行末尾。
  2. 未定义类:引用的名字在前文没有出现过。检查顺序是从上往下找这个名字第一次出现的位置。
  3. 括号类:左右括号数量不等。长表达式里嵌套括号时容易漏掉一个,建议把长行拆成几行再数。

定位标点类错误有个省力的办法:把报错行与相邻两行一起删掉重敲,而不是在原文里找那个全角字符。肉眼区分半角与全角括号在某些字体下并不容易。

七、从一条可用公式到可维护公式

公式能跑起来之后,还需要让它在几个月后仍然能被看懂。做法集中在命名与注释上。

{命名与注释}
1. 变量名用含义相关的词,不要用 a、b、c
2. 每段计算前用注释说明它在算什么
3. 注释符号用编辑器支持的写法,写在行的末尾或单独成行
4. 保存前通读一遍,把不再被引用的中间变量删掉

注释不会影响计算结果,但会影响你下次改它的速度。写完隔一段时间再看,变量名是否自解释,决定的是重读时要花多少时间。

保存前确认公式挂在了正确的分支下。同一段代码在「技术指标」分支与「条件选股」分支下的调用方式不同,放在错的分支里,公式不会报错但不会被预期的入口找到。

八、验证一条公式的三步

通达信公式编写的验证不能停在「测试通过」这一步。

{三步验证}
1. 测试通过:编辑器不报语法错误
2. 取值合理:把关键中间变量输出到图上,量级与预期相符
3. 边界可用:把参数调到最小值与最大值各试一次,确认不会出现除零或空值异常

第三步最容易被跳过。参数调到边界时出现的问题,在默认参数下完全看不到,而这类问题一旦落到实际使用里,表现是图上空白一片却不报错。

相关延伸:公式的语句写法与函数速查,见 公式编写教程 一栏;算出结果与预期不符时的排查顺序,见 报错与卡顿排查 一栏;公式写好后怎么导入与安装,见 公式安装与导入 一栏。

一句话收束:通达信公式编写真正的门槛在结构,不在函数表。四段认清了,剩下的工作是往里填内容与反复验证。

文中目录名、文件后缀与菜单名按通达信 PC 版的常见形态描述;不同版本与券商定制版在目录结构、命名约定与菜单路径上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论操作步骤与文件机制,不构成任何投资建议。

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