2016-07-01 4 views
6

R의 quantmod에서 하나의 chartSeries에 두 개의 차트를 플롯하려고합니다.이 작업을 수행하는 데 약간의 어려움이 있습니다.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() 

답변

11

대신 chartSerieschart_Series 사용할 수 있습니다.

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

그리고 하위 패널에서 RSI를 아래에 추가하려면 add_RSI()을 추가하십시오.

또 다른 방법은 xts의 버전> = 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

+0

가? 그래서 그것은 절대 가격 데이터가 아니지만 차트를 비교하기 위해 스케일링 – Defcon

+0

어떤 의미에서 스케일링 되었습니까? 메인 차트에? 보안 가격을 초기 가격 수준으로 나눠서 플로팅하기 전에 둘 다 1에서 시작할 수 있습니까? – FXQuantTrader

+0

다른 주식을 오버레이 할 수있는 Google 차트와 비슷한 비율로 배율이 적용됩니다. 트렌드를 볼 수 있도록 rsi 경로도 추가하고 싶었습니다. – Defcon