☰
通达信公式编写教程完整版:四类公式、函数与选股实战
2026/11/3 14:32:42 网站建设 项目流程

简介:《通达信公式编写教程完整版》面向具备一定开发基础、希望入门通达信公式编写的学习者,围绕公式系统与实战编写展开。内容系统梳理技术指标、条件选股、交易系统、五彩K线四大公式类型,并说明各自在公式管理器中的新建、测试与调用方式;同时结合HIGH、CLOSE、LOW、OPEN、VOL、CROSS、REF、AND等常用函数,讲解K线价格、均线交叉、历史数据引用与条件并列等写法。教程还以均线指标和“股价小于每股净资产”的简单选股公式为例,完整演示参数填写、插入函数、动态翻译、测试公式到保存调用的流程,并附公式函数列表便于检索。资源包共1个doc文档,约1MB,适合按章节阅读与查阅。已有8302人学习,可作为公式编写入门与日常查阅的参考材料。

1. 从一份 .doc 说起:为什么老手还在翻通达信公式教程

身边做量化的朋友有个挺反直觉的习惯:策略原型明明能用 Python 跑通,最后还是要手搓一遍通达信的公式,扔进软件里看信号跟 K 线到底贴不贴。原因不玄学——通达信公式编写教程完整版这种 .doc 老文档,恰恰把「公式类型怎么选、函数怎么调、参数怎么设」这套落地链路讲透了,而这套链路正是把脑子里的想法变成盘中能看的信号的最短路径。这份教程面向有一定开发经验、刚接触通达信公式的从业者,四大公式类型(技术指标、条件选股、交易系统、五彩 K 线)各有独立的编写入口和挂载位置,函数部分从 HIGH、CLOSE、REF 到 CROSS、AND 逐条给用法,最后用均线指标和「股价小于每股净资产」两个例子把流程串起来。如果你正卡在「想法有了但不知道怎么落到软件里」,这份资源省掉的就是反复试错的时间。

2. 四类公式到底怎么选:技术指标、条件选股、交易系统与五彩 K 线的分工

2.1 先分清四类公式的挂载位置和触发方式

很多人刚开始写公式,最容易翻的车不是函数写错,而是公式类型选错。通达信把公式分成四大类,每一类的入口、挂载位置和触发方式都不同,选错了要么找不到公式,要么信号出不来。

公式类型入口路径挂载位置触发方式典型用途
技术指标公式功能 → 专家系统 → 公式管理器 → 技术指标主图叠加或副图键盘输入公式名回车MA、KDJ、MACD 这类分析指标
条件选股公式公式管理器 → 条件选股不挂图,独立运行功能 → 选股器 → 条件选股按形态或财务条件筛股
交易系统公式公式管理器 → 交易系统K 线界面右键 → 交易系统指标叠加后自动标买卖信号成套的买卖规则验证
五彩 K 线公式公式管理器 → 五彩 K 线K 线界面右键 → 五彩 K 线指示叠加后按颜色标特殊形态标记涨停、放量、长下影等形态

这张表看着简单,但实际动手时有两个细节教程里没展开、却天天被问到。第一个是技术指标公式的「画线方法」:选「副图」指标就显示在下方独立区域,选「主图叠加」才会压在 K 线上,MA 之所以能跟 K 线叠在一起,就是因为它是主图指标。第二个是条件选股公式不挂在任何图上,它只在选股器里跑,写完之后不会出现在 K 线界面——新手写完选股公式发现「找不到」,绝大多数是没走选股器入口。

选型的判断逻辑其实就一句话:你想「看」就用技术指标或五彩 K 线,你想「筛」就用条件选股,你想「验证一套买卖规则」就用交易系统。我一般建议刚上手的人先写技术指标,因为它的反馈最快——改一个参数,图上立刻变,能快速建立对函数和参数的直觉。

2.2 建公式前的准备工作:命名、描述与英文字符

进入公式管理器后,左边是树型分类列表,右边是「新建」按钮。点新建之后第一件事不是写代码,是把公式名称、公式描述填好。公式名称建议用有辨识度的短名,比如JX1、XG_NET,因为调出指标时是键盘直接敲名字回车,名字太长反而难用。公式描述写清楚这条公式干什么,后面公式多了不至于翻半天。

这里有个血泪经验:公式编辑器里所有符号——括号、逗号、分号、比较符——必须用英文半角字符。中文全角的逗号,和分号;在编辑器里看着差不多,但测试时会直接报语法错误,而且报错信息不一定指向具体位置,排查起来很磨人。同理,函数名和参数之间用英文逗号分隔,语句结束用英文分号。这个坑几乎是每个新手必踩一次的。

