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)

调用函数计算指标

运行效果:

..