2016-07-01 20 views
6

Próbuję wykreślić dwa wykresy na jednym chartSeries w quantmod w R. Mam pewne trudności z robieniem tego.Dodanie serii wielu wykresów w Quantmod R

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

Odpowiedz

11

Można użyć chart_Series zamiast chartSeries.

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

A jeśli chcesz RSI poniżej w panelu podrzędnym, po prostu dodaj add_RSI().

Innym podejściem jest użycie wersji> = 0.10.0 z xts (czyli nie używać quantmod w ogóle), które można uzyskać z https://github.com/joshuaulrich/xts (0.10.0 nie jest jeszcze na CRAN). Nowa funkcja plot w xts jest bardzo przyjazna z jednoczesnym wykreślaniem wielu kolumn obiektu xts. Zapoznaj się z ?plot.xts po przykłady nowych funkcji.

Edit # 2:

Aby zobaczyć zmiany względnych łatwiej można znormalizować swoją serię cen na wiele sposobów. Jest to typowe podejście (stosując 0 pochodzenie jest to, co Google robi wykresy):

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

+0

czy istnieje sposób do normalizacji wykresu? Więc nie ma danych o bezwzględnych cenach, ale skalowane w celu porównania wykresów. – Defcon

+0

Skalowane w jakim sensie? Na głównej mapie? Można podzielić ceny papierów wartościowych według początkowego poziomu ceny, tak aby obie zaczynały się od 1 (powiedzmy) przed wydrukowaniem? – FXQuantTrader

+0

Skalowane według procentu uzyskanego podobnie do wykresu Google, który może pokrywać różne zasoby. Chciałem też dodać ścieżki rsi, aby zobaczyć trendy. – Defcon

Powiązane problemy