通达信指标公式入门:序列计算、常用函数与条件选股实战

发布时间:2026/9/18 19:15:05
通达信指标公式入门:序列计算、常用函数与条件选股实战 简介一份面向通达信用户的指标公式编辑教程聚焦TDX公式系统四大类公式编辑器与公式管理器的完整使用适合需要掌握技术指标、条件选股、五彩K线与交易系统编写的股民、量化分析爱好者及初入公式编辑的读者。文档系统梳理了公式管理器的树形结构、公式类型与加密管理并分别讲解技术指标公式编辑器、条件选股公式编辑器、五彩K线公式编辑器与交易系统公式编辑器的功能定位、参数设置、画线方法、坐标位置及额外Y轴分界等细节同时结合具体实例演示函数插入、算法修改和买卖逻辑判断的编写思路帮助投资者建立属于自己的选股和交易规则。资源仅包含1个docx文档压缩包大小553KB内容从基础函数到综合实例逐步递进图文示例充足便于按章节查阅和对照练习。目前已有293人学习下载适合希望通过系统化教程快速上手通达信公式编辑、提升策略开发效率的人群。1. 通达信指标公式编辑器从“看指标”到“写指标”的必经入口很多用通达信看盘的用户默认只打开系统自带的 MACD、KDJ、均线直到某天想要一条“量能强度线”或一个“连续三天缩量后放量”的信号才发现自己的需求根本不在系统选项里。这时候通向答案的入口只有一个通达信公式编辑器。它本质上是通达信内置的一门序列化脚本语言输入函数和运算符输出的是叠加在K线图上的指标线、信号图标和条件选股结果。本文要解决的就是三件事通达信的指标公式语言到底怎么理解、常用函数怎么组合、写完之后如何验证自己的公式。适合所有打算自己编写指标、选股公式或做参数优化的使用者也适合有一定开发经验但刚接触行情软件脚本的人。2. 通达信指标公式的核心数据结构序列、输入与输出2.1 通达信公式的逐周期计算每条K线都是一次循环写通达信公式前必须接受一个与写普通程序不同的前提你写的每一行公式通达信都会在每一根K线上执行一次。日线周期里每根日K会计算一次分钟周期里每根分钟K会计算一次。整个计算过程不是“一次性跑完全部数据”也不存在显式的 for 循环要学会用序列思维代替循环思维。通达信对“一只股票的历史行情”做了前置处理你写代码时不用写数组和下标只需引用内置的行情序列C 表示收盘价、O 表示开盘价、H 表示最高价、L 表示最低价、V 表示成交量、AMOUNT 表示成交额。下面是最常见的一行公式M5: MA(C, 5), COLORRED;这行的含义是定义一条名为 M5 的输出线它的值等于当前周期往前数 5 个周期含当前的收盘价平均值显示为红色曲线。MA 是移动平均函数C 是 CLOSE 的简写5 是计算周期。这行公式在每一根K线上都重复计算一次当前周期是最后一根K线时“当前收盘价”就是最近那根K线的收盘价当游标挪到第 100 根K线上时它又会以第 100 根K线为基准点重新计算。通达信公式在计算结果上还有一个隐蔽特征在同一周期内公式是按行号顺序依序执行的。前面的赋值语句算出的结果后面可以引用但后面的赋值结果前面无法引用。所以很多公式的写法是把“中间变量”放在头部把“最终输出线”放在尾部形成一个清晰的数据流。2.2 输出与赋值冒号和等号决定你是画线还是做变量通达信公式编辑器里的符号体系第一个要分清的就是冒号:和等号。看下面一段A1 : MA(C, 5); {中间变量不画线} A2: A1 * 2, COLORYELLOW; {输出一条线颜色为黄色}第 1 行用“:”表示赋值A1 作为一个中间变量存在不在图上画线起到缓存计算结果的作用第 2 行用“:”表示输出A2 被画成一条曲线。A2 的公式引用了 A1而 A1 是前面算好的 MA(C,5)二者只差一个符号结果表现力完全不同。中间变量的最大作用是拆分复杂逻辑。把一段复杂的表达式拆成多行每行只做一件事既便于排查哪一步算得不对也便于将来改成参数可调。比如判断“底部放量”可以拆成两个变量底部位置 : LLV(L, 10); 放量 : VOL REF(VOL, 1) * 2; 结果: 底部位置 MA(C, 5) AND 放量, COLORRED;第一个变量找 10 周期的最低价位置第二个变量判断今日成交量是否超过昨日两倍最后把两个条件合并输出为布尔值信号。这个写法对选股和画图标都很有用因为选择更复杂的策略时往往要重复引用前面几段的计算结果而不是把全部条件揉在一条长语句里。逻辑拆分是通达信指标公式中最容易被新手低估的工程能力。2.3 常用数据引用与周期函数REF、HHV、LLV、SUM、COUNT 的配合方式通达信公式语言里引用历史数据的行为是通过周期函数完成的。以下表格是最常用的序列引用函数函数作用示例REF(X, N)取 N 周期前的 X 值REF(C, 1) 表示昨日收盘HHV(X, N)N 周期内的最高值HHV(H, 9) 取 9 日最高LLV(X, N)N 周期内的最低值LLV(L, 9) 取 9 日最低SUM(X, N)对 X 进行 N 周期求和SUM(V, 5) 取 5 日总成交量COUNT(X, N)统计 N 周期内条件成立次数COUNT(C REF(C,1), 10)MAX(X, Y)返回 X 与 Y 中的较大值MAX(C, O) 返回当日最高价与开盘价的较大者单独看表格不难难的是组合使用。一个选股模型里经常需要“过去 10 天有 7 天是上涨的”这个判断用 COUNT 和 REF 配合上涨 : C REF(C, 1); C1: COUNT(上涨, 10) 7, COLORRED;先定义“上涨”为收盘价大于昨天收盘价再统计过去 10 个周期内“上涨”条件成立了多少次最后判断是否不小于 7。这一步逻辑清晰而且可以在通达信公式编辑器的测试界面里直接看到 0 或 1 的结果。需要注意两个细节。第一REF 的周期参数 N 建议使用常数或简单变量不要使用 HHV、COUNT 等函数返回值当作 REF 的周期参数或者至少先在一个版本上测试确认因为不同版本对动态周期的支持并不一致。第二HHV 和 LLV 的周期 N 同样建议保持为常数动态区间可以用变通办法实现先算出动态长度再用 REF 错位比较。行情序列是按“从右向左”的方式检索的最后得到的信号永远是当前最新条件这点在编写选股公式时尤其重要。3. 通达信指标函数分类打法平滑、交叉、过滤与画线函数3.1 平滑类函数的定位MA、EMA、SMA、DMA 的参数差异通达信函数库中最常被混淆的是四个平滑类函数MA、EMA、SMA、DMA。它们都能把一组数列“磨平”但计算逻辑差别很大选错平滑类型写出的指标会呈现完全不同的形态。函数调用方式特征MAMA(X, N)简单移动平均周期内所有数据等权重EMAEMA(X, N)指数移动平均近期数据权重更高SMASMA(X, N, M)带权重系数 M 的平滑M 越小越平缓DMADMA(X, A)以动态因子 A 为权重的移动平均一个直观的例子MA10: MA(C, 10), COLORYELLOW; EMA10: EMA(C, 10), COLORWHITE; SMA10: SMA(C, 10, 3), COLORRED;MA10 对 10 个周期内的收盘价一视同仁不做任何偏好EMA10 则给最近几个周期更高的权重指标线更贴价SMA10 的第三参数 3 表示当前周期的数据权重数值越小指标反应越慢。通达信的 SMA 实际上采用递推公式Y (X * M Y * (N - M)) / N其中 Y 是上一周期值。所以 SMA10 的第三参数直接控制了新信息对当前值的冲击程度。DMA 更特殊它允许权重本身是一条曲线。例如把成交量占比当作平滑因子写出的指标就会随着量能变动自动调整敏感性。选择逻辑是想画基准线用 MA想快速感应价格变化用 EMA想要“可调平滑度”用 SMA想给指标加入随行情变化的动态权重用 DMA。平滑函数的选择往往取决于最终信号形态太陡的信号干扰多太平滑的信号滞后多中间地带才是参数调优的空间。3.2 信号函数CROSS、FILTER 以及条件运算组合信号类函数的核心是 CROSS。它的逻辑是“两条线发生穿越动作”与“某条线大于另一条线”相比CROSS 只在穿越的当根K线上返回真值后续周期返回假。选股和预警最需要这种“瞬间触发”的语义CROSS(MA(C, 5), MA(C, 10)); MA(C, 5) MA(C, 10);第一行在 5 日均线上穿 10 日均线的那根K线返回 1其他周期为 0第二行只要 5 日均线在 10 日均线上方就持续返回 1。前者适合条件选股后者适合趋势状态的持续标记。做指标时如果持续条件被当成穿越条件使用会出现“信号长期亮着”的问题。多个条件的组合理应遵循“高内聚、低耦合”的写法。将每个条件独立赋值最后用 AND 或 OR 连接是通达信指标公式编辑中比较标准的结构放量 : VOL MA(VOL, 5) * 1.5; 站上20线 : C MA(C, 20); 金叉 : CROSS(MA(C, 5), MA(C, 10)); 信号: 放量 AND 站上20线 AND 金叉, COLORRED;放量用“量能高于五日均量 1.5 倍”来定义站上 20 线用收盘价判断金叉用 CROSS 捕捉穿越瞬间。三个独立条件合并后信号只在三个条件同时成立的周期触发。若某两个条件天然有相关性则需要考虑是否保留例如“金叉”本身已经隐含了 MA5 在 MA10 之上再写一条“MA5 大于 MA10”就是冗余条件。信号过滤用 FILTER它的作用是“信号触发后静默 N 个周期”。避免连续K线反复提示同一段行情金叉 : CROSS(MA(C, 5), MA(C, 10)); 过滤后: FILTER(金叉, 5), COLORRED;FILTER 伪造的基本逻辑是第一次信号出现后其后 5 个周期内不再输出任何触发信号。这样你不会在连续两根K线上收到重复的信号。参数 5 要与你的持仓周期、交易频率匹配例如日线短线可以设置 3 到 5周线周期就要放大到 8 到 13否则信号之间没有充分的间隔空间。3.3 画线函数STICKLINE、DRAWICON、DRAWTEXT 的用法与坐标细节写完计算逻辑之后需要把信号“画”到图上。通达信指标公式编辑器里最常用的三个画线函数是 STICKLINE、DRAWICON 和 DRAWTEXT。STICKLINE 画柱状线DRAWICON 画图标DRAWTEXT 写文字。BIAS : (C - MA(C, 20)) / MA(C, 20) * 100; STICKLINE(BIAS 0, BIAS, 0, 2, 0), COLORRED; DRAWICON(CROSS(BIAS, 0), 0, 1); DRAWTEXT(CROSS(BIAS, 0), -1, 转强);第 1 行计算当前价格偏离 20 日均线的百分比第 2 行在 BIAS 大于 0 时从 BIAS 位置画实心柱线到 0 轴第 3 行在 BIAS 上穿 0 轴的位置画 1 号图标第 4 行在 0 轴下方一点写“转强”文字。柱线宽度参数 2 是像素级宽度可以按主图/副图区域大小调整0 表示实心1 表示空心。DRAWICON 的价格坐标是 Y 轴的位置这里是 0 轴同一条 BIAS 线在副图里的 0 轴是一个明确的参照点。画线的坐标细节值得单独提醒主图指标的价格坐标是真实价格副图指标的价格坐标是自己定义的数值域。因此 STICKLINE 在副图里从 0 画到 BIAS 没问题但若直接改到主图里用BIAS 数值往往是 3 到 5画出来的柱子会压扁K线。常见的规避方式是把柱宽设小或者用价格比例做缩放比如L * 0.98表示最低价下方 2% 的位置适合在主图标注买入区间。DRAWTEXT 的文本必须用英文单引号包裹中英文都可以写在引号里但是要在股票名称或周期临时调整后重新加载指标文字位置才会刷新。很多人会忽略输出线数量对画图的影响。通达信指标公式编辑器默认只允许输出有限数量的画线一旦输出线超过画图上限后面的输出会被丢弃或者弹错。这个限制因版本而异但稳妥的做法是一条指标公式的输出线控制在 6 条以内其余计算全部用中间变量承载。4. 三个可复现的通达信指标公式实例4.1 实例一用 STICKLINE 写一个量能饱和度副图量能类指标是所有通达信公式里最容易自写的类别之一。这里不堆砌神秘源码直接给一个围绕“量能饱和度”概念的可运行版本把成交量偏离度映射到 0 到 100 区间并用不同颜色柱线表示。VAR1 : VOL / MA(VOL, 5) * 100; 饱和度: IF(VAR1 100, 100, VAR1), COLORWHITE; STICKLINE(VAR1 130, VAR1, 100, 2, 0), COLORRED; STICKLINE(VAR1 70, VAR1, 0, 2, 0), COLORGREEN;VAR1 是当日成交量与 5 日均量的比值乘以 100 后100 表示放量与缩量的平衡点。饱和度输出被 IF 钳制在 100 以内避免超高量能拉坏坐标。超过 130 时画红色柱低于 70 时画绿色柱分别代表极端放量与极端缩量。字数并不算多但柱线表达比单纯一条折线更直观。写完后在副图区域加载能看到量能浓度随行情变化的周期规律。逻辑上有一个可调参数值得说明饱和度上限的 130 可以改 120也可以改 150取决于你观察对象的活跃度。换到分钟周期时该参数需要重新调整因为“单日量比在分钟图上的统计口径与日线不同”。不用追求一个参数横跨所有周期通达信公式编辑器最理智的用法是每个周期配一套参数组。4.2 实例二双均线金叉条件选股公式的完整操作路径条件选股公式的通达信写法比副图指标更严格公式文件中只允许输出一个最终逻辑值不需要画线也不能用冒号输出多条线。在公式管理器中选择“条件选股公式”新建粘贴下面代码N1 : 5; N2 : 10; A1 : CROSS(MA(C, N1), MA(C, N2)); A2 : C REF(C, 1); A3 : VOL REF(VOL, 1) * 1.2; 选出: A1 AND A2 AND A3;N1 与 N2 在公式编辑器的参数框中可以设置默认值、最小值和最大值A1 是金叉信号A2 过滤掉收盘价下跌的“弱金叉”A3 要求当根K线成交量放大 20% 以确认资金参与。最终“选出”作为输出条件只有真值才会出现在选股结果中。操作路径是打开通达信公式管理器快捷键 CtrlF左侧选择“条件选股公式”点击“新建”把代码粘贴进去后点“测试公式”编译通过再保存。然后在功能菜单里调出“条件选股”选择刚保存的公式范围选“全部A股”周期选“日线”执行选股。这条流程下来能在一两分钟内得到结果且满足“收盘后跑一遍选出股票、次日观察”的常规节奏。条件选股不需要你把选股结果二次加载到主图它会直接生成股票列表。4.3 实例三在主图把均线、图标和文字提示做成一套组合主图指标把多条均线和信号标记放进同一个主图指标是通达信使用者的进阶需求能直接替代系统默认均线。下面的骨架代码包含均线输出、交叉信号与文字标注MA5: MA(C, 5), COLORYELLOW; MA10: MA(C, 10), COLORWHITE; MA20: MA(C, 20), COLORMAGENTA; MA60: MA(C, 60), COLORGREEN; 金叉 : CROSS(MA5, MA20); 死叉 : CROSS(MA20, MA5); DRAWICON(金叉, L * 0.97, 1); DRAWICON(死叉, H * 1.03, 2); DRAWTEXT(金叉, L * 0.93, 启动); DRAWTEXT(死叉, H * 1.07, 转弱);前面 4 行输出 5、10、20、60 四条均线颜色用黄、白、紫、绿区分。金叉与死叉分别捕捉动态变化并在当日K线的最低价下方 3% 处画图标、在最低价下方 7% 处写“启动”文字。死叉方向则画在最高价上方。通过 L 和 H 的缩放系数主图上的文字与K线不会互相压住。加载方式是在主图空白处右键选择“主图指标”从本地指标列表中找到新建的公式加载后系统默认均线会被替换掉。这套模板的好处在于把“均线排列”和“买卖提示”绑定不需要在一个界面里放多个指标窗口。当你把 L * 0.97 改成 L * 0.95文字与K线的距离会明显变大核心目的是保证多只股票在相同缩放倍率下显示一致。同一套坐标逻辑放在周线图也成立不必重写代码。5. 写完公式后必做的一个排查动作未来函数自查通达信公式编辑器里有一类隐藏风险叫“未来函数”它指公式在执行时会引用未来周期的数据将“未来信息”回填到历史位置导致历史信号看起来异常准确。常见函数包括BACKSET、ZIG、PEAK、TROUGH 等。这类函数在指示公式、选股公式中要尽可能避免使用。一个实用的检测技巧是加载你写好的指标后连续向前滚动K线并留意信号是否会随着光标位置变化而改变假设某个买点信号在向后翻到下一根K线时被悄悄擦除那么这条公式极可能引入了未来函数。另一条检测方式是用条件选股的历史回测相互复核收盘后记录当日选股结果第二天再跑一遍同一周期的同一公式两次结果完全一致才可放心作为盘后决策参考。想彻底验证一个选股公式的稳定性正确路径是先排除未来函数再放入通达信的程序交易评测系统或自建回测环境。指标本身不必过度追求复杂先从一个金叉条件起步逐步增加成交量与位置约束每增加一个条件观察选股结果的泛化能力是否有提升。当你能够熟练地把 CROSS、REF、COUNT、FILTER 和 STICKLINE 组合起来使用通达信公式编辑就不再是复制别人的指标而是一套你可以随时调整、调试、验证自己的交易规则的试验台。最后养成一个习惯每新建一个公式就顺手把周期类型、参数范围、刷新日期写进备注栏方便日后复盘和纠错。本文还有配套的精品资源点击获取