通达信MACD公式被自编改写之后,图上的形态一变,第一反应是参数没对齐。实际情况里更常见的原因是改写的部位不对:改的是计算本身,却以为改的只是显示。MACD 的三条输出之间是递推关系,动其中一环,后面两环都会跟着变。

下面把三条输出各自是什么、标准参数怎么来的、自编改写常见在哪四处、以及怎么验证改对了,按顺序讲一遍。文中的菜单路径与函数名以通达信金融终端个人版为准。全文只讲公式的构造与核对方法,不涉及任何标的的判断,也不给出方向性结论。

一、三条输出各自是什么

MACD 指标输出的三条线里,只有两条是独立的,第三条由前两条相减得到。这个结构决定了改写的自由度:改第一条会连带影响全部三条,改第三条只影响柱线本身。

输出 算法 改动后的影响面
快线 短周期平滑值减轻长周期平滑值 影响全部三条
慢线 快线再做一次平滑 影响慢线与柱线
柱线 快线减慢线再乘系数 只影响柱线

三者之中,慢线依赖快线,所以慢线的相位滞后于快线。这个滞后关系是指标定义的一部分,不是参数没调好。

把三条输出画在同一张副图上时,纵轴范围会把柱线压得比较扁。柱线的数值范围与快慢线不同,两者共用一个纵轴时会互相挤压。分开画,或者把柱线的显示系数调小,都能让结构更清楚。

二、标准参数是怎么定的

经典取值是短周期 12、长周期 26、平滑周期 9。这三个数字在多数行情软件的内置 MACD 里都是默认值,通达信也一致。它们不是从某段行情里拟合出来的最优解,而是长期沿用下来的约定,好处是不同软件、不同使用者的输出可以互相比较。

这个约定的价值在于可比性,而不是精度。改成别的取值并不会让指标失效,只是从此与别人的输出无法直接对照。分享或核对时把三个参数一并说明,能省掉一轮比对。

如果要改参数,先想清楚改的目的是什么。想让曲线对转折更敏感的,是把三个参数同时缩小;只想改变中间那条线的平滑程度的,是单独调整中间那个参数。两个方向的效果不同,混着改会让结果难以归因。

三、源码逐行对照

下面是通达信MACD公式的常见写法。内置指标的具体源码可以在公式管理器的技术指标分支里打开 MACD 查看,以那一份为准;下面这段是为了说明结构而展开的等价写法。

{ 参数表声明,界面可直接修改 }
SHORT: 12 (1, 250, 1)
LONG: 26 (1, 250, 1)
MID: 9 (1, 250, 1)

DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD:(DIF-DEA)*2,COLORSTICK;

四行里前三行是计算,最后一行是输出。第三行的 *2 是显示放大系数,不出现在定义里,各软件的处理不完全一样;核对跨软件结果时要先确认这一项。

通达信MACD公式的四行结构里,中间变量用单冒号还是双冒号有区别。用单冒号会作为一条输出画到图上,用双冒号只作为中间量、不占一条输出。改写时把中间量都改成双冒号,图面会更干净,也便于对照内置版的输出条数。

核对结构是否写对的快办法:把 DIF 与 DEA 的差值单独输出成一条线,看它与 MACD 柱线是否只差一个固定倍数。差固定倍数说明结构对,差一个变动的量说明中间有环节改错了。

四、自编改写常见在哪四处

把通达信MACD公式改成自用版本时,改动集中在四个位置。每一处的性质不同,核对办法也不同。

改动位置 性质 核对办法
参数取值 口径不变,灵敏度变 与默认参数并排画一次
平滑函数 口径改变 看曲线在转折处的贴合程度
数据字段 输入改变 确认用的是收盘价还是别的字段
柱线系数 只影响显示 与慢线快线的差值对照

第三项容易出问题的原因是字段名写法接近。把 CLOSE 改成 OPEN 或 HIGH 只需要一个词,编译一样通过,输出的曲线却完全是另一回事。改写之后先确认字段没被动过,再去看参数。

把平滑函数从 EMA 换成 MA 是口径改变,不是精度调节。EMA 的权重按指数衰减,MA 的权重均等,两者在同一段数据上给出的转折位置不同。这类改动要当作换了一个指标来对待,之后的比较基准要重建。

五、柱线固定系数带来的差异

柱线的显示放大系数在不同软件里的处理不完全一致。有的软件把它写进指标定义,有的把它放在显示设置里。结果是同一份数据在两套软件上算出来的柱线高度差一个倍数,而快线与慢线完全一致。

判断办法是把快线、慢线与柱线三者放在一起看。三条都不同,问题在计算;只有柱线不同,问题在显示系数。这一步能把排查范围缩小到一处。

通达信MACD公式与内置指标不一致时,先做这一步能省掉大量逐行比对。多数差异落在柱线上,而柱线恰好是只影响显示、不影响判断的一处。

六、周期与复权对输出的影响

通达信MACD公式计算的是平滑值之差,平滑依赖历史序列。改变周期或复权设置,输入序列本身就变了,输出随之改变。这不是公式的问题,是输入不同。

两点要留意。一是跨周期引用:在分钟图上引用日线数据时,若引用了尚未走完的日线,输出会随当日行情推进而改写。二是复权设置:前复权与不复权下,历史价格的数值不同,平滑结果不同。核对时把周期与复权设置一起记录下来。

还有一处与周期相关的是数据长度。平滑类函数在序列开头需要足够的根数才能得到有意义的值,本地数据不足时,图表最早的一段输出会偏平或为空。把图表左端与数据下载的起始位置对照一次,能分清是公式问题还是数据问题。

七、验证改写是否达到预期

把改写后的版本与原版并排跑一遍,按下面三步核对,每一步都能得到明确结论。

步骤 动作 通过标准
1 参数设成与默认一致,两份都跑一次 三条输出完全重合
2 只改一处,再跑一次 能说清哪条线变了、为什么变
3 把同一根 K 线在两个时间点各算一次 输出不变,或变化来源已定位

第一步不重合,说明改写过程中已经动了不该动的地方,先回到源码逐行比对,不必继续往下做。

下一步可以做的,是把改写前后的两份源码都留在公式管理器里,各自命名清楚,注明参数与改动点。留档的价值在几个月后体现:那时你只会记得「改过一版」,不会记得改的是哪一处。

本文只讲公式的构造、参数含义与核对方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 指标原理与参数 里讲参数含义与取值口径的条目、公式编写与语法函数 里讲平滑函数与表达式的条目、指标回测与风险验证 里讲数据口径与未来函数的条目,可对照查看。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。