提示:新建公式时先把「公式类型」确认一遍,技术指标公式在技术指标分类下新建,条件选股在条件选股分类下新建,两者不通用。跨类型复制代码可以,但入口必须走对。

2.3 从已有指标「引入」而不是从零手敲

教程里提到一个很实用的功能:在指标公式编辑区点「引入指标公式」,可以在已有指标的基础上改。这个操作的价值在于,很多人第一次写公式不是要发明新指标,而是想改一个现成指标的参数或加一个条件。比如你觉得 MA 不够用,想加一条均线或者改颜色,引入 MA 的源码再改,比对着函数表从头拼要快得多,也不容易漏掉语法细节。

具体操作是:新建技术指标公式,进编辑区后点「引入指标公式」,在弹出的列表里选目标指标,它的完整源码会填进编辑框,然后你在这基础上改参数、加语句。改完一样要点「测试公式」,测试通过再「确定」保存。这一步的顺序不能反——先测试再保存,否则语法错误会被存进去,调出来就是一条废公式。

3. 函数是公式的单词:HIGH/CLOSE/REF/CROSS 的用法与参数机制

3.1 行情函数与时间函数:K 线四价和周期取值的底层约定

教程把函数比作「一种语言的单词」,这个比喻很准确。公式编写本质是用函数把想法翻译成软件能执行的动作,而最基础的单词就是行情函数。一根 K 线有四个价格加两个量:最高价HIGH(简写H)、收盘价CLOSE(简写C)、最低价LOW(简写L)、开盘价OPEN(简写O)、成交量VOL(简写V)、成交额AMOUNT。这些函数返回的都是「当前周期」的值——你用日线就返回当天,用周线就返回本周,这个约定很重要,后面写 REF 的时候会用到。

时间函数DATE和TIME也有类似约定。DATE返回该周期从 1900 年以来的年月日,比如返回1000101表示 2000 年 1 月 1 日;TIME返回该周期的时分秒,有效值范围有限制。这两个函数单独用的场景不多,但在做跨周期引用或者需要按日期过滤的时候会派上用场。

还有一类容易被忽略的是盘口函数,比如ASKPRICE(N)、BIDPRICE(N)、BUYVOL、SELLVOL。教程里明确标注了「本函数仅个股在分笔成交分析周期有效」,意思是这些函数只在分笔成交这个周期下才有意义,切到日线用它们返回的是无效值。我见过有人把分笔函数写进日线选股公式,测试能过但结果完全不对,问题就出在周期不匹配。

3.2 引用与逻辑函数:REF 取历史、CROSS 判交叉、AND/OR 组合条件

REF(X, M)是使用频率最高的函数之一,作用是取 M 个周期前的 X 值。教程给的例子很直观:REF(CLOSE, 5)表示 5 天前的收盘价,REF(VOL, 10)表示 10 天前的成交量。这里的关键是理解 M 的周期单位跟着当前周期走——日线下 M=5 是 5 天前,周线下 M=5 就是 5 周前。写跨周期策略时这个点必须想清楚,否则「5 天前」在周线里变成了「5 周前」,逻辑就偏了。

{取 5 日前的收盘价并与当日收盘价比较,判断是否上涨} REF(CLOSE, 5) < CLOSE

上面这段是纯文本示意,放到编辑器里就是一条可测的表达式。REF(CLOSE, 5)返回 5 周期前的收盘,CLOSE是当前收盘,小于号判断当前价高于 5 周期前,成立返回 1,不成立返回 0。参数说明:第一个参数 X 是要引用的数据序列,第二个参数 M 是回看周期数,M 为正整数。

CROSS(X, Y)判断两条线交叉,CROSS(X, Y)表示 X 向上穿过 Y,反过来CROSS(Y, X)表示 Y 向上穿过 X。教程里特意用两条均线 X 和 Y 举例,因为这是最典型的用法:CROSS(MA(C,5), MA(C,10))就是 5 日均线上穿 10 日均线,也就是常说的金叉。注意 CROSS 只在交叉发生的那一个周期返回 1,不会连续返回,所以拿它做选股条件时,选出来的是「当天发生交叉」的标的,不是「处于交叉状态」的标的——这个区别在写选股公式时经常被搞混。

条件组合用AND和OR。X AND Y表示两个条件同时成立,X OR Y表示任一成立。教程里讲的是 AND,OR 的用法同理。实际写公式时,多个条件用 AND 串起来是最常见的形态,比如「收盘价大于 5 日均线 AND 成交量大于 5 日均量」,两个条件都满足才选出来。

