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。
例如计算浦发银行 2024 年的 [12,26,9] 日 MACD 值:
A |
|
1 |
600000 |
2 |
2024-01-01 |
3 |
2024-12-31 |
4 |
=call("adjustprice.splx", "", call("loadkday.splx", A1, A2,A3) ) |
5 |
=call@f("index.splx") |
6 |
=ema(A4,"close",12) |
7 |
=ema(A4,"close",26) |
8 |
=A4.new(code,tdate,A6(#).ema_12-A7(#).ema_26:macd_dif) |
9 |
=ema(A8,"macd_dif",9) |
10 |
=A8.derive(A9(#).ema_9:macd_dea,2*(macd_dif-macd_dea):macd) |
A1-A4 读取股票数据
A5 登记 index.splx 脚本中的函数
A6-A7 计算短期和长期 ema
A8 计算 macd_dif
A9 计算 macd_dif 的 9 日 ema
A10 计算 macd_dea 和 macd
也可以将 macd 的计算方法封装为脚本 macd.splx,使用起来更加方便。
脚本代码:
A |
|
1 |
=call@f("index.splx") |
2 |
=ema(data,field,N(1)) |
3 |
=ema(data,field,N(2)) |
4 |
=data.new(code,tdate,A2(#).ema_${N(1)}-A3(#).ema_${N(2)}:macd_dif) |
5 |
=ema(A4,"macd_dif",N(3)) |
6 |
=A4.derive(A5(#).ema_${N(3)}:macd_dea,2*(macd_dif-macd_dea):macd) |
脚本参数:
data |
序表,某支股票的日线数据 |
field |
字符串,字段名如 "close" |
N |
序列,移动平均周期,如 [12,26,9] |
返回数据集结构:
code |
股票代码 |
tdate |
日期 |
macd_dif |
差离值 DIF |
macd_dea |
讯号线 DEA |
macd |
MACD柱状值 |
例如调用脚本计算浦发银行 2024 年的 [12,26,9] 日 MACD 值:
A |
B |
|
… |
…… |
读取股票数据 |
5 |
=call("macd.splx",A4,"close",[12,26,9]) |
调用脚本计算 macd |
运行效果: