2012-05-31 61 views
2

我想在R中構建一個three line break chart,並想知道是否已經有一個包可以用來執行繪製圖表所需的計算,或者甚至更好地執行這兩個操作,即繪圖和計算。三行破解圖

我試過在rseek.org上搜索,也看過一些財務軟件包。到目前爲止沒有運氣。

+0

對於有望緩解 - http://www.stator-afm.com/three-line-break.html似乎給了一個很好的說明向下探底,以什麼這張圖實際上顯示。聽起來很簡單。 – thelatemail

+1

我不知道這樣的事情,但它會是quantmod/TTR的一個很好的補充。 –

回答

1

不是最乾淨的代碼,但它可能作爲進一步開發的基礎很有用。 closeval代表一些虛擬收盤價格值。

closeval <- c(50,48,47,47,59,60,57,48,42,50) 
cvlag <- c(NA,head(closeval,-1)) 
dset <- data.frame(closeval,cvlag) 
dset <- subset(dset,closeval!=cvlag | is.na(cvlag)) 
dset$cvlag2 <- c(NA,NA,head(dset$closeval,-2)) 

plot(dset$closeval) 

dset <- dset[2:nrow(dset),] 
dset$maxlag <- apply(dset[c("cvlag","cvlag2")],1,max,na.rm=TRUE) 
dset$minlag <- apply(dset[c("cvlag","cvlag2")],1,min,na.rm=TRUE) 

dset$change <- (dset$closeval-dset$cvlag) > 0 

dset$keyval[dset$change==FALSE] <- dset$minlag[dset$change==FALSE] 
dset$keyval[dset$change==TRUE] <- dset$maxlag[dset$change==TRUE] 

segments(
2:(nrow(dset)+1), 
dset$closeval, 
2:(nrow(dset)+1), 
dset$keyval, 
col=ifelse(dset$change==TRUE,"red","blue") 
) 

enter image description here