3.3 参数机制:范围与缺省值怎么设才不别扭

参数是公式里最容易被低估的部分。教程里讲 10 日均线时提到,可以把 10 当作参数,好处是改成 5 日的时候不用动代码,用参数精灵就能调。参数需要三样东西:名字、范围、缺省值。名字比如 M,范围规定成 1 到 260,缺省填 10,这样调出公式后可以在 1 到 260 之间任意调节,默认就是 10 日均线。

参数范围的上限不是随便填的。260 这个数对应一年大约 260 个交易日,均线类参数填到 260 基本覆盖了中长周期需求;如果参数是给成交量用的,上限可以再放宽,但要看软件的实际支持。缺省值填你最常用的那个数,因为每次调出公式默认就用它,填一个你平时不用的值,每次都得手动改,很别扭。

参数精灵的意义在于把「改代码」变成了「拖滑块」。同一套逻辑,参数化之后可以快速试 5 日、10 日、20 日、60 日哪个效果更贴合你的观察,而不用每改一次就复制一份新公式。我的习惯是,只要是跟周期相关的数字,一律做成参数,哪怕当下只用固定值——后面想调的时候会感谢自己。

4. 均线指标从零复现:新建、插入函数、测试与调出的完整链路

4.1 新建技术指标公式并插入 MA 函数

这一节把教程 3.1 的均线指标流程完整走一遍,每一步落到操作上。进入公式管理器(功能 → 专家系统 → 公式管理器),在左边树型列表里选「技术指标公式」下面的「均线型」,点右边「新建」,进入编辑区。

先填公式名称和公式描述。名称用JX1,描述写「10 日简单移动平均线」。然后点「插入函数」,在函数列表里找到「简单移动平均」,选中后对话框下方会列出该函数的用法说明——这一步别跳过,用法说明里写清了参数顺序,照着填不容易错。点「确定」,MA 函数会出现在编辑框里。

接下来填 MA 的两个参数。第一个参数是数据序列,填收盘价,公式里用C表示;第二个参数是均线周期,直接填数字,比如 10;语句末尾用英文分号结尾。

{10 日简单移动平均线,主图叠加} MA(C, 10);

这段代码的含义:MA是简单移动平均函数,第一个参数C是收盘价序列,第二个参数10是周期数,整句返回收盘价的 10 日简单移动平均。录入之后,编辑器下方的「动态翻译」区会自动显示「收盘价的 10 日简单移动平均」——这是个很好的自检手段,翻译出来的文字跟你想要的一致,说明参数填对了;翻译出来不对劲,多半是参数顺序或数据序列填错了。

4.2 画线方法、坐标线与额外 Y 轴分界的设置

代码写完只是第一步,显示设置决定了这条指标挂上去之后好不好看、好不好读。编辑区里有几个关键选项:

公式类型:确认选的是技术指标公式,设定后查看公式时会在对应分类下列出来。

画线方法:均线要压在 K 线上看,所以选「主图叠加」。如果选「副图」,指标会跑到下方独立区域,跟 K 线分开显示,看均线跟价格的关系就不直观了。教程里也提到 MA 是主图指标,就是这个原因。另外还有「在副图上叠加 K 线」「美国线」「收盘站线」等选项,按需选。

坐标线位置:默认是「自动」,系统根据指标值范围自动定区间。教程例子里显示的是 0.60、0.40、0.2、0、-0.2 这类刻度。均线指标一般用自动就够了,因为价格量级本身会决定刻度;如果是振荡类指标(比如在 0 到 100 之间波动),手动设坐标间隔更有意义,用分号分隔多个位置,手动设置后默认刻度会取消。

额外 Y 轴分界:在指标上加白色横线作参考,比如你想标出某个关键价位,可以在这里设。均线指标用得不多,但做支撑压力参考线时有用。

设置完点「测试公式」,显示「测试通过」再点「确定」保存。测试不通过的话,先检查符号是不是全角、括号是否配对、语句末尾有没有分号——这三项覆盖了大部分测试失败的情况。

4.3 键盘调出与参数精灵的联动验证

保存之后,回到 K 线界面,键盘直接输入公式名字JX1回车,指标就调出来了。调出后如果参数做成了参数变量(比如把 10 换成了参数 M),右键指标可以进参数精灵调整 M 的值,图上会实时变化。这就是参数化的价值:同一个公式,改参数就能在 5 日、10 日、20 日之间切换,不用维护多份代码。

