R语言量化:MACD的计算及使用

   MACD,中文名称为指数平滑移动平均线,是最常用的技术指标之一。该指标由双指数移动平均线发展而来,其意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势。与双指数移动平均线相比,MACD采用红绿柱的表现形式,阅读起来更加方便。其计算方法如下:

  1、由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到DIF;

  2、计算DIF的9日指数移动平均线DEA;

  3、MACD = 2×(DIF - DEA)。

  值得注意的是,在一般的计算方法中,DIF是EMA12和EMA26之间的绝对差别,即DIF = EMA12 – EMA26,但是这种算法易受股价大小的影响,在对股价进行除权或复权操作后,尽管K线走势没有变化,但DIF的值也会随着除权或复权产生相应的变化;为了避免这种变化,DIF也可以考虑EMA12和EMA26之间的相对差别,即DIF = EMA12/EMA26 × 100 - 100。

  在R语言中,MACD可以通过TTR包中的MACD函数计算。MACD函数的输出值有两个:macd和signal。但是这里的macd其实并不是各种常用股票软件中显示的MACD,而是DIF,而signal实际上是DEA。

  MACD函数的用法如下:

  MACD(x, nFast = 12, nSlow = 26, nSig =9, maType, percent = TRUE, ...)

  x:要处理的数据,可以是xts格式,也可以是matrix格式或vector格式;

  nFast:快速平均线的计算天数;

  nSlow:慢速平均线的计算天数;

  nSig:计算DEA时的平均线计算天数;

  maType:计算平均线的方法,默认为指数平均,即EMA;

  percent:默认为TRUE,即计算DIF时采用相对差别的方法。

  下面我们使用上证指数进行一下实际运算: 

# 使用Wind下载上证指数
library(WindR)
w.start()
data_wind <- w.wsd(codes ='000001.SH', fields = 'open,high,low,close', startdate = '20100101', enddate ='20180327')
stock <- data_wind$Data
stock_use <- xts(stock$CLOSE,order.by = as.Date(stock$DATETIME)) 
# 使用TTR包计算MACD
li
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值