我一直在使用Quantmod的NewTa功能创建一些技术指标。
我一直在尝试创建一个理想情况下应使用ChartSeries
绘制图表的自定义指标。该指标应显示调整后的收盘价50天EMA线的斜率。
getSymbols("NOVO-B.CO")
p <- na.omit('NOVO-B.CO')
FiftyEMA <- function(x){
MA <- removeNA((EMA(p[,6],n=50)))
}
SlopeFiftyEMA <- function(x){
run=(FiftyEMA(y)/FiftyEMA(x))
}
Slope.Indicator <- newTA(SlopeFiftyEMA,legend.name = "50 Day EMA Slope of Line Indicator")
Slope.Indicator()
这给了我错误:get.current.chob()中的错误:图形设备设置不当或丢失
我还尝试了一个新的代码,它给了我一个实际的指标!请让我知道您的想法(如果您认为它看起来正确与否):
首先我将数据导出到Excel :(库存数据仍然表示为p
)
write.csv(p,"data")
x <- data[,1]
y <- data[,7]
MA <- removeNA(EMA(y,n=50))
length(MA)
l=1:1923
SlopeFiftyEMA <- function(x){
(diff(MA)/diff(l))
}
Slope.Indicator <- newTA(SlopeFiftyEMA,legend.name = "50 Day EMA Slope of Line Indicator")
twelvemonths="last 12 months"
chartSeries(p,subset = twelvemonths,theme = 'white',up.col = 'blue',dn.col = 'grey',name ="Custom Indicators")
Slope.Indicator()
任何输入?上次我发布时没有指标
提前致谢!
答案 0 :(得分:1)
您的第一个错误似乎存在,因为您在致电chartSeries
之前没有致电Slope.indicator()
。但是你的代码有点混乱,包括没有定义y
(也许你稍后会在导入数据中引入它)。
此处介绍的方法将根据线性回归绘制MA的斜率,使用chart_Series
(可以说是比原始chartSeries
更清晰的图)。计算两种类型的斜率,包括您提出的斜率,即EMA的差异。
getSymbols(c("NOVO-B.CO"))
x <- `NOVO-B.CO`
x[, c(1:4, 6)] <- na.locf(x[, c(1:4, 6)])
x$EMA <- EMA(Cl(x), n = 50)
x <- merge(x, rollSFM(Ra = x[, "EMA"], Rb = 1:NROW(x), n = 20))
x <- merge(x, setNames(diff(x$EMA), "diff1"))
chart_Series(x, subset = "2016/")
add_TA(x$EMA, on = 1, col = "purple")
# Plot the slope of the MA:
add_TA(x$beta, col = "green")
# Plot the 1 lag diff of the moving average:
add_TA(x$diff1, lty = 2)