验证环节我一般做两件事。第一,把参数调到极端值看显示是否正常,比如 M 设成 1 和设成 250,看主图叠加有没有错位、动态翻译是否跟着变。第二,跟软件自带的 MA 指标对比,同一周期下两条线应该完全重合——如果对不上,说明数据序列或周期参数填错了。这个对比方法很土但很有效,尤其是刚学的时候,拿自带指标当基准能快速定位问题。

5. 条件选股公式实战:用「股价小于每股净资产」跑通筛选链路

5.1 条件选股公式的建立入口与函数选取

条件选股公式跟技术指标公式最大的区别是它不挂图,只用于筛选。教程 3.2 的例子是选出「股价小于每股净资产」的个股,这个例子好就好在它同时用到了行情函数和财务函数,把两类数据的引用方式都串了一遍。

入口:公式管理器 → 左边树型列表选「条件选股公式」下面的「其它类型」→ 点「新建」。填公式名称(比如XG_NET)和公式描述(「股价小于每股净资产」)。然后点「插入函数」,先选「收盘价」,确定后C进入编辑区;录入空格,输入小于号<;再点「插入函数」,在财务函数分类里找到「每股净资产」,放到小于号后面;末尾英文分号结尾。

{条件选股:收盘价小于每股净资产} C < FINANCE(34);

代码逻辑:C是当前收盘价,FINANCE(34)是每股净资产(不同版本财务函数编号可能不同,以你软件里插入函数时显示的编号为准,这里 34 是示例编号,实际以函数列表为准),小于号判断股价低于每股净资产,成立返回 1,不成立返回 0。参数说明:FINANCE是财务数据函数,括号里的编号对应具体财务指标,插入函数时对话框下方会显示该编号对应的指标名称,务必核对。

注意:财务函数的编号在不同软件版本之间可能有差异,写公式时不要凭记忆填编号,一定走「插入函数」让软件自己带出来。编号填错不会报语法错误,但选出来的结果完全是另一回事。

5.2 从公式到选股器:条件选股的调用与结果验证

公式测试通过、保存之后,它不会出现在 K 线界面,要走选股器入口:功能 → 选股器 → 条件选股。在条件选股界面里找到刚才建的公式(在「其它类型」分类下),选中,设置选股范围(比如全部 A 股或某个板块),点执行选股,符合「收盘价小于每股净资产」的个股会被列出来。

验证结果时,随手挑几只选出来的股票,打开它们的财务数据页,核对每股净资产和当前股价,确认筛选逻辑没跑偏。这一步很多人省掉,结果公式写错了方向(比如把大于写成了小于)也不知道,拿着反向结果去用。我一般还会把条件反过来再跑一次(把小于改成大于),两次结果加起来应该接近全市场数量(排除等于的情况),用这个交叉验证判断条件是否生效。

条件选股公式还有一个实用场景是组合条件。单个条件筛出来的标的可能太多,用AND串第二个条件就能收窄,比如「股价小于每股净资产 AND 收盘价大于 5 日均线」,把破净且站上短期均线的标的筛出来。条件越多筛得越细,但也要注意条件太苛刻可能一只都选不出来——这时候先去掉一个条件看结果,逐步定位是哪个条件把池子清空了。

5.3 交易系统与五彩 K 线的挂载验证

交易系统公式和五彩 K 线公式的编写入口跟前面类似,区别在挂载方式。交易系统公式写好后,在 K 线界面点鼠标右键,选「交易系统指标」,挑一个交易系统确定,它就会叠加到 K 线上并自动标出买卖信号。五彩 K 线则是右键选「五彩 K 线指示」,选一个五彩 K 线确定,特殊 K 线形态会按颜色标出来。

这两类公式的验证重点是「挂载后信号是否符合预期」。交易系统公式给的是买卖点,验证时看信号出现的位置是不是你真想交易的位置,有没有未来函数导致的「事后完美」——如果一条交易系统公式在历史 K 线上信号漂亮得不真实,大概率用了引用未来数据的写法,这类公式实盘没法用。五彩 K 线的验证更直观,看颜色标记的 K 线是不是你想标记的形态,比如长下影、放量阳线,标错了就是条件写偏了。

6. 避坑与排查:公式测试通过但结果不对的五个真相

6.1 现象:测试通过,但调出后指标跟自带 MA 不重合

原因:数据序列或周期参数填错,比如第一个参数填了O(开盘价)而不是C(收盘价),或者周期数填成了 5 而你以为填的是 10。测试只检查语法,不检查逻辑,所以参数填错照样「测试通过」。

