在Quantmod R中添加多个图表系列

5

我正在尝试在quantmod中使用chartSeries绘制两个图表。但我遇到了一些困难。

library(quantmod)    
tickers <- c('GLD', 'GDX')
data <- new.env()
getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data)
chartSeries(Cl(data$GLD), TA="addTA(Cl(data$GDX), on=1)")
addRSI()
1个回答

10
你可以使用 chart_Series 替代 chartSeries
chart_Series(Cl(data$GLD))
add_TA(Cl(data$GDX), on = 1)

如果您想在子面板中添加RSI,则只需添加add_RSI()

另一种方法是使用版本>=0.10.0的xts(即根本不使用quantmod),您可以从https://github.com/joshuaulrich/xts获取(0.10.0尚未在CRAN上)。xts中的新plot函数非常友好,可以同时绘制xts对象的多列。有关新功能的示例,请查看?plot.xts

编辑#2:

为了更容易地查看相对变化,您可以以许多方式规范化价格系列。这是一种典型的方法(使用0起点是Google图表所采用的方法):

normalise_series <- function(xdat) xdat / coredata(xdat)[1]
getSymbols("USO")
window <- "2013/"

# Define colour of default chart line to chart_Series in mytheme object
# which is passed to chart_Series:
mytheme <- chart_theme()
mytheme$col$line.col <- "darkgreen"
chart_Series(normalise_series(Cl(data$GLD)[window]) - 1, theme = mytheme)
add_TA(normalise_series(Cl(data$GDX)[window]) - 1, on = 1, col = "red", lty = 3)
add_TA(normalise_series(Cl(USO)[window]) - 1, on = 1, col = "blue", lty =2)

add_TA(RSI(Cl(data$GLD)), on = NA, col = "darkgreen")
add_TA(RSI(Cl(data$GDX)), on = 2, col = "red", lty = 3)
# Or add RSIs on different subpanels to improve readability of charts:
add_TA(RSI(Cl(USO)), on = NA, col = "blue", lty = 2)

输入图像说明


有没有一种方法可以将图表归一化?这样它就不是基于绝对价格数据,而是按比例缩放以比较图表。 - Defcon
缩放是指哪方面?主图表上吗?您可以通过将证券价格除以初始价格水平,使它们在绘图前都以1(例如)开头。 - FXQuantTrader
按照获得的百分比进行缩放,类似于谷歌图表,可以叠加不同的股票。我想添加RSI路径,以便我可以看到趋势。 - Defcon
请参见上面的第二次编辑。这正是我第一条评论所建议的,似乎谷歌也是这样做的。这回答了你的问题,并添加了一些额外的功能(格式化),你可能会发现在使用chart_Series功能时很有用。 - FXQuantTrader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接