我正在使用 R 、TTR 库。 我计算 MACD 的算法是:
MACD Line: (12-day EMA - 26-day EMA)
Signal Line: 9-day EMA of MACD Line
我的 MACD 计算 R 代码是:
macd123 = MACD(data[c('收盘价')],12,26,9,maType=EMA)
它向我传递了两个值MACD
和信号
嗯,这两个值与我的交易软件不匹配。
因此,我使用 R 找到 12 天和 26 天 EMA
,然后从 12 天 EMA 中减去 26 天 EMA 以获得 MACD 值。
但这个值甚至与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)
最佳答案
您不应期望 ema12 - ema26
与 MACD
的输出相匹配,因为 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
关于r - R 中 MACD 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324075/