通达信MACD零轴主图:从坐标变换到实战调参
2026/9/17 17:40:53 网站建设 项目流程

简介:这是一份通达信MACD零轴主图公式源码文档,面向使用通达信软件做技术分析的股民与交易爱好者,解决自定主图指标的理解与部署问题。文档为1个doc文件,压缩包大小约120KB,内容覆盖完整公式代码与逐段注解,其中DIF1采用12日与26日收盘价指数移动平均之差,DEA1为其9日移动平均,而DIF、DEA又分别叠加收盘价3日与12日移动平均,使信号更敏感。目前已有161人学习下载。利用该指标,可在主图上以50日均线为黄色粗基准线,通过DIF与DEA交叉以及红绿柱状图变化判断买卖时机:零轴上红柱代表多方占优,绿柱则反映空方走强;同时STICKLINE函数将MACD值转化为可视化柱体,方便快速识别趋势转折。另外源码中还预留了D50计算,将M50与DIF1的50日移动平均相加,但默认未启用,可作为长期趋势参考。需要提醒的是,技术指标不能保证百分百准确,建议结合量能、基本面等多元信息综合研判。

1. 通达信MACD零轴主图:为什么要把副图指标搬上主图

接触通达信超过五年的老手,多半有过这种纠结:MACD指标默认显示在副图里,看盘时视线要在K线图和MACD柱之间来回跳。尤其是做日内短线或看分钟级别的人,副图占掉屏幕下方三分之一的空间,K线区域被压缩得很难受。所谓“整合MACD零轴主图”,就是把原本在副图里画的DIF、DEA两条快慢线和红绿柱,通过坐标变换直接叠加到主图的K线之上,让MACD的强弱变化和价格走势出现在同一个视觉平面里。这种做法不改变指标的计算逻辑,也不引入未来函数,只是在绘图方式上做文章。对于用通达信做技术分析的人来说,这个整合能显著减少视线切换频率,尤其在多周期对比时,主图上的零轴位置比副图里的零轴要直观得多。本文就从MACD的计算根因说起,依次讲清楚主图绘制的坐标映射、指标公式管理器的装载流程、参数调整的边界,以及最后在主图上的验证与排错技巧。

2. 零轴主图的绘制原理:先搞懂MACD在算哪几条线

2.1 MACD指标的三条线到底怎么算

MACD本质上是一个动量指标,它的源头来自两条指数移动平均线的差。通达信内置的MACD公式每个人都能在公式管理器里看到,但很多人只记得DIF、DEA、MACD这三个英文缩写,却说不清每个参数的实际含义。先建立一个最简单的认知:DIF是快线,代表短期趋势的动量;DEA是慢线,代表动量本身的平均;MACD柱是两者差值的放大显示,用来感知趋势的加速或衰减。

在通达信的公式语言里,标准MACD的写法如下:

DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); MACD:(DIF-DEA)*2,COLORSTICK;

这段代码的逻辑是:先分别计算12日和26日收盘价的指数移动平均,两者相减得到DIF;再对DIF本身做9日EMA平滑,得到DEA;最后用DIF减去DEA并乘以2,以柱状图方式呈现。乘2不是业界统一标准,而是部分软件为了放大视觉差异的做法。通达信默认的MACD公式中,红绿柱直接用差值绘制,不做加倍,但很多网上流传的源码会加这个系数。你从零轴主图的角度看,DIF与DEA的值域和股价不是一个量级,比如某只股票价格是50元,但DIF可能只有0.35,如果直接画在主图上,你连线都看不见。

从更深一层的角度说,EMA的衰减系数决定了指标的滞后程度。12和26并非某种黄金比例,而是源自传统股市周期划分的粒度,后期被广泛接受为默认值。理解这一点很重要,因为如果你要改参数,本质上是在改EMA的窗口宽度,窗口越短,曲线越贴近价格,噪声越大;窗口越长,曲线越平滑,滞后越明显。把这个逻辑想清楚,后面调参的时候才不会被网上的“优化参数”带偏。

2.2 零轴主图的坐标变换与画线逻辑

主图的纵坐标是价格,而MACD算出来的是价格差,单位相同但量纲相差巨大。直接叠加在同一个坐标系里,MACD的线条会变成一根紧贴零轴的水平直线,毫无辨识度。常见的解决思路是把MACD的数值做“归一化”处理,映射到当前K线价格的某个百分比区间。我见过很多实现方案,其中被验证最稳的做法是:取最近一段时间K线的最高价和最低价,把最高价设为MACD的上限,最低价设为下限,然后把DIF和DEA的实时值线性映射到这个区间内。

映射公式的核心就是坐标变换:

