2

我一直在使用 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)

MA 的长度 = 1923

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()

图表上的自定义指标

任何输入任何人?我上次发帖时没有指标

提前致谢!

4

1 回答 1

0

您的第一个错误似乎存在,因为您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)

在此处输入图像描述

于 2018-01-17T03:32:01.047 回答