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

时间:2016-07-01 02:17:04

标签: r charts finance quantmod quantitative-finance

我试图在R中的quantmod中的一个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}}

1 个答案:

答案 0 :(得分:12)

您可以使用chart_Series代替chartSeries

chart_Series(Cl(data$GLD))
add_TA(Cl(data$GDX), on = 1)

然后,如果您想在子面板中使用RSI,请添加add_RSI()

另一种方法是使用xts的版本&gt; = 0.10.0(即根本不使用quantmod),您可以从https://github.com/joshuaulrich/xts获取(0.10) .0还没有CRAN)。 plot中的新xts函数非常友好,可以同时绘制xts个对象的多个列。查看?plot.xts了解新功能的示例。

编辑#2:

要更轻松地查看相对更改,您可以通过多种方式规范价格系列。这是一种典型的方法(使用0来源是谷歌图表所做的):

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)

enter image description here