HH:=HHV(HIGH,N); LL:=LLV(LOW,N); MAPDIF:=LL+(DIF-LLV(DIF,N))*(HH-LL)/(HHV(DIF,N)-LLV(DIF,N)+0.0001); MAPDEA:=LL+(DEA-LLV(DEA,N))*(HH-LL)/(HHV(DEA,N)-LLV(DEA,N)+0.0001);

这是比较聪明的做法——你不需要人为设定MACD映射到股价的缩放比例,只需要让MACD在窗口内的波动极值去对应K线的波动极值。分母上加一个极小的常数,是为了防止DIF在横盘时完全无波动,出现除数为零的崩溃。这里N可以取和MACD参数相关的周期,比如60日或120日,它决定了你的MACD主图在多大时间尺度内处于“满幅显示”状态。N越小,曲线对近期的变化越敏感,映射的动态范围越大;但N过小时,K线图本身也被压缩在很小的空间里,频繁的极值跳动反而失去了零轴的参考意义。

2.3 从零到一的源码雏形:先画出一条能用的MACD主图

有了坐标变换的思路,就可以把完整的源码串起来。下面的代码是我在通达信里搭的主图MACD最小可用版本,核心思路是把DIF和DEA映射到K线价格范围,零轴映射到0值对应的映射位置,红绿柱则通过STICKLINE函数画在对应映射位置上。

DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); MACD:(DIF-DEA)*2; N:=120; HH:=HHV(HIGH,N); LL:=LLV(LOW,N); H_DIF:=HHV(DIF,N); L_DIF:=LLV(DIF,N); H_DEA:=HHV(DEA,N); L_DEA:=LLV(DEA,N); MAPDIF:=LL+(DIF-L_DIF)*(HH-LL)/(H_DIF-L_DIF+0.0001); MAPDEA:=LL+(DEA-L_DEA)*(HH-LL)/(H_DEA-L_DEA+0.0001); DRAWKLINE(HIGH,LOW,OPEN,CLOSE); STICKLINE(DIF>=DEA,MAPDEA,MAPDIF,1,0),COLORRED; STICKLINE(DIF<DEA,MAPDEA,MAPDIF,1,0),COLOR00FF00; DRAWLINE(DIF>=0,MAPDIF,DIF<0,MAPDIF,1),COLORWHITE; PLOYLINE? ;

先看DRAWKLINE,这个函数的作用是让系统重新绘制K线实体,确保我们叠加在K线区域后面的MACD线条不至于被默认的K线绘制逻辑遮挡。如果你不调用它,通达信默认主图上会先画K线,后画指标线,指标线会在K线之上,视觉上会遮盖K线实体。

STICKLINE是通达信的关键绘图函数,它的六个参数分别是起点价、终点价、宽度、实体是否空心、颜色。以上代码中,当DIF大于等于DEA时,从MAPDEA画到MAPDIF,画一根红色柱体,代表多头动能;当DIF小于DEA时,画一根绿色柱体。宽度1通常是为了细线效果,如果你希望柱子更粗,可以改成3或5,但太粗会盖住K线实体。

至于DRAWLINE这个函数,我在这里写得比较拗口,它的作用是当条件成立时从当前位置画线到下一个条件成立的位置。上面代码中,DIF大于等于0的位置用白色线连接,DIF小于0的位置画同样线迹,这能形成一条连续的零轴参考线。但实际使用时,我会直接用DRAWKLINE搭配COLORWHITE,单独给零轴位置画一条虚线。这里需要提醒:PLOYLINE在通达信主图公式中是一种多段线函数,需要配合POLYTHENE等条件使用,容易写成死循环,我一般不用它画零轴。

3. 把源码装进通达信:公式管理器与主图叠加的完整路径

3.1 通达信公式管理器的三个入口与新建流程

拿到一段指标源码后,第一件事不是粘贴,而是找对入口。通达信的公式管理器在界面里有三条路可以进去:快捷键Ctrl+F、菜单栏“功能—公式系统—公式管理器”、或者在K线图空白处右键选中“主图指标—修改当前指标公式”。我建议在K线图上右键打开修改窗口,因为这样打开的时候,系统会自动帮你选中当前正在使用的主图公式,一旦新建指标命名后可以直接测试。

新建主图指标的完整路径是:

公式管理器 -> 新建 -> 技术指标公式 -> 画线方法选“主图叠加” -> 公式名称填写 -> 代码粘贴 -> 确定

这几步里最容易忽略的是“画线方法”下拉框。如果默认是“副图”,即使你把代码写成主图坐标逻辑,系统依然会把指标强行放到副图区域,看起来就像什么都没发生。画线方法改成“主图叠加”后,指标线才会被叠加到K线图上。另一个微妙处是“公式类型”,如果你只是想做一个技术指标,选择“技术指标”分类即可,“条件选股”和“交易系统”是另外两个逻辑体系,在测试时会有不同的语法限制。