解决:调出公式后跟自带 MA 对比同一周期,两条线必须完全重合。不重合就回编辑区看动态翻译,翻译文字跟你想要的一致才是对的。养成「先对比自带指标再使用」的习惯。

6.2 现象:公式保存了,但键盘输入名字调不出来

原因:公式类型选错,或者公式名称跟已有公式重名。技术指标公式必须在技术指标分类下新建,建到条件选股分类下就不会出现在 K 线调出列表里。重名的话新公式可能覆盖不掉旧公式,或者调出来的是旧的。

解决:回公式管理器确认公式挂在哪个分类下,类型不对就删掉重建。名称冲突就换一个名字,建之前先在列表里搜一下有没有同名的。

6.3 现象:条件选股跑出来一堆无关标的,或者一只都没有

原因:条件方向写反(大于写成小于)、财务函数编号填错、或者多个条件用 AND 串得太死。财务函数编号填错是最隐蔽的,语法没错,但引用的数据是另一个指标,结果自然不对。

解决:先把条件简化成单个,跑一次看结果是否符合预期;再逐个加条件,每加一个跑一次,定位是哪个条件出的问题。财务函数一律走「插入函数」带出编号,不手填。方向问题就用反向条件交叉验证,两次结果对不上就是条件写反了。

6.4 现象:分笔函数写进日线公式,测试通过但选股结果异常

原因:ASKPRICE、BIDPRICE、BUYVOL、SELLVOL这类盘口函数只在分笔成交周期有效,日线周期下返回无效值。测试不报错,但参与计算的是无效数据。

解决:检查公式里有没有盘口函数,有的话确认使用场景是不是分笔周期。日线选股公式里去掉盘口函数,或者改用日线级别可用的量价函数替代。

6.5 现象:交易系统公式历史信号漂亮,实盘却对不上

原因:公式里引用了未来数据,比如用了当前周期之后才能确定的值,导致历史回看时信号「提前」出现,看起来完美,实盘时信号要等数据确定才出,时间点对不上。

解决:逐句检查有没有引用未来周期的写法,尤其是 REF 的负数参数、跨周期引用未来数据这类。验证方法是在历史 K 线上把图表往后翻,看信号是不是只在数据确定之后才出现——如果信号在当根 K 线还没走完时就标出来了,大概率有未来函数。

7. 参数化改造与函数清单速查:把一条公式变成一套工具

写到这一步,一条能用的均线指标和一条条件选股公式已经跑通了。但真正让这套东西变成「工具」而不是「一次性代码」的,是参数化改造。我拿均线指标举例,把固定的 10 改成参数 M,范围设 1 到 260,缺省 10,这样一条公式覆盖了从超短到中长所有周期,调参数精灵就能切换。同样的思路用到条件选股上,把「小于每股净资产」的阈值做成参数,或者把均线周期做成参数,一条公式能派生出多个变体,不用维护一堆重名文件。

函数这块,教程附录给了一份清单,实际用的时候不需要背,但要知道去哪找。行情函数(HIGH、LOW、CLOSE、OPEN、VOL、AMOUNT)是地基,引用函数(REF、CROSS)和逻辑函数(AND、OR)是组合手段,财务函数走插入函数带出编号,盘口函数注意周期限制。我一般会在手边留一份自己常用的函数速查表,只记高频的十几个,剩下的用到再查——函数表是查的,不是背的。

函数类别高频函数关键约定
行情函数HIGH/H、LOW/L、CLOSE/C、OPEN/O、VOL/V返回当前周期值,周期随图表切换
引用函数REF(X,M)、CROSS(X,Y)M 的单位跟当前周期走;CROSS 只在交叉当周期返回 1
逻辑函数AND、OR多条件组合,AND 要求同时成立
财务函数FINANCE(N)编号以插入函数显示为准,不凭记忆填
时间函数DATE、TIMEDATE 返回 1900 以来年月日,TIME 返回时分秒
盘口函数ASKPRICE、BIDPRICE、BUYVOL、SELLVOL仅分笔成交周期有效,日线慎用

最后说一个我自己的教训。早些年写条件选股公式,测试通过就直接拿去跑,结果筛出来的标的方向完全是反的——大于写成了小于,语法没错,测试也过,但逻辑反了。从那以后我每次写完选股公式,都强制走一遍「反向条件交叉验证」:把条件反过来再跑一次,两次结果的数量加起来接近全市场(排除等于),才认为条件写对了。这个习惯看起来笨,但帮我挡掉了好几次方向性错误。另外就是参数化,只要是周期、阈值这类数字,一律做成参数,哪怕当下只用固定值——后面想调的时候,你会庆幸当初多花了那两分钟。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询