親愛的名單, 我試圖在R的技術分析,使用包TTR,quantmod,動物園 我有黃金日價格數據的模樣:R:技術分析年度業績
> library(quantmod)
> library(timeSeries)
> gold <- read.csv("gold.csv")
> g <- as.xts(gold, dateFormat = "Date")
> g.c<-Cl(g)
> head(g)
Open High Low Close
1999-01-08 292.2 293.3 291.2 292.0
1999-01-11 292.3 294.3 291.6 293.6
1999-01-12 292.2 292.5 288.0 289.3
1999-01-13 288.8 289.1 285.0 287.0
1999-01-14 287.4 287.4 285.0 287.4
1999-01-15 286.7 287.6 286.4 287.4
> first(g)
Open High Low Close
1999-01-08 292.2 293.3 291.2 292
> last(g)
Open High Low Close
2010-10-20 1332 1346.5 1330.8 1343.6
我通過隨機 指示器已經定義由日收益和信號產生的信號(在這種情況下唐契安通道)
命中率則
> x<-g.c
> timeseries.eval <- function(x,signal) {
+ returns <- returns(x)
+ hit.rate <- function(x,signal) {
+ rate<- length(which(signal*returns> 0))/length(x)
+ rate
+ }
+ round(data.frame(N=length(x),HitRate=hit.rate(x,signal)),3)
+ }
> timeseries.eval(x, sig.dc)
N HitRate
1 3074 0.628
這給了我整個期間的結果,但是我想看到命中 比率爲每年和特定時期(可以說100天) 我已經嘗試quantmod的功能apply.yearly()
,但它沒有奏效。 此外,我也嘗試過
> years <- unique(substr(g[,"Date"],1,4))
Error in dimnames(cd) <- list(as.character(index(x)), colnames(x)) :
'dimnames' applied to non-array
而
> j<-as.data.frame(g)
> years <- unique(substr(y,1,4))
> years
[1] "1999" "2000" "2001" "2002" "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010"
智能迴路中的任何想法將是有價值的(注:有必要 維持秩序XTS類來封裝的指標適當工作 TTR)
亞歷
請提供一個自包含的,可重複的例子。即,通過`getSymbols(「GLD」)`而不是自己的數據使用來自GLD ETF的數據,並定義您使用的所有變量(`sig.dc`未定義)。另外,「我嘗試了XYZ函數,但它不起作用」並沒有幫助。請告訴我們*爲什麼*它不適合你。 – 2011-01-31 14:12:31