SPL做量化--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
1600000
22024-01-01
32024-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
macdMACD柱状值

例如调用脚本计算浦发银行 2024 年的 [12,26,9] 日 MACD 值:

AB
……读取股票数据
5=call("macd.splx",A4,"close",[12,26,9])调用脚本计算 macd

运行效果:

..

 SPL 可以在这里下载:免费下载。使用免费的桌面版就可以了,直接安装即可使用。专业程序员也可以使用这里的开源版,但需要自行配置部署。

SPL 配有系统的教程,这里有面向新手的课程(含视频):SPL程序设计语言 · 乾学院VIP课程 ,乾学院 也有更多学习资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值