2016-10-29 26 views
1

我正在使用R,TTR库。 我计算MACD算法是:macd在R中返回不正确的值

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) 
+3

请与您预期的结果 – rawr

回答

0

你不应该指望ema12 - ema26MACD输出相匹配,因为MACD计算默认情况下,两条均线之间的百分比差异,因为它的记录做(percent = TRUE )。

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

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

是,添加后'百分率为FALSE',我得到他们两个相同的添加少量重复的例子。但正如我在我的问题中提到的,这种MACD和信号线与我的交易软件的输出不相关。我需要在我的代码中添加更多属性吗? 'macd = MACD(data [c('Close')],12,26,9,maType = EMA,percent = FALSE)'谢谢 –

+0

@KomalBangde:您没有提供任何交易软件的输入或输出,或任何迹象表明您的交易软件如何计算MACD值。因此,我不能给你任何建议,你应该怎么做才能使这些值匹配。 TTR源代码是公开可用的,所以你可以看到它是如何计算它的值。 –