如何创建自定义指标? 50 天 EMA 线的斜率
How to create custom indicator? Slope of the line of 50 day EMA
我一直在使用 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()
有人输入吗?上次发帖没有指标
提前致谢!
您的第一个错误似乎存在,因为您在调用 Slope.indicator()
之前没有调用 chartSeries
。但是你的代码有点乱,包括没有定义y
(可能你后面在import data里引入)。
这里介绍的方法将根据线性回归绘制 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)
我一直在使用 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()
有人输入吗?上次发帖没有指标
提前致谢!
您的第一个错误似乎存在,因为您在调用 Slope.indicator()
之前没有调用 chartSeries
。但是你的代码有点乱,包括没有定义y
(可能你后面在import data里引入)。
这里介绍的方法将根据线性回归绘制 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)