Dear List,
I am trying for technical analysis with R, using packages TTR, quantmod, zoo
I have daily prices of gold, the data looks like:
> 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
I have defined signals generated by daily returns and signals by random
indicator (in this case donchian channels)
The hit ratio is then
> 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
This gives me results for the whole period, however I want to see hit
ratio for every year and also for specific period (lets say 100 days)
I have tried quantmod´s function apply.yearly(), but it did not work.
Moreover, I have also tried
> years <- unique(substr(g[,"Date"],1,4))
Error in dimnames(cd) <- list(as.character(index(x)), colnames(x)) :
'dimnames' applied to non-array
whereas
> 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"
Any ideas for smart loop would be valuable (Note: It is necessary to
maintain xts class in order to proper work of indicators from package
TTR )
Alex
You can do this with
apply.yearly, but all the data to be split by period needs to be in one object becauseapply.yearlyonly splitsxand notsignal(or anything else passed via...).Also, your “note” that TTR requires xts objects is incorrect. TTR functions use xts internally, which allows them to handle most time-series classes (xts, zoo, timeSeries, chron, its, irts, fts, etc.) as well as data.frame, matrix, and numeric/integer vectors. If the object is coercible to xts, TTR functions will return an object of the same class given to them.
For example: