MACD(指数平滑异同移动平均线)
MACD 即指数平滑异同移动平均线(Moving Average Convergence Divergence,macd)是股票交易中一种常见的技术分析工具,是从双移动平均线发展而来的,由 Gerald Appel 于 1970 年代提出,用于研判价格或指数变化的强度、方向、能量以及趋势周期,以便把握买进和卖出的时机。
MACD 利用收盘价的短期(常用为 12 日)指数移动平均线(EMA)与长期(常用为 26 日)指数移动平均线 (EMA) 之间的聚合与分离状况,对买进、卖出时机作出研判。
计算方法:
1、 离差值 DIF:
MACD _DIF=EMA(收盘价,12)-EMA(收盘价,26),EMA 采用收盘价计算
2、 根据离差值 DIF 计算其 9 日的 EMA,即离差平均值,是所求的 MACD 值。为了不与指标原名相混淆,此值又名 DEA 或 DEM。
MACD_DEA = EMA(MACD_DIF, 9)
3、 MACD 柱状值 = 2 *(MACD_DIFF - MACD_DEA)
故 MACD 指标是由两线一柱组合起来形成,快速线为 DIF,慢速线为 DEA,柱状图为 MACD。
参数:
y1 |
DIF输出列。 |
y2 |
DEA输出列 |
y3 |
MACD输出列 |
x |
要计算的字段,如收盘 |
n1 |
短周期,如 12 |
n2 |
长周期,如 26 |
n3 |
中周期,如 9 |
函数代码:
A |
B |
C |
|
1 |
func MACD(A, $y1, $y2, $y3, $x, n1, n2, n3) |
=A.derive@o(:macd1, :macd2) |
|
2 |
=EMA(A, macd1, ${x}, n1 ) |
=EMA(A, macd2, ${x}, n2 ) |
|
3 |
=A.run(${y1} = macd1 - macd2 ) |
=EMA(A, ${y2}, ${y1}, n3 ) |
|
4 |
=A.alter(; macd1, macd2) |
=A.run(${y3}=2*(${y1}-${y2})) |
调用函数计算浦发银行 2024 年的 12,26,9 日 MACD 值。要返回的字段命名为 DIF,DEA 和 MACD。
A |
B |
|
… |
… |
|
5 |
=call@f("indicator.splx") |
登记脚本中的函数 |
6 |
… |
计算出源数据 |
7 |
=A6.derive(:DIF,:DEA,:MACD) |
增加要返回的指标字段 |
8 |
=MACD(A7,DIF,DEA,MACD,收盘,12,26,9) |
调用函数计算指标 |
运行效果: