macd在R中返回不正确的值

时间:2016-10-29 21:55:45

标签: r

我正在使用R,TTR库。 我的MACD计算算法是:

MACD Line: (12-day EMA - 26-day EMA)    
Signal Line: 9-day EMA of MACD Line

MACD Calulation的我的R代码是:

macd123 = MACD(data[c('Close')],12,26,9,maType=EMA)

这传递给我两个值MACD& Signal

嗯,这两个值都与我的交易软件不匹配。 所以,我find 12 and 26 day EMA使用R然后使用Subtracted 26 Day EMA from 12 Day EMA to get MACD value. 但是这个值甚至与macd123(先前计算的MACD)不匹配。

如果您可以更正我的代码以获得所需的MACD和信号输出值,那将会很棒。

这是我的R代码:

library("TTR")    
data = read.csv(file="F:\\Project_files\\data\\Bambino.csv")    
sma20 <- SMA(data[c('Close')],n=20)    
ema14 <- EMA(data[c('Close')],n=14)    
ema12 <- EMA(data[c('Close')],n=12)    
ema26 <- EMA(data[c('Close')],n=26)    
bb20 = BBands(data[c('Close')],sd=2.0)
rsi14 = RSI(data[c('Close')],n=14)    
macd = MACD(data[c('Close')],12,26,9,maType=EMA)
allData= data.frame(data,sma20,ema14,bb20,rsi14,macd,ema12,ema26)

write.table(allData,file="F:\\Project_files\\temp\\testgejavaedbyR1.csv",na="0.000001",sep=",",row.names = FALSE)

1 个答案:

答案 0 :(得分:1)

您不应期望ema12 - ema26MACD的输出相匹配,因为MACD默认计算两个移动平均线之间的百分比差异,因为它记录了(percent = TRUE)。

如果您想使用原始差异,请在percent = FALSE来电中设置MACD。例如:

library(TTR)
data(ttrc)
macd <- MACD(ttrc[,"Close"], percent = FALSE)
mymacd <- EMA(ttrc[,"Close"], 12) - EMA(ttrc[,"Close"], 26)
identical(mymacd, macd[,"macd"])  # TRUE