通达信的公式编辑器是一个带公式名称、参数表和正文框的窗口,正文框左侧是分支列表,按公式类型分成技术指标、条件选股、五彩K线、交易系统几个入口。一份完整的通达信指标公式编辑教程,要讲清楚的就是这个窗口里的三件事:变量怎么定义、参数表怎么用、输出怎么写。

本文按入口、变量、参数、输出、示例、验证的顺序展开,示例公式可以直接粘贴进编辑器运行。文中的菜单层级与字段名以通达信金融终端个人版为准,券商定制版的入口位置可能有差异。全文只讨论公式语法与编辑操作,不涉及任何标的的判断。

一、编辑器里能写哪几类公式

公式管理器里的分支按用途划分,不同分支写出来的公式,在界面上的挂载位置与调用方式都不一样。

公式类型 正文里能用的输出形式 装到哪
技术指标公式 数值输出,可画线、画柱、写字 主图或副图
条件选股公式 只有一个成立与不成立的输出 条件选股器、条件预警
五彩K线公式 按条件给 K 线着色 主图
交易系统公式 成对的开平仓条件 系统测试与信号显示

新建时必须先选对分支。把一份副图数值公式放进条件选股分支,编译会通过,但选股结果会为空,因为条件选股只看最后一句话的真假。

二、从菜单到公式编辑窗口

入口是公式管理器,个人版的快捷键是 Ctrl+F,也可以从「功能」菜单下的公式系统进入。窗口左侧是树状分支,展开到具体类型后能看到已有公式列表。

  1. 选中要放公式的类型分支,点「新建」,打开公式编辑窗口。
  2. 填入公式名称与公式描述。名称用于在公式列表里显示,描述会出现在公式管理器的说明区。
  3. 切到参数表,按行填参数名、最小值、最大值、缺省值;不需要参数的公式可留空。
  4. 在正文框里写语句。编写过程中可以随时点「测试公式」,编译不通过时会在下方给出提示原文。
  5. 点「确定」保存。保存后公式进入所属分支,可以在图上调用。
公式名称建议带上用途前缀。同一个分支里的公式会按名称排序,名称里含用途词的条目在列表里更容易被找到,后续维护时不必逐个点开确认。

三、变量与赋值:冒号与等号的区别

通达信指标公式编辑教程里第一个容易混淆的点,是 : 与 := 的分工。两者都定义变量,区别在于定义出来的量会不会被当成输出画到图上。

{ 冒号:定义为输出,会出现在图上 }
快线:EMA(C,N);

{ 冒号加等号:定义为中间量,不出现 }
慢线:=EMA(C,M);

中间量用 :=,输出用 :。副图公式的输出数量有上限,中间过程量写成输出会把限额占满,导致真正要看的线反而画不出来。写复杂公式时,把计算步骤都做成中间量、只在最后输出结果,是编辑器里通行的一种组织方式。

变量名支持中文,长度也够用。命名上有一个实际考虑:中文名在阅读时省事,但在跨版本或跨平台搬运源码时,编码差异可能让中文名变成乱码。如果这份公式准备发给别人,用有意义的英文简写更稳。

四、参数表:声明、默认值与调整范围

参数表是编辑器里一个独立页签,每一行填四项内容。填好之后,参数名就可以在正文里直接当数值使用,不需要在源码中重新赋值。

字段 含义 不填或填错会怎样
参数名 正文里引用的标识符 正文引用未声明的名字,编译报变量未定义
最小值 该参数允许的下限 留空时上限下限由软件给默认范围
最大值 该参数允许的上限 设定过窄会让使用者无法调到需要的取值
缺省值 首次调用时使用的数值 与正文里的取值预期不一致时,画出来的线不对

参数表的实际价值在于把可调项集中到一处。正文里出现裸数字的地方越多,使用者想调整时越需要在源码里找。把参与判断的阈值都放进参数表,公式在公式管理器里就变成一份可以按数值调整的条目。