3.2 源码粘贴与函数兼容性检查:缺哪条线先查这里

粘贴源码后,系统会做一次语法编译,如果出现“未定义的标识符”或者“变量名冲突”,你要先怀疑几个地方。第一是变量名是否与系统保留字冲突,比如“C”、“H”、“O”、“L”在通达信里分别代表收盘价、最高价、开盘价、最低价,你如果自己定义了一个变量叫L,编译器会直接报错。第二是函数的拼写方式,通达信内置的关键字全部用大写或首字母大写,但系统自带一种大小写不敏感的机制,所以一般不会在这出问题;真正容易出问题的是函数参数个数,比如STICKLINE括号内必须传够六个参数,少一个就会报“参数数量不匹配”。

如果编译通过但图上不显示,需要打开图上的“指标”标签页,确认是否加载了这个新公式。熟悉通达信的人都知道,新建公式后不会自动应用到当前K线图,必须手动在主图指标列表里把旧指标替换掉。另一个高频问题是,当你在公式管理器里新建的是“副图”类型,K线图下方会有独立的指标窗口,此时即使你把它拖到主图区域,画线方法依然不允许改变,唯一解决办法是回到管理器改画线方法。

// 提示:这里建议把N的默认值定在120,不要定在70以下。N太小的映射容易跟盘口波动打架,零轴上蹿下跳,失去了视觉基准。

3.3 参数设置与配色:让零轴和MACD柱一眼分辨

源码本身的可读性往往比背参数更重要。插入一段我常用的配色参数表,直接复制到代码后面作为参数定义段:

N1:=120; N2:=60;

如果你希望零轴本身在图上更醒目,可以在映射段之后加一行PLOYLINE的替代方案,直接在低价方向画一条线:

ZEROMAP:LL+(0-L_DIF)*(HH-LL)/(H_DIF-L_DIF+0.0001),COLORYELLOW,LINETHICK1;

这一行的含义是把DIF等于0这个数值点映射到K线坐标,然后用黄色线画出零轴。当价格长期横盘时,LL和HH很接近,ZEROMAP会抖动;此时可以在外面包一层平滑函数,但通达信里做平滑最稳妥的是直接引用REF(ZEROMAP,1),没必要引入复杂的滤波机制。

配色方面有一个认知:红绿柱使用的是STICKLINE里的颜色参数,但如果你在公式中不写颜色,通达信会套用“副图配色”的默认值,这样主图里的柱状图会变成很淡的粉红色和淡绿色,跟K线实体的红绿完全混在一起。所以务必在STICKLINE调用里显式指定COLORRED和COLORGREEN,并且用LINETHICK1控制线宽,让柱体边缘略微缩窄,不遮住K线实体。

4. 实战:根据盘面调参,避免三种常见误用

4.1 参数怎么调:快慢线周期差多少才算“零轴有效”

通达信默认MACD用12和26,但做零轴主图时,很多人发现默认参数的DIF和DEA在主图上过于平滑,买卖点的跃动感不强。要不要改?我一般会先看股票的交易频率。日线上,如果你做波段持股,默认参数就够了;如果你做短线回踩,可以把快慢线改成6和19,DEA取5,这样DIF领先于价格变化,柱状图变化更快,但噪声也成倍增加。零轴主图的意义不在凭空创造更好的指标参数,而在让你亲眼看到参数调整后零轴位置的漂移幅度。当DIF在零轴上方运行时,低吸和高抛的参考价值完全不同。

一个稍冷门但实用的参数思路是保持12和26不动,把DEA的周期改为3,这样DEA的滞后明显缩短,DIF与DEA的交叉点会略微提前出现。但要注意,DEA周期过短会让MACD柱频繁翻红翻绿,横盘震荡时信号会吵到你怀疑人生。我的建议是,在零轴主图里,DEA平滑周期不要低于5,低于5时叠加主图后,红绿柱的边界与K线实体相切,视觉上极其容易判断出错。

4.2 零轴不是水平线:用趋势线辅助判断强弱

很多人一看“零轴”就默认是一条水平线,但从坐标变换的原理看,主图上的零轴映射的是“0值在MACD值域中的相对位置”,它会随价格波动范围的变化而上下移动。这不是bug,而是因为你的映射空间本质上是动态的。

这带来的操作含义是:当股价连续大涨,HHV引用的最高价不断上移,MACD零轴映射位置也会被动抬高;相反,暴跌后零轴会下移。这个特性在副图里不存在,因为副图的纵坐标是固定的MACD点数。因此,你在主图上不能机械地认为“价格在零轴之上就是多头”,更准确的判断方法是观察DIF线的斜率与零轴斜率的相对关系。如果你希望零轴相对稳定,可以把映射空间N提高到150或者250,让最高价最低价的变化对映射的影响迟钝一些。但这会牺牲近距离动态细节。我一般放两个周期的主图MACD做对比,一个N=120看近端短期,一个N=250看长期坐标,两个同时叠加且颜色不同。

