在新标签页中打开
跳至正文
寻找适合我的经纪商

理解 MACD:从移动平均线到交叉

了解 MACD 线、信号线和柱状图,查看 EURUSD 小时图示例,并比较已收盘 K 线上的交叉与价格波动。

移动平均线收敛与发散指标(MACD)比较收盘价的快速指数移动平均线与慢速指数移动平均线。信号线对这一差值进行平滑处理;柱状图显示 MACD 线与信号线之间的差值。

MACD 衡量什么

示例使用基于收盘价的 12 根 K 线快速 EMA、26 根 K 线慢速 EMA 和 9 根 K 线信号 EMA。这些是经典默认设置,并非优化后的建议。

  • MACD 线等于快速 EMA 减去慢速 EMA。
  • 信号线是 MACD 线的 EMA。
  • 柱状图等于 MACD 线减去信号线。

本下载文件使用的计算方法

MACD[i] = EMA(close, FastEma)[i] - EMA(close, SlowEma)[i]
Signal[i] = EMA(MACD, SignalEma)[i]
Histogram[i] = MACD[i] - Signal[i]
alpha = 2 / (N + 1)
EMA[i] = EMA[i-1] + alpha * (x[i] - EMA[i-1])

初始值与预热

每条 EMA 均以其前 N 个输入值的简单平均值作为初始值。价格的快速和慢速 EMA 分别从各自的初始化 K 线开始;信号 EMA 从最早可用的 SignalEma 个 MACD 值开始。索引从最早的 K 线起算。历史数据充足时,首个 MACD 索引为 SlowEma − 1,首个信号和柱状图索引为 SlowEma + SignalEma − 2。更早的值为空。历史数据不足时,所有缓冲区保持为空,下次调用会从头重新计算。

初始平均值的计算方式是:第一个值加上各值相对于该值的差值的平均值。这与简单平均值相同,并能让一串相同值保持精确。N = 1 时,EMA 就是输入值本身。

核对信号线的计算约定。 MetaTrader 自带的 MACD 使用简单移动平均线作为信号线,并将 MACD 线本身绘制为柱状图。本下载文件使用 EMA 信号线,柱状图则表示 MACD 减去信号。这些显示方式和值不能互换。内置的差值指标是 OsMA。

如何定义交叉

当 MACD 线从信号线下方移动到上方时,发生看涨信号线交叉。看跌交叉则相反。等价地说,柱状图的正负号发生变化。而零线交叉是在 MACD 线本身的正负号发生变化时出现。

上方和下方采用严格比较。恰好为零时保留先前所在的一侧:仅触及而未改变正负号,不算交叉。经过精确零值的交叉会在严格位于新一侧的第一根 K 线上报告。第一根确定所在一侧的 K 线没有可供交叉的先前一侧。

交叉描述过去的 K 线,并不预测价格。

交叉在正负号变化变得可见的收盘 K 线上报告,绝不会回溯标记到更早的 K 线。最新的 K 线可能仍在形成,不能确认交叉。其 MACD、信号和柱状图值会在每个 tick 重新计算。只要已收盘历史数据保持不变,已收盘 K 线上的事件就不会被删除或移动;重新加载历史数据时,指标会基于新数据重新计算。

解读图表示例

这些图表使用 EURUSD 小时 K 线,价格和 MACD 值以每 EUR 对应的 USD 表示。采集的导出数据包含 5,000 根已收盘 K 线,时间从 2025-12-04 15:00 到 2026-09-24 22:00。这是历史样本,并非实时报价。

图表时间是终端中 K 线的开盘时间。采集时测得的终端时钟偏移为 UTC+3;未对历史夏令时变化进行建模。周末和交易时段间隔被压缩,间隔处以浅色竖线标出。

近期样本概览

EURUSD 小时价格位于 MACD 线和信号线上方,下方有正负柱状图,箭头标出已确认的交叉。
图 1。最新的 240 根小时 K 线包含 9 次看涨信号线交叉和 8 次看跌信号线交叉。箭头标出收盘后交叉变得可见的 K 线;下方面板分别显示 MACD 线、信号线和柱状图。打开完整尺寸图表。

零线下方的看涨交叉

EURUSD 小时图显示基线下方的 MACD 看涨信号线交叉,随后 MACD 穿越基线。
图 2。看涨信号线交叉位于 2026-09-21 11:00 的 K 线上,在其收盘时(12:00)可见。MACD 为 -0.000040,信号线为 -0.000050。2 根 K 线后,MACD 线向上穿越零线。插图放大显示两线之间的间距。打开完整尺寸图表。

