指标源码
通达信MACD布林主图
源码
M6:(EMA(C,5)+EMA(C,6))/2;
M12:=EMA(C,12);
M26:EMA(C,26),COLORRED,LINETHICK2;
DIF:=EMA(M12-M26,9);
SBL:M26+2*(26/12)*STD(DIF,26),COLORYELLOW,DOTLINE;
XBL:M26-2*(26/12)*STD(DIF,26),COLORGREEN,DOTLINE;
1. 代码整体概述
这段公式是 通达信(TDX) 的 主图指标,把 MACD 的 DIF 与 布林带(Bollinger Bands)结合在一起,放在 行情主图(即 K 线图)上展示。
- M26(红线):26 日指数移动平均线(EMA),代表中期趋势。
- DIF:MACD 的 DIF 线(12‑26‑9 的 EMA 差值),反映短期动量。
- SBL / XBL(黄/绿点线):以 M26 为基准,对 DIF 的标准差 进行 ±2 倍(并乘以 26/12 的比例系数)形成的上下轨,用来观察 DIF 相对于其中期均值的波动范围。
换句话说,SBL / XBL 并不是直接给价格的布林带,而是给 MACD 的 DIF 加了“布林”区间,从而把 动量 与 波动 同时显示在主图上。
2. 逐行代码详解
| 行号 | 代码 | 含义 | 备注 |
|---|---|---|---|
| 1 | M6:(EMA(C,5)+EMA(C,6))/2; |
5 日 EMA 与 6 日 EMA 的简单平均,作为短期参考。 | 这条线在后面没有再被引用,实质上是冗余的,可删掉或保留作辅助。 |
| 2 | M12:=EMA(C,12); |
12 日 EMA(短期 EMA)。 | 为后面的 DIF 计算提供“短期”基准。 |
| 3 | M26:EMA(C,26),COLORRED,LINETHICK2; |
26 日 EMA(中期 EMA),画成红色粗线。 | 主图的中轴线,常作为支撑/阻力。 |
| 4 | DIF:=EMA(M12-M26,9); |
① 先算 M12-M26(即 12 日 EMA 与 26 日 EMA 的差),再对其进行 9 日 EMA 平滑,得到 MACD 的 DIF。 |
与传统 MACD(12‑26‑9)完全一致。 |
| 5 | SBL:M26+2*(26/12)*STD(DIF,26),COLORYELLOW,DOTLINE; |
上轨 = M26 + 2×(26/12)×STD(DIF,26)。STD(DIF,26) 为 DIF 在最近 26 天的标准差。乘以 2*(26/12)≈4.333,得到比普通布林(2 倍)更宽的区间。 | 黄色点线,用来标识 DIF 的极端上升区域。 |
| 6 | XBL:M26-2*(26/12)*STD(DIF,26),COLORGREEN,DOTLINE; |
下轨 = M26 – 2×(26/12)×STD(DIF,26)。 | 绿色点线,标识 DIF 的极端下降区域。 |
关键数学点
- STD(DIF,26):对 DIF(已经平滑的 12‑26 差值)再取 26 期标准差,反映 DIF 的波动幅度。
- *2(26/12):在普通布林带里,系数是 2。这里乘上 26/12≈2.1667,得到约 4.33 的宽度。这样做是让 SBL/XBL 与 M26(26 日 EMA)保持相同的周期比例,理论上更适合 12‑26‑9** 这种周期组合。
- 主图绘制:因为 SBL/XBL 是基于 M26(价格)绘制的,所以它们会随 K 线 同步上下波动,形成 在价格坐标系下的“动量带”。
3. 如何在通达信里加载并使用
- 打开通达信客户端 → 功能 → 公式系统 → 公式管理器。
- 在 主图指标(或 副图指标,但本公式是主图)页面,新建 → 自定义公式。
- 把上面的代码粘贴进去(建议去掉第一行
M6:,因为它没有实际用途),给公式起个名字,例如MACD布林主图(也可以直接使用系统提供的编号 00916)。 - 设置 绘制方式 为 主图叠加(默认就是),线型 选 点线(DOT)或不选均可。
- 保存后返回行情页面,右键 K 线图 → 叠加指标 → MACD布林主图。
提示:如果想把它放在 副图(MACD 所在的位置),可以把
M26、SBL、XBL设为 副图({DRAWBAND}、{PLOT}等语法),但在主图使用更能直观看出价格与动量带的关系。
4. 解读与实战用法
| 形态 | 解读 | 可能的交易信号 |
|---|---|---|
| 价格上穿 M26(红线) | 中期趋势转多,股价在 26 日 EMA 之上。 | 买入(可配合成交量放大) |
| 价格下穿 M26 | 中期趋势转空,股价在 26 日 EMA 之下。 | 卖出 |
| DIF 上穿 SBL(黄点) | DIF 突破其上方动量带,说明短期动量显著增强。 | 激进买入(或视为 突破 信号) |
| DIF 下穿 XBL(绿点) | DIF 跌破下方动量带,短期动量大幅减弱。 | 激进卖出 |
| DIF 在 SBL 与 XBL 之间波动 | 动量在正常区间,趋势不明显。 | 建议观望或结合其他指标(如成交量、RSI) |
| DIF 与价格出现背离(如价格创新高而 DIF 未创新高) | 趋势可能即将转向。 | 减仓或反向操作 |
实战技巧
- 配合成交量:在 DIF 突破 SBL 或价格突破 M26 时,若成交量同步放大,可提高信号的可靠性。
- 多周期共振:可以在 日线 主图使用该指标,同时在 周线 或 60 分钟 图表上观察同周期的 MACD,以捕捉更大周期的趋势。
- 止损/止盈:可以把 M26 视为动态止损线——收盘价跌破 M26 时考虑止损;相反,跌破 XBL 时可考虑部分止盈。
- 过滤假突破:若 DIF 仅是“稍微”穿过 SBL/XBL(比如只有 1‑2 根 K 线),建议等待 DIF 重新回落或突破后形成收盘价确认。
5. 参数调节与自定义思路
| 参数 | 默认值 | 一 般 调 节 思 路 |
|---|---|---|
| EMA(C,12)(短期) | 12 | 短线更敏感可改为 8、10;长线可改为 15、20。 |
| EMA(C,26)(中期) | 26 | 与常用的 26 保持一致,若想更平滑可改为 30、50。 |
| EMA(M12-M26,9)(DIF 平滑) | 9 | 加大可让 DIF 更平滑(12、15),减小则更灵敏(6、7)。 |
| STD(DIF,26)(标准差周期) | 26 | 可改为 20、30,以改变带的宽度。 |
| *倍数 2(26/12)** | ≈4.33 | 若想收紧带,可改为 2(即普通布林),或自行设定如 3、5。 |
| M6 | — | 实际上无用,建议直接删除,减小公式冗余。 |
示例:如果你想让 SBL/XBL 更像传统的价格布林带,只需要把
2*(26/12)改为2,即:
SBL:M26+2*STD(DIF,26),COLORYELLOW,DOTLINE;
XBL:M26-2*STD(DIF,26),COLORGREEN,DOTLINE;
这样就得到 2 倍标准差 的 DIF‑布林带,适合更保守的交易者。
6. 常见问题 & 注意事项
-
为什么 M6 没用到?
- 代码里只出现了
M6:这么一行,后面没有任何引用。它的存在要么是 写公式时的草稿,要么是 作者留作以后扩展。实际使用时可删掉,保持公式简洁。
- 代码里只出现了
-
为什么 SBL/XBL 用的是 “DOTLINE” 而不是实线?
- 作者有意把 带 用点线表现,以免与 K 线、M26(实线)混淆。点线在视觉上更“淡”,便于观察 DIF 与 带 的交叉。
-
该指标适合在哪种行情使用?
- 趋势行情(明显上涨/下跌)表现最好,因为 M26 能提供支撑/阻力,DIF 与 SBL/XBL 的交叉能捕捉动量加速。
- 在 横盘震荡 区间,DIF 常常在带内来回穿越,容易产生 假信号,建议结合 RSI、MACD 柱 或 成交量 做过滤。
-
是否可以把 SBL/XBL 放在副图?
- 可以。把
SBL、XBL用PLOT或DRAWBAND方式绘制在副图,M26 则仍保留在主图,以保持 价格 vs 动量带 的对比。 - 示例(副图):
- 可以。把
M26:=EMA(C,26);
DIF:=EMA(EMA(C,12)-M26,9);
SBL:=M26+2*(26/12)*STD(DIF,26);
XBL:=M26-2*(26/12)*STD(DIF,26);
PLOT(SBL,"SBL");
PLOT(XBL,"XBL");
- 该指标是否适合程序化/量化回测?
- 完全可以使用,因为它是 确定义的数值,没有未来函数。只要把 买入条件(DIF 上穿 SBL 且价格 > M26)与 卖出条件(DIF 下穿 XBL 且价格 < M26)写入回测模型即可。注意设置合适的 滑点 与 手续费,防止过度优化。
7. 小结
- MACD‑布林主图 是把 MACD 的 DIF 套上 布林带(基于 26 日 EMA)后直接叠加在 K 线 上,能够 同时看到趋势(M26)和动量强度(DIF 与带的相对位置)。
- 核心信号:
- 价格 对 M26 的突破 → 中期多/空。
- DIF 对 SBL / XBL 的突破 → 短期动量加速。
- 背离 → 可能预示趋势反转。
- 使用方法:在通达信中新建主图指标,粘贴代码并叠加到 K 线图;结合成交量或其他指标进行过滤;可根据个人偏好调节 EMA、STD 周期以及倍数。
- 注意:该指标的 SBL/XBL 并不是传统的价格布林带,而是 DIF 的波动带,因此在横盘震荡时会产生较多 “虚假” 交叉,建议配合其他确认信号。