4.3 别把主图MACD当买卖信号:与K线形态配合的三种场景

零轴主图最大的风险是让交易者产生“主图指标即真相”的错觉。我见过有人把主图MACD的DIF上穿另一条映射后的DEA当作独立金叉信号来下单,结果在震荡市被反复打脸。原因在于,金叉死叉这种说法来源于副图固定坐标,用在动态映射的主图里,交叉的时点可能滞后几个K线——因为你看到的交叉发生在映射坐标里,而映射坐标里的位置变化并不完全等价于DIF与DEA数值的绝对值交叉。

更合理的用法是把主图MACD作为视觉辅助。第一种场景是零轴上方回踩:DIF保持零轴上运行,价格回抽到MA20附近,但主图MACD柱不翻绿,视为强势回踩。第二种场景是零轴附近粘合后放量:DIF与DEA在主图上间距极窄,数值上接近零,此时若K线收出放量阳线,可视为方向选择。第三种场景是背离线跟踪:肉眼观察价格创新高时,主图MACD柱的最高点是否同步抬高,如果不抬高,即有背离线迹象。这三种用法都没有对金叉死叉做机械响应,而是利用主图上的空间位置做概率判断,心里要始终清楚:零轴主图是辅助视野,副图数值依然是最终裁决依据。

5. 零轴主图进阶:从“整合”到“联动”的验证技巧

5.1 用绘图函数做信号标记:金叉死叉自动打点

当你把MACD整合到主图后,下一步最常见的需求是要不要打点。通达信里给K线打点可以用DRAWICON,位置选在K线的最高价上方即可。

DRAWICON(CROSS(DIF,DEA),HIGH*1.02,1); DRAWICON(CROSS(DEA,DIF),LOW*0.98,2);

上面第一行是当DIF从下方穿越DEA时,在当前K线最高价上方2%的位置画一个图标,图标序号为1(通常代表红箭头);第二行是死叉时,在最低价下方2%处画图标序号2。如果你觉得这两个标记干扰K线主图,可以改成画小圆点:

DRAWICON(CROSS(DIF,DEA),LOW*0.97,4); DRAWICON(CROSS(DEA,DIF),HIGH*1.03,5);

这样做的唯一目的是快速验证你的MACD参数在历史行情中金叉死叉的位置,已验证参数是否符合你的预期,而不是让你直接拿去当自动化交易信号。

5.2 多周期共振:把日线级别零轴主图套用到周线视图

通达信的主图公式默认是周期通用的,你可以将同一个零轴主图指标应用在日线、周线、月线甚至分钟级别。但有个坑:当你切到15分钟周期时,120日的HHV窗口会引用超过120个15分钟K线,但随着K线数量积累,公式会正常计算;而在刚启动时,由于没有足够的K线起点,HHV会从第一个K线开始计算,指标会出现两端数值差异较大的现象。这时建议对N做动态处理,用MIN函数限制范围:

N:=MIN(120,TOTALBARSCOUNT);

用TOTALBARSCOUNT获取当前周期下的K线总数,取与120之间的较小值,保证在数据不足时不产生过大的映射漂移。这个技巧很小,但很多人切换周期后直接看到一条平直的红绿柱,第一反应是公式坏了,其实只是N值设置导致映射失效。

5.3 版本差异与备份:TNE与TXT文件的互相转换

通达信公式管理器的导出功能支持两种常见格式:TN6和TXT。TN6是二进制压缩过的公式文件,适合直接复制给其他电脑导入,但无法用文本编辑器打开查看里面的源码;TXT是纯文本源码,方便修改和做版本管理。你如果需要把某个指标分享给别人,优先导出TXT然后让他们复制粘贴进公式管理器,这样对方在遇到语法不兼容时可以直接看代码排查。从TXT转换成TN6则更加简单,在公式管理器里新建一个公式,把TXT内容粘贴进去,再点“导出”选择TN6格式即可。

最后留一个验证技巧:当你调整了映射周期N后,不要只看最近三个月的K线。按下键盘的向下箭头,把K线图缩到尽量小,你会看到整条MACD主图线在过去两三年的表现。如果DIF和DEA在历史上某些大牛股行情里出现过明显的单边贴边,说明N过小;如果整条曲线边缘锯齿太多且死叉频繁,说明N偏大。调整到大多数行情里线条均能在K线上、下边缘内完整展开,同时红绿柱的分布与副图MACD柱状图保持同步率90%以上,这个N就是当前周期和股票池的最佳折中。验证方式不是靠感觉,而是把副图MACD临时打开并排对比,两根零轴的位置若相差太远,就是映射区间选择失当。

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

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

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

立即咨询