简介《通达信公式编写教程完整版》是一份面向有基础开发经验、希望入门通达信公式编写的Word教程围绕技术指标、条件选股、交易系统与五彩K线四大公式类型展开帮助读者理解公式管理器的调用逻辑与编写流程。压缩包仅含1个doc文件大小约1MB便于集中查阅和本地保存。教程从公式函数的使用讲起结合HIGH、CLOSE、VOL、CROSS、REF、AND等常用函数说明K线价格、均线交叉、历史数据引用与条件并列的写法并给出均线指标、简单条件选股等编写实例附录还整理行情函数列表方便按需检索。已有8302人学习适合需要系统掌握通达信公式编写、对照实例练习并补齐函数基础的读者使用。1. 从一次“测试不通过”说起多数人第一次打开公式管理器是因为想改一条别人给的指标把 10 日均线改成 20 日或者把 MACD 的参数调宽一点。粘进去、点测试、弹出一行“行 1: 语法错误”然后就把窗口关了。这份通达信公式教程完整版的价值恰恰不在那几段现成源码上——网上抄得到的 MA、KDJ 遍地都是它有价值的是把“公式类型 → 函数语义 → 参数设置 → 测试通过 → 调用生效”这条链路讲通了。文档按公式系统四大类展开技术指标、条件选股、交易系统、五彩 K 线后面接 HIGH/CLOSE/REF/CROSS/AND 这批函数的用法和两个完整的编写例子。适合两类人想自己动手改指标参数、又不想被语法卡住的老手以及需要批量产出选股模板的从业者。它不解决“怎么预测行情”只解决“怎么让编辑器认你的表达式”。2. 四类公式先分清选错入口函数写得再对也调不出来新手最容易犯的错是拿一段技术指标的代码去新建条件选股公式测试能过选股却选不出来。根源不在代码在入口。通达信的公式管理器把公式分成四个互不相通的口子每一类有自己的新建入口、自己的输出约定、自己能被谁调用。先在脑子里把这四条路分清楚后面写函数才不会白费功夫。2.1 技术指标公式与主图、副图的绑定关系技术指标公式是四类里最“自由”的一类因为它允许有多个输出值也就是公式里可以出现多条带冒号的赋值行。MA、KDJ、MACD 都属于这一类它们的共同特征是在技术分析界面上以线条形态呈现你可以调出它、叠加它、改它的参数但它本身不产生任何买卖动作。新建路径是“功能 → 专家系统 → 公式管理器”在左侧树里选中“技术指标公式”下的某个分类比如均线型点右侧“新建”进入编辑区。编辑区里有一个容易被跳过但决定显示效果的选项——画线方法。选“副图”指标画在 K 线下方独立的指标区选“主图叠加”指标直接压在 K 线上MA 就是典型的主图指标。这个选项一旦选错公式本身没错但你按键盘输入公式名回车之后会发现屏幕上什么都没多出来因为指标被画到了你当前没看的那块区域。同一个编辑区里还有三个显示参数坐标线位置、额外 Y 轴分界、以及公式类型归属。坐标线位置默认是“自动”系统按指标值的实际范围自己算刻度如果你手填比如写成0;20;40;60;80;100用分号隔开默认的自动刻度就不再生效指标图会严格按你给的这几条横线来画。提示主图叠加类指标的返回值最好控制在价格量级附近。如果把一个取值范围 0 到 100 的振荡指标设成主图叠加它会和 K 线挤在同一个坐标里K 线直接被压成一条直线看起来像“公式没生效”。技术指标公式适合承载“观察类”的东西均线系统、通道、强弱对比、量价背离。它的定位是让你看懂当前状态不负责筛选也不负责报警。2.2 条件选股与交易系统从“看”到“筛”再到“信号”条件选股公式的输出约定和技术指标完全不一样。它只认一个布尔结果——表达式成立返回真不成立返回假系统拿这个真假值去遍历股票池。所以条件选股公式里不能有多个带冒号的输出行写了也会被当成语法问题或者只取最后一行这是新手翻车率最高的一处。新建时要先在公式管理器左侧选中“条件选股公式”下面的“其它类型”再点“新建”。写完之后不能直接生效得走“功能 → 选股器 → 条件选股”在条件选股界面里把这个公式加进选股条件列表设置好选股范围再执行。这一步很多人漏掉公式写完了以为自动就选其实它只是躺在公式库里。交易系统公式的定位又不一样。它输出的是明确的买卖信号写好后叠加到 K 线上图表上会直接标出箭头或者文字。调用方式是在 K 线界面点鼠标右键选“交易系统指标”挑一个确定信号就压上去了。交易系统公式常见的写法是用ENTERLONG、EXITLONG这类信号函数把开平仓条件翻译成可视信号。三类公式的差别可以压成一张表类型新建入口输出约定调用方式典型误用技术指标公式管理器 → 技术指标公式可多输出带冒号赋值键盘输入公式名回车画线方法选错看不见条件选股公式管理器 → 条件选股公式单一布尔结果功能 → 选股器 → 条件选股写了多行输出只取最后一行交易系统公式管理器 → 交易系统公式买卖信号K 线右键 → 交易系统指标信号函数写反空头当多头五彩 K 线公式管理器 → 五彩 K 线公式形态判定条件K 线右键 → 五彩 K 线指示条件过宽整屏都是同一种颜色选型的判断标准很直接你想“看”写技术指标你想“筛出一批”写条件选股你想“在图上标出该买该卖”写交易系统你想“让某种 K 线形态自己跳出来”写五彩 K 线。四种需求混着来就会出现公式能存不能用的怪现象。2.3 五彩 K 线公式形态可视化的最小闭环五彩 K 线是四类里最容易被低估的一类。它的作用是把特定的 K 线形态用不同颜色标出来——比如长下影、阳包阴、放量突破。写好的公式在 K 线界面右键选“五彩 K 线指示”确定之后就叠加上去了。它的技术门槛不高难在条件要收得住。五彩 K 线是逐根 K 线判定条件写宽了比如只写CLOSEOPEN那屏幕上几乎所有阳线都会变色等于没标。合格的五彩 K 线条件通常要叠加两层形态特征加量能或位置约束。例如涨幅大于 5% 同时成交量放大到 5 日均量的 1.5 倍以上这样才筛得出“值得看一眼”的那几根。五彩 K 线公式和条件选股公式在语法上很接近都是布尔表达式区别在于前者由 K 线图实时逐根渲染后者由选股器批量遍历。所以同一套逻辑在五彩 K 线里能直观看到标注效果在条件选股里能看到名单——调试形态条件时先做成五彩 K 线看图形对不对再平移成选股公式这是比较省时间的做法。3. 函数层拆解把 K 线四价、CROSS、REF、AND 写成能跑的表达式函数是这套公式体系里唯一的“词汇表”。你没法用自然语言告诉编辑器“找五天前收盘价高于今天开盘价的股票”只能翻译成REF(CLOSE,5)OPEN。这一章把最常打交道的几组函数拆开行情函数管取数REF 管回溯CROSS 管交叉判定AND 管条件并列参数管可变。3.1 行情函数与周期语义HIGH/CLOSE/LOW/OPEN/VOL 到底取的是哪一根一根 K 线由四个价格加成交量、成交额构成对应的函数是HIGH或简写H、CLOSEC、LOWL、OPENO、VOLV、AMOUNT。这组函数没有参数看起来最简单但它有一个隐藏维度——周期。CLOSE取的不是“今天的收盘价”而是“当前周期的收盘价”。你在日线图上看它是当天收盘切到 60 分钟图它就是那根 60 分钟 K 线的收盘切到周线就是本周收盘。同一段代码周期一变含义全变。{行情函数取值演示把当前周期的四价和量打出来} 最高:HIGH; 最低:LOW; 开盘:OPEN; 收盘:CLOSE; 量:VOL;上面这段是把四个价格分别赋给中间变量实际写指标时通常直接用简写H、L、O、C、V可读性和书写成本都更好。赋值行用:不输出到图上和:输出到图上区分这一点在后面写多输出指标时会反复用到。行情函数里还有一批只在特定周期下有效的成员比如ASKPRICE(N)、BIDVOL(N)这类委买委卖数据只在个股的分笔成交周期下有效日线周期调用会返回空值。ADVANCE、DECLINE这类涨跌家数函数则只对大盘指数有效。如果一段公式在个股上跑得好好的换到大盘上就出问题八成是踩了这类函数的适用范围。3.2 REF 与参数化把 10 日均线做成可调的那条线REF(X,M)是回溯函数表示取 M 个周期之前的 X 值。REF(CLOSE,5)是 5 天前的收盘价REF(VOL,10)是 10 天前的成交量。注意这里的 M 是“周期数”而不是“天数”日线周期下两者等价分钟周期下就不是了。真正让 REF 好用起来的是参数。教程里举的例子很实在写 10 日均线时如果把 10 写死在公式里想改成 5 日就得进编辑器改代码、再测试、再保存来回折腾。把 10 抽成参数情况就不一样了。参数需要三样东西名字、范围、缺省值。名字一般用N、M这类单字母范围比如 1 到 260缺省值填你最常用的那个数比如 10。定义好之后公式体里直接引用参数名界面上通过参数调整就能改不用碰代码。{参数化均线N 为参数缺省 10范围 1-260} MA_N:MA(CLOSE,N);参数化之后N在参数表里改一次图上立刻重算公式源码一个字都不用动。这也是后面做指标库的基础——同一套源码靠参数区分出短中长三条线。3.3 CROSS 与 AND交叉判定和条件并列的写法CROSS(X,Y)表示 X 向上穿越 Y注意方向是单向的。CROSS(MA(C,5),MA(C,10))是 5 日线上穿 10 日线也就是常说的金叉。反过来写CROSS(MA(C,10),MA(C,5))才是死叉。这两个写反了整个交易系统公式的信号方向就是反的而且测试照样通过编辑器不会提醒你——这是最隐蔽的一类错误。{5 日线上穿 10 日线同时成交量放大到 5 日均量的 1.5 倍} 金叉:CROSS(MA(CLOSE,5),MA(CLOSE,10)); 放量:VOLMA(VOL,5)*1.5; 选股条件:金叉 AND 放量;AND用来把两个条件并列起来要求同时成立。对应的还有OR表示任一成立。多个条件串联时AND的优先级高于OR写完最好用括号把分组明确标出来别指望编辑器按你脑子里的顺序算。注意CROSS判的是“穿越那一个周期”只在交叉发生的那一根 K 线上返回真。写选股公式时如果发现选出来的股票很少先确认选股日那天是不是刚好发生了交叉——大多数时候不是公式错了是那天压根没交叉。3.4 参数精灵与缺省值一次改参数不用重写源码参数精灵是参数化公式的界面层。定义好参数之后调出公式时可以通过参数精灵给参数临时赋值比如把N从 10 改成 20图上立刻变成 20 日均线源码保持原样。这个机制的价值在于一条公式可以覆盖多个使用场景不用为每个周期都存一份源码。设置参数的几个细节值得记一下。范围要写成最小值和最大值1 到 260 是常用区间太宽没意义太窄限制了调整空间。缺省值填你最常看的那个周期这样每次调出公式默认就是熟悉的参数不用每次手动改。参数名尽量短且不重复N、M、P这种够用写太长反而在公式体里累赘。参数化的边界也要清楚参数只影响“数值”不影响“结构”。你能把 10 日均线改成 20 日均线但没法靠参数把单均线变成双均线那属于源码层面的改动参数解决不了。4. 两个能跑通的公式10 日均线指标与“股价低于每股净资产”选股前面讲的是零散的语法点这一章把它们拼成两个完整可复现的案例。第一个是技术指标走通“新建 → 写码 → 测试 → 调出”的整条链第二个是条件选股走通“新建 → 写条件 → 测试 → 选股器调用”的整条链。两个案例都按教程里的原始路径操作不跳步。4.1 10 日均线指标从新建到键盘调出第一步进公式管理器。菜单“功能 → 专家系统 → 公式管理器”左侧树型列表里找到“技术指标公式”下的“均线型”分类点右侧“新建”进入指标公式编辑区。第二步填基础信息。公式名称填一个短、好记、不重名的比如JX1公式描述写清楚它是什么比如“10 日简单移动平均”。名称这一栏要注意调出公式时是键盘直接敲名字回车所以别起太长或者带特殊字符的名字。第三步写公式体。不想手打函数的话点“插入函数”在函数列表里选“简单移动平均”对话框下方会显示这个函数的用法说明点确定函数骨架自动落进编辑区你只需要补两个参数。{10 日简单移动平均主图叠加} MA10:MA(CLOSE,10);MA(X,N)的第一个参数是取谁的均值这里填CLOSE简写C第二个参数是周期长度这里填 10。行尾用英文分号结尾这点必须强调——中文全角分号是导致“语法错误”的头号原因肉眼几乎看不出区别编辑器也不告诉你哪错了。第四步看动态翻译。编辑区下方有一块区域会自动把你的公式翻译成中文“收盘价的 10 日简单移动平均”。这句话出现基本说明语法没问题了如果这块是空的或者报错先回去查标点和括号。第五步设画线方法。均线是压在 K 线上的画线方法选“主图叠加”。选成副图的话指标会跑到下方独立区域虽然也能画出来但和 K 线的对应关系就不直观了。第六步点“测试公式”。显示“测试通过”之后点“确定”保存。回到行情界面键盘输入JX1回车10 日均线就叠在 K 线上了。{参数化版本N 缺省 10范围 1-260主图叠加} MA_N:MA(CLOSE,N);参数化版本在参数表里加一行参数名N最小值 1最大值 260缺省 10。这样以后想切到 20 日线调参数就行不用进编辑器。4.2 条件选股收盘价低于每股净资产这个案例的要求很明确选出股价小于每股净资产的个股。逻辑只有一句比较难点在于找到“每股净资产”对应的财务函数。第一步进公式管理器这次左侧树选“条件选股公式”下的“其它类型”点“新建”。注意入口和上一个是不同的选错了分类公式存进去也调不出来。第二步填公式名称和描述名称同样要短。第三步写条件。点“插入函数”选“收盘价”函数落进编辑区敲一个空格输入小于号再点“插入函数”在财务函数分类里找到每股净资产插入行尾英文分号。{条件选股收盘价低于每股净资产} CLOSEFINANCE(34);CLOSE是当期收盘价FINANCE(34)是每股净资产这个财务字段的编号两者比较得到一个布尔值成立即被选中。整条公式只有一行输出符合条件选股公式的约定。第四步测试公式通过后保存。第五步调用。菜单“功能 → 选股器 → 条件选股”在条件列表里找到刚建的公式加进去设定选股范围执行选股。这一步不做公式写得再对也不会自动跑。{加一层流动性过滤避免选出长期停牌或成交清淡的标的} CLOSEFINANCE(34) AND VOLMA(VOL,20)*0.5;上面这版是在原逻辑上加了个成交量下限。纯财务比较容易选出流动性很差的票加一层量能约束是常见做法。参数0.5可以按自己的股票池调池子小就放宽池子大就收紧。4.3 测试公式与动态翻译怎么读编辑器给的反馈编辑器的反馈其实就两个地方测试结果和动态翻译区。这两个信号读懂了调试效率能提升一大截。测试通过只说明语法层面没问题——括号配平、函数名存在、参数个数对得上、标点是英文的。它不保证逻辑正确。CROSS写反方向、AND该用OR的地方写错、条件整体取反这些都能测试通过。所以“测试通过”只是第一关。动态翻译区是更细的一层校验。它会把你写的表达式翻译成中文句子你对着这句话读一遍看是不是你想要的。比如写MA(CLOSE,10)翻译出来是“收盘价的 10 日简单移动平均”对得上就说明取数逻辑没错如果翻译出来是别的东西那八成是参数位置填错了比如把周期和价格写反。测试不通过时报错信息通常会带行号。先查那一行的标点再查括号是否成对最后查函数名拼写。中文输入法下打出的逗号、分号、括号是三个高频杀手肉眼几乎分辨不出来重打一遍比盯着看快。5. 避坑与排查公式能存不能跑、能跑不对味的五个现场这一章是我自己踩过、也见别人反复踩的五类问题。每一条按“现象 → 原因 → 解决”写症状对上了就照方抓药不用从头怀疑人生。5.1 现象点测试就报“语法错误”行号指向第一行原因基本锁定在标点。中文输入法下打出的分号、逗号、括号在编辑器里显示得和英文符号极其相似但解析器不认。另一类是括号不配平函数嵌套多层时少一个右括号报错行号会飘到第一行。解决方式是养成习惯写公式前先把输入法切到英文或者写完用查找替换把全角符号批量换掉。嵌套函数从内往外一层层写写完立刻数一遍左右括号数量。5.2 现象公式测试通过但选出来的股票和预期完全不搭先怀疑条件方向。CROSS(X,Y)是 X 上穿 Y很多人写死叉的时候直接照抄这一行忘了换参数顺序结果选出来的全是金叉那批。其次是AND和OR用反本该“满足任一”的地方写了AND条件收得过紧选出来只有个位数。再往下查周期。公式在日线图上验证过选股时如果选股器的周期设置和你验证时不一致结果会完全不同。同一个REF(CLOSE,5)日线是 5 天前周线是 5 周前。解决把条件拆成单条一条条单独选看哪一条的结果不对。拆的过程中顺便确认选股器的周期设置和验证时一致。5.3 现象指标在主图上画出来了但和 K 线挤在一起看不清这是画线方法和取值范围不匹配。振荡类指标取值 0 到 100设成“主图叠加”会和价格线共用一个纵轴价格几百块、指标几十K 线直接被压扁。解决回到公式管理器把画线方法改成“副图”。反过来价格量级的指标均线、通道设成副图也不对会跑到下方独立区域失去和 K 线的对照关系。5.4 现象条件选股公式里写了三段逻辑只有最后一段生效原因很明确条件选股公式只接受单一输出。你写了三条带冒号的赋值行系统只取最后一条前面两条被忽略。这和技术指标公式允许多输出是两套约定。解决把多条逻辑用AND或OR合成一个表达式最后只留一行输出。中间过程用:赋值不产生输出只有最后一行用:。{把中间条件用 : 藏起来只留一行输出} 条件一:CLOSEMA(CLOSE,20); 条件二:VOLMA(VOL,5); 条件三:CLOSE/REF(CLOSE,1)1.03; 最终条件:条件一 AND 条件二 AND 条件三;:是“算但不画”:是“算且输出”。选股公式里前面的中间变量全部用:最后一行用:就能避免多输出被截断的问题。5.5 现象公式体里引用了参数 N保存时报参数未定义原因是参数表是空的。参数不是写完在公式体里自动生成的得在编辑界面的参数表里先加一行填名字、最小值、最大值、缺省值。顺序反了就会报这个错。解决写公式体之前先把参数表填好或者写完回头补。补的时候注意名字要和公式体里用的一致大小写敏感的场景下n和N不是一回事。6. 进阶把一堆散装公式养成一套可维护的指标库写到第十几条公式之后真正的问题就不是语法了是管理。我的习惯是给公式名加前缀按用途分组观察类用V_开头view选股类用S_开头select信号类用T_开头trade。名字短、有规律键盘调出时不容易敲错也不会和系统自带的重名。参数命名统一成一套周期类一律用N第二条周期用M倍数类用P。范围统一写 1 到 260缺省值按最常用的周期填。这样做的好处是从一条公式复制出另一条时参数表几乎不用改只改公式体里的逻辑就行。验证环节我一般分三步走。第一步用五彩 K 线跑一遍形态条件图形上肉眼确认标注的位置对不对这比看选股名单直观得多。第二步把同一套逻辑平移成条件选股跑一段历史区间看选出来的数量级是否合理——如果一只都选不出或者每天选出几百只条件肯定是宽窄失衡。第三步才把它挂到交易系统公式上看信号这一步放在最后因为信号一旦可视化很容易被图上的箭头带偏判断。阶段用的公式类型看什么判断标准形态验证五彩 K 线标注位置是否符合预期标注稀疏且准确批量验证条件选股一段区间的选出数量每天几只到几十只信号验证交易系统买卖点是否成对出现信号不密集、不反向还有一个小技巧把常用的中间计算抽成独立的“基础指标”比如一条专门算均线多头排列的指标然后在别的公式里用基础指标名.输出名的方式引用。这样改一处所有引用它的公式同步生效不用挨个改。血泪教训是早期我把所有逻辑都写在一个大公式里改一个参数要翻十几处改漏一处就出现两条公式逻辑不一致排查了半天才发现是版本不同步。从那以后我每次新建公式都强制走一遍“参数表先填、中间变量用:、最后一行才输出”的流程宁可多写两行也不省这一步。希望帮到你。本文还有配套的精品资源点击获取