简介:面向通达信软件使用者与金融技术分析爱好者的一份指标公式文档,重点在于把国外MACD思路搬到主图、并按周线周期做改造,用来判断趋势转折与多空动能变化。包内只有1个doc文件,体积约226KB,可直接用Word或WPS打开,查阅完整公式代码与绘图指令。源码以收盘价为基础,用5日与13日指数移动平均的差值构造动量主线,再借助HHV、LLV在短周期与100周期上取极值,派生出RR与R两条对称波动区间曲线,并以四档彩色横线勾出多空分界带;M线经二次平滑加粗显示,末根K线位置用▲、▼文字标注动能方向,方便快速读取信号。已有131人学习,适合希望自行改写参数、调整配色与提示逻辑的中阶用户参考借鉴。
1. 通达信国外 MACD 主图指标在周线周期下的价值
周线选股时,很多人习惯把 MACD 放在副图,但真正决定买卖的那根 K 线却在主图,来回切换会漏掉金叉死叉与柱状变化的同步位置。标题里的「国外MACD-主图 周线.doc」本质是一套通达信指标公式源码,把经典 MACD 的 DIF、DEA 和柱状信号直接叠加到价格主图上,并且针对周线周期做了适配。国外 MACD 指 Appel 提出的 12、26、9 参数体系,主图版不改变算法,只改变信号呈现位置,让周线级别的趋势拐点、零轴穿越和红绿柱收缩在同一张图里可见。适合做周线波段、中线持仓,或者用 MACD 共振副图做辅助确认的交易者。这套源码解决的是「副图看信号、主图找位置」的割裂问题,同时保留通达信原生公式管理器的可编辑性。
2. 通达信指标公式源码:国外 MACD 主图的核心变量与周线数据源
2.1 国外 MACD 的 12、26、9 在周线上要不要改
国外 MACD 的默认参数来自日线尺度,12 日快速 EMA 与 26 日慢速 EMA 的差构成 DIF,9 日 EMA 构成 DEA。放到周线后,一根 K 线代表一周,12 周约等于三个月,26 周约等于半年,这个跨度对中线趋势并不突兀。常见做法是直接沿用 12、26、9,因为周线本身已经过滤了大量日线噪音,再压缩参数容易让信号过于密集。如果做更灵敏的周线波段,可以把 SHORT 改成 8、LONG 改成 17,MID 保持 9,这样 DIF 对周线收盘价的变化反应更快,但假信号也会增加。我一般会在公式管理器里建两个版本,一个 12、26、9 用于确认趋势,一个 8、17、9 用于观察早期拐点,两者互不覆盖。
先看一段最基础的通达信 MACD 输出代码,这段代码通常放在副图指标里,是主图公式的变量来源:
{基础 MACD 输出,变量必须用冒号才能被跨周期引用} DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); MACD:(DIF-DEA)*2,COLORSTICK;逻辑说明:EMA(CLOSE,12)计算 12 周期指数移动平均,EMA(CLOSE,26)计算 26 周期指数移动平均,两者相减得到 DIF。DEA是 DIF 的 9 周期 EMA。MACD柱取(DIF-DEA)*2,乘 2 只是放大柱体视觉高度,不改变方向。参数说明:CLOSE可以替换为C,12、26、9可以改成其他整数,但必须是正数。如果把这段代码直接放进主图叠加公式,COLORSTICK不会在主图显示柱状,因为主图没有副图那样的独立坐标轴。
2.2 主图叠加与副图 MACD 的坐标映射差异
副图 MACD 有独立的 Y 轴,DIF 和 DEA 可以在零轴上下自由伸缩。主图叠加时,Y 轴是股票价格,DIF 的数值可能是几毛钱,也可能是几十块钱,直接画到价格坐标系里会挤成一团或者超出屏幕。通达信允许主图公式画线,但需要做数值映射,常见的方法有两种:一种只画信号标记,比如金叉画图标、死叉画图标,不画 DIF 曲线;另一种把 DIF 和 DEA 归一化到最近一段价格区间,例如用HHV(HIGH,60)和LLV(LOW,60)把 MACD 数值压缩到价格通道内。前者干净,后者能看到 DIF 与 DEA 的交叉过程,但会随窗口变化而漂移。周线周期下,60 根周线约等于 14 个月,归一化窗口可以取 60 到 120。
下面这张表对比两种主图呈现方式,选型时按自己的看盘习惯来:
| 呈现方式 | 绘制对象 | 优点 | 缺点 | 周线建议 |
|---|---|---|---|---|
| 信号标记版 | 金叉、死叉图标 | 不干扰 K 线,一眼识别 | 看不到 DIF 与 DEA 距离 | 适合周线趋势确认 |
| 归一化曲线版 | DIF、DEA 映射线 | 能看到交叉与发散 | 窗口变化导致位置漂移 | 适合周线波段复盘 |
| 柱状背景版 | 红绿柱背景色 | 保留 K 线实体 | 颜色过多时干扰 | 适合周线持仓跟踪 |
2.3 周线周期下 CLOSE、EMA 与跨周期引用 #WEEK 的区别
在通达信里,公式默认跟随当前周期。把公式挂在周线图上,CLOSE就是周线收盘价,EMA(CLOSE,12)就是 12 周 EMA,不需要额外写#WEEK。跨周期引用是另一种需求:当前在日线图,想引用周线 MACD,写法是"MACD.DIF#WEEK"。注意引号内是「指标名.变量名#周期」,指标名必须是已经存在的公式,变量名必须是带冒号的输出变量,不能用:=定义的中间变量。周线引用日线则写"MACD.DIF#DAY"。常见错误是把#WEEK写成#W,通达信不识别缩写。另外,跨周期引用会消耗更多计算资源,周线数据量小,影响不明显,但在分钟周期引用日线时要注意刷新速度。
如果要在周线主图里引用日线 MACD 做共振,可以写成:
{周线主图引用日线 MACD,用于多周期共振} DIF_D:="MACD.DIF#DAY"; DEA_D:="MACD.DEA#DAY"; MACD_D:=(DIF_D-DEA_D)*2;逻辑说明:"MACD.DIF#DAY"取系统或自定义 MACD 指标在日线周期的 DIF 值,"MACD.DEA#DAY"取日线 DEA 值。参数说明:MACD是指标名称,如果自定义公式叫MYMACD,就改成"MYMACD.DIF#DAY"。#DAY可以换成#WEEK、#MONTH,但当前公式所在周期不能与引用周期形成循环,比如周线公式引用周线自身会报错。
3. 国外 MACD 主图指标公式源码在通达信中的落地写法
3.1 在通达信公式管理器新建主图指标并粘贴源码
打开通达信,按Ctrl+F调出公式管理器,选择「技术指标公式」下的「其他类型」,点击「新建」。公式名称填国外MACD主图周线,画线方法选「主图叠加」,这样公式不会替换原有 K 线,而是叠加在价格图上。把下面这段源码粘贴进去,参数部分可以按需填写:SHORT 默认 12,LONG 默认 26,MID 默认 9。粘贴后点击「测试公式」,如果提示「编译成功」,再点「确定」保存。周线使用时,在 K 线图输入公式名称,回车即可切换。如果只想在周线周期显示,可以在公式属性里把「适用周期」设为周线,但通达信不同版本位置略有差异,常见做法是不锁周期,手动切到周线图使用。
完整源码如下:
{国外MACD主图-周线,主图叠加} SHORT:=12; LONG:=26; MID:=9; DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG); DEA:=EMA(DIF,MID); MACD:=(DIF-DEA)*2; {周线均线,作为价格参照} MA20:MA(CLOSE,20),COLORWHITE; MA60:MA(CLOSE,60),COLORYELLOW; {金叉死叉判断} JC:=CROSS(DIF,DEA); SC:=CROSS(DEA,DIF); {在 K 线下方画金叉图标,上方画死叉图标} DRAWICON(JC,LOW*0.98,1); DRAWICON(SC,HIGH*1.02,2); {用短横线表示 MACD 柱的方向,红柱在收盘价下方,绿柱在收盘价上方} STICKLINE(MACD>0 AND MACD>REF(MACD,1),CLOSE,CLOSE*0.995,3,0),COLORRED; STICKLINE(MACD<0 AND MACD<REF(MACD,1),CLOSE,CLOSE*1.005,3,0),COLORGREEN; {零轴穿越提示} DRAWTEXT(CROSS(DIF,0),LOW*0.96,'零上'),COLORRED; DRAWTEXT(CROSS(0,DIF),HIGH*1.04,'零下'),COLORGREEN;逻辑说明:前四行定义参数和 MACD 变量,DIF、DEA、MACD都用:=定义中间变量,不输出线条。MA20和MA60用冒号输出,会在主图画均线。JC和SC分别判断 DIF 上穿 DEA 和 DEA 上穿 DIF。DRAWICON在最低价下方画 1 号图标,在最高价上方画 2 号图标。STICKLINE在收盘价附近画短横线,红柱表示 MACD 为正且比上一根周线柱体增长,绿柱表示 MACD 为负且比上一根周线柱体缩短。DRAWTEXT在零轴穿越位置写文字。参数说明:SHORT、LONG、MID可以改成 8、17、9,0.98、1.02是图标偏移比例,3是线宽,0表示从右向左画。
3.2 用 STICKLINE 和 DRAWICON 把金叉死叉画到周线 K 线上
主图叠加最怕信号互相遮挡。STICKLINE画在收盘价下方或上方,不要画在 K 线实体内部,否则红绿柱会盖住开盘价和收盘价。DRAWICON的图标编号在不同通达信版本里略有差异,1 号通常是向上箭头,2 号是向下箭头,如果显示不出来,可以换成DRAWTEXT写「金」「死」。周线 K 线数量少,信号不多,图标密度低,视觉效果比日线干净。如果做周线选股,可以把JC作为选股条件,在条件选股公式里写CROSS(DIF,DEA),但注意选股公式不能直接引用主图公式的中间变量,需要把完整 MACD 计算复制过去。
下面这张表列出主图绘制函数的关键参数,改颜色和位置时直接对照:
| 函数 | 参数位置 | 示例 | 作用 |
|---|---|---|---|
| DRAWICON | 条件, 价格位置, 图标号 | DRAWICON(JC, LOW*0.98, 1) | 在指定价格画图标 |
| STICKLINE | 条件, 价1, 价2, 宽度, 方向 | STICKLINE(MACD>0, C, C*0.995, 3, 0) | 画柱线或横线 |
| DRAWTEXT | 条件, 价格位置, 文字 | DRAWTEXT(CROSS(DIF,0), L*0.96, '零上') | 在指定价格写文字 |
| COLORRED | 放在语句末尾 | STICKLINE(...), COLORRED | 设置画线颜色 |
| CROSS | 两个变量 | CROSS(DIF, DEA) | 判断上穿 |
3.3 周线专用参数与颜色配置表
周线 MACD 主图的颜色不宜过多。均线用白色和黄色,红柱用红色,绿柱用绿色,零轴穿越用文字提示即可。如果周线 K 线本身有涨跌颜色,红绿柱要避免与 K 线颜色完全一致,否则看不出叠加效果。常见做法是把红柱画在收盘价下方,绿柱画在收盘价上方,这样与 K 线涨跌颜色错开。参数方面,周线用 12、26、9 时,DIF 穿越零轴的次数较少,一年可能只有几次,适合中线持仓。用 8、17、9 时,信号次数增加,但周线假突破也会增多。可以按下面的配置表调整:
| 参数组 | SHORT | LONG | MID | 适用场景 | 信号频率 |
|---|---|---|---|---|---|
| 经典组 | 12 | 26 | 9 | 周线趋势确认 | 低 |
| 灵敏组 | 8 | 17 | 9 | 周线早期拐点 | 中 |
| 慢速组 | 16 | 34 | 9 | 周线大级别过滤 | 极低 |
| 短线组 | 5 | 13 | 5 | 周线结合日线共振 | 高 |
4. 通达信周线 MACD 主图的实战调参与信号过滤
4.1 周线金叉死叉的确认条件与过滤
周线 MACD 金叉不代表立即上涨,常见过滤条件是金叉发生在零轴上方,或者 DIF 大于零且 DEA 大于零。零轴下方的金叉往往是反弹,零轴上方的金叉更可能是趋势延续。可以在主图公式里加一个过滤变量,只有满足条件才画图标。例如:
{周线金叉过滤:DIF 在零轴上方且 MACD 柱由负转正} JC_FILTER:=CROSS(DIF,DEA) AND DIF>0 AND MACD>0 AND REF(MACD,1)<0; DRAWICON(JC_FILTER,LOW*0.98,1);逻辑说明:CROSS(DIF,DEA)是金叉,DIF>0要求快线在零轴上方,MACD>0且REF(MACD,1)<0要求柱体刚刚由负转正。参数说明:REF(MACD,1)取上一根周线的 MACD 值,1表示向前一根。这个条件会过滤掉零轴下方的弱势金叉,但也会漏掉部分底部反转。如果做周线定投或左侧布局,可以去掉DIF>0,只保留柱体转正。
4.2 用跨周期引用日线 MACD 做多周期共振
周线主图叠加日线 MACD 可以形成共振确认:周线金叉的同时,日线 MACD 也处于金叉状态或柱体翻红。在通达信里,跨周期引用要写完整的指标名和变量名。假设已经有一个副图指标叫MACD,输出DIF、DEA、MACD,那么周线主图里可以这样写:
{周线主图引用日线 MACD 做共振} DIF_DAY:="MACD.DIF#DAY"; DEA_DAY:="MACD.DEA#DAY"; MACD_DAY:=(DIF_DAY-DEA_DAY)*2; {周线金叉且日线 MACD 柱为正} RESONANCE:=CROSS(DIF,DEA) AND MACD_DAY>0; DRAWICON(RESONANCE,LOW*0.97,1); DRAWTEXT(RESONANCE,LOW*0.95,'共振'),COLORRED;逻辑说明:"MACD.DIF#DAY"取日线 DIF,"MACD.DEA#DAY"取日线 DEA,计算日线 MACD 柱。RESONANCE要求周线金叉且日线柱为正,然后画图标和文字。参数说明:#DAY可以换成#WEEK或#MONTH,但当前公式是周线主图,引用#WEEK会与当前周期重复,一般用#DAY做次级别共振。注意跨周期引用需要指标名完全一致,如果自定义公式叫MYMACD,就写"MYMACD.DIF#DAY"。
4.3 常见错误:未来函数、数据不足与刷新问题
主图 MACD 公式里最容易踩的坑是未来函数。ZIG、PEAK、TROUGH、BACKSET会引用未来数据,历史信号看起来很准,实际盘中会漂移。MACD 本身由EMA计算,EMA不是未来函数,但CROSS在盘中未收盘时会变化,周线最后一根 K 线未走完时,金叉信号可能闪烁。常见做法是等周五收盘后再确认,或者用REF判断上一根周线已经成立。数据不足也会导致 EMA 失真,次新股周线数据少于 26 根时,DIF 计算不充分,可以加BARSCOUNT(CLOSE)>30过滤。刷新问题多出现在跨周期引用,切换周期后指标没有重新计算,按F5刷新或重新输入公式名称即可。
下面这张表列出常见错误与排查方向:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 图标不显示 | 图标号不支持或条件不成立 | 改用 DRAWTEXT 测试条件 |
| 金叉信号闪烁 | 周线未收盘,CROSS 盘中变化 | 收盘后确认,或用 REF 过滤 |
| 跨周期引用报错 | 指标名或变量名写错 | 检查引号内格式,变量必须是输出变量 |
| 副图有信号主图没有 | 主图公式变量用 := 未输出 | 把条件变量用 := 定义,绘制函数直接引用 |
| 次新股信号异常 | 周线数据不足 26 根 | 加 BARSCOUNT 过滤 |
5. 通达信国外 MACD 主图源码的导出与周线验证技巧
5.1 TN6 转 TXT 与公式源码备份
拿到 TN6 格式的国外 MACD 主图文件后,不要直接改后缀名,TN6 是通达信加密公式包,直接转 TXT 会乱码。正确路径是打开公式管理器,点击「导入公式」,选择 TN6 文件,导入后会在技术指标公式列表里出现。选中该公式,点击「修改」,就能看到源码。把源码全选复制,粘贴到记事本,保存为.txt,这就是一份可读的 TXT 备份。如果公式被加密,修改界面可能只显示部分内容,这时只能使用原公式,不能二次编辑。备份时建议同时保存参数设置,因为 TXT 里只记录代码,不记录公式管理器的周期属性。
5.2 周线信号的历史回看与手动验证
周线 MACD 主图的历史信号可以用键盘方向键逐根回看。把十字光标移到过去某根周线 K 线,主图上的图标和文字会跟随显示,检查金叉位置是否对应价格低点,死叉位置是否对应价格高点。更系统的验证是打开「测试公式」里的「统计」功能,或者用条件选股公式跑一遍历史周线,统计金叉后 N 周的最大涨幅和最大回撤。通达信没有专业回测引擎,但可以用AUTOFILTER和ENTERLONG、EXITLONG写简单信号系统,在周线图上观察买卖点。注意,任何历史验证都要区分「信号成立时」和「信号确认后」,周线金叉在当周未收盘时可能消失,用REF(JC,1)可以只统计已经确认的信号。
本文还有配套的精品资源,点击获取