零线上方的看跌交叉

EURUSD 小时图显示基线上方的 MACD 看跌信号线交叉,随后 MACD 穿越基线。
图 3。看跌信号线交叉位于 2026-09-21 17:00 的 K 线上,在其收盘时(18:00)可见。MACD 为 0.000006,信号线为 0.000028。1 根 K 线后,MACD 线向下穿越零线。插图放大显示两线之间的间距。打开完整尺寸图表。

每个交叉示例都是最近一次符合条件的交叉:两侧各有 40 根 K 线作为上下文,且随后在 30 根 K 线内发生零线交叉。筛选不依据后续价格结果。两个窗口重叠 75 根 K 线,展示的是样本同一区段中的相关事件。

密集的连续交叉

EURUSD 小时蜡烛线位于狭窄价格区间内,下方 MACD 交叉箭头密集排列,柱状图的正负号交替变化。
图 4。选定的 60 根 K 线窗口包含 12 次信号线交叉。其最高价与最低价之差为 0.00428;范围更宽的窗口占 98.0%,已评分窗口共 4,907 个。选择信号线交叉次数最多的窗口,次数相同时选择最近的窗口。这是在描述样本,而非交易表现。打开完整尺寸图表。

波动极值之后的交叉

EURUSD 价格从标出的低点波动至标出的高点,并显示随后出现的 MACD 交叉箭头和水平延迟标注。
图 5。选定的波动低点为 1.17294;首次看涨信号线交叉在 6 根 K 线后出现。波动高点为 1.20816;首次看跌交叉在 7 根 K 线后出现。筛选采用已评分窗口中最宽的最高价与最低价范围,范围相同时选择最近的窗口。图表延伸到该窗口之外,以显示后续交叉。打开完整尺寸图表。

下载指标

指标在独立窗口中运行,显示 MACD 线、信号线、柱状图和信号线交叉箭头。它不会下单、发送提醒或使用 DLL 导入。

MQL5 源代码

原生源代码,可编辑快速、慢速和信号 EMA 的周期。

下载 .mq5 源代码

已编译的 MT5 指标

记录的编译结果为 0 个错误,0 个警告。尚未测试在原生图表上的挂载与绘制。

下载 .ex5 指标

MQL4 源代码

仅进行静态审查:未在 MT4 中编译或运行。

下载 .mq4 源代码

配置

  1. 选择适用于目标平台的源代码文件或已编译文件。
  2. 使用平台的指标文件夹和指标控件加载自定义指标。
  3. 设置 FastEma、SlowEma 和 SignalEma。FastEma 和 SignalEma 必须为正数;SlowEma 必须大于 FastEma。
  4. 解读显示内容之前,请核对信号线计算约定、可用历史数据和已收盘 K 线上的行为。

局限性

本工具不检测 MACD 背离。它标记交叉,不预测价格,也不进行交易。样本中的交叉次数不是命中率,也未进行交易表现测试。其他实现可能使用不同的信号线平均方法、初始值或首根 K 线,从而改变其早期值或信号线。

样本中的次数不是命中率,也未进行交易表现测试。

风险提示: 交易存在风险,您可能损失资金。交易决策不应单独依赖 MACD。

常见问题

MACD 线衡量什么?

它是收盘价的快速 EMA 减去收盘价的慢速 EMA。

柱状图显示什么?

它是 MACD 线减去信号线。当 MACD 在信号线上方时为正,在信号线下方时为负。

示例使用哪些设置?

快速、慢速和信号 EMA 的周期分别为 12、26 和 9 根 K 线,应用于收盘价。

信号线交叉与零线交叉相同吗?

不同。信号线交叉改变的是 MACD 减去信号所得差值的正负号。零线交叉改变的是 MACD 线本身的正负号。

最新的 K 线能确认交叉吗?

不能。最新的 K 线可能仍在形成,其值在每个 tick 都会变化;本下载文件仅在已收盘 K 线上报告交叉事件。

为什么 MetaTrader 内置的 MACD 看起来可能不同?

内置指标使用简单平均信号线,并将 MACD 线绘制为柱状图。本下载文件使用 EMA 信号线,并将 MACD 减去信号绘制为柱状图。

下载文件会检测背离吗?

不会。本工具不检测 MACD 背离。

延伸阅读

杠杆产品可能迅速造成亏损;中国大陆居民不得通过境外经纪商进行差价合约或外汇零售交易。

继续阅读

外汇经纪商监管机构排名:从 1 级监管到离岸监管

模拟交易:如何使用虚拟资金练习

交易术语表:外汇与CFD术语详解