参数的最小值与最大值不是装饰。设定的范围如果窄于正文语句实际需要的取值,使用者按范围上限调整后,公式的计算结果会与预期不符,而编译器不会给出任何提示。

五、输出语句的规则

输出语句决定了公式画到图上是什么形态。同一份计算结果,配上不同的输出写法,呈现出的效果差别明显。

写法 效果 常见用途
名称:表达式; 画出一条曲线 均线类、摆动类数值
STICKLINE(条件,上,下,宽,空); 按条件画柱体 区间强调、量能对比
DRAWTEXT(条件,位置,文字); 在指定位置写字 状态标注
DRAWICON(条件,位置,编号); 在指定位置画图标 信号提示
COLORXXX 后缀 改变线条颜色 区分正负、区分周期

画线类语句与数值类语句可以混用。需要注意的是绘图语句的位置参数:它取的是图像坐标,写错时不会报编译错误,只会让图形出现在不应该出现的位置。调试这类问题的方法是把位置参数先换成一个常量,确认基准之后再写回表达式。

六、一份可运行示例的逐行说明

通达信指标公式编辑教程如果不落到一份完整的可运行公式上,读者很难判断自己写的对不对。下面这份示例在参数表里声明两个参数,正文只输出两条线和一个状态标注。

{ 参数表里声明:N 缺省 5 范围 2~60;M 缺省 20 范围 5~250 }

{ 中间量用 := 定义,不进图上输出 }
快线:=EMA(C,N);
慢线:=EMA(C,M);
差:快线-慢线;

{ 交叉判断,写成中间量,供标注语句引用 }
上穿:=差>0 AND REF(差,1)<=0;
下穿:=差<0 AND REF(差,1)>=0;

{ 输出语句 }
零轴:0;

{ 在最后一根 K 线的位置写字,标注当前状态 }
DRAWTEXT(ISLASTBAR AND 上穿,差,'上穿');
DRAWTEXT(ISLASTBAR AND 下穿,差,'下穿');

逐行看这份公式,能对上前面几个部分讲的内容。前两句是中间量,用 : 带等号定义,不会出现在图上;第三句是数值输出,副图上画一条差值线;零轴是一句常量输出,用来做视觉参考;最后两句是绘图语句,用 ISLASTBAR 把标注限制在当前这一根 K 线上。

这份公式里所有阈值都通过参数表提供,正文中没有裸数字参与判断。把 N 与 M 改成别的取值时,不需要进编辑器改源码。

七、怎么确认它编译通过并画出来了

保存之后的验证分三步,顺序不要颠倒。

  1. 测语法。在公式编辑窗口里点「测试公式」。测试只回答语法能否通过,它不检查逻辑是否符合预期。
  2. 看挂载。回到行情界面,在副图区域右键选择公式,找到刚保存的名称。图上出现曲线,说明输出语句生效。
  3. 核数值。把光标移到某根 K 线上,看公式输出的数值与心算结果是否一致。
现象 先查哪里
测试公式提示变量未定义 参数表里是否声明了这个名字,正文里的拼写是否一致
测试通过但副图是空的 正文里是否只有中间量、没有一条 : 输出
曲线画在副图之外看不见 输出数值与副图坐标范围的量级是否差得远
标注文字没出现 绘图条件是否成立,位置参数是否落在图内

通达信指标公式编辑教程到这里的三件事都齐了:: 与 := 分开管输出与中间量,参数表把可调项集中声明,输出语句决定图形形态。剩下的部分是在这个骨架上换函数与表达式。写完之后先用「测试公式」过一遍语法,再回图上看挂载结果,比在编辑器里反复通读要有效。

本文只讲公式语法与编辑操作,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式编写教程 里讲函数与语句结构的条目、公式安装与导入 里讲文件放哪与目录结构的条目、公式报错与卡顿排查 里讲编译提示原文的条目,可对照查看。

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