Question

I have a problem while working with hourly data of fx rates. I've read from a csv file, the following way:

csv-file like:

 Date,Open,High,Low,Close,Volume

 2011-08-11 03:00:00,1.41758,1.42205,1.41625,1.42174,8974 

 ...

 2011-08-12 04:00:00,1.42175,1.42413,1.42067,1.42172,7229

 ...

2011-12-30 05:00:00,1.42173,1.42341,1.42062,1.42171,6703

... 


raw<- read.delim2("~/R/Data/EURUSD60.csv",header=TRUE,sep=",") 

 stripday<-strptime(raw$DATE,format="%Y%m%d") 
 fxdata<-data.frame(stripday,raw) 

 write.table(fxdata,"~/R/Data/EURUSD60.csv",quote=FALSE,sep=",",row.names=FALSE) 

 EURUSD<-as.xts(read.zoo("~/R/Data/EURUSD60.csv",sep=",",format="%Y-%m-%d %R",tz="GMT",header=T))

I then set up a couple of indicators and the following model:

 myATR <- function(x) ATR(HLC(x))[,'atr'] 
 mySMI <- function(x) SMI(HLC(x))[,'SMI'] 
 myADX <- function(x) ADX(HLC(x))[,'ADX'] 
 myAroon <- function(x) aroon(x[,c('High','Low')])$oscillator 
 myBB <- function(x) BBands(HLC(x))[,'pctB'] 
 myChaikinVol<-function(x)Delt(chaikinVolatility(x[,c("High","Low")]))[,1] 
 myCLV <- function(x) EMA(CLV(HLC(x)))[,1] 
 myMACD <- function(x) MACD(Cl(x))[,2] 
 mySAR <- function(x) SAR(x[,c('High','Close')]) [,1] 
 myVolat <- function(x) volatility(OHLC(x),calc="garman")[,1] 
 myEMA10 <- function(x) EMA(Cl(x),n=10)[,1] 
 myEMA20 <- function(x) EMA(Cl(x),n=20)[,1] 
 myEMA30 <- function(x) EMA(Cl(x),n=30)[,1] 
 myEMA50 <- function(x) EMA(Cl(x),n=50)[,1] 
 myEMA60 <- function(x) EMA(Cl(x),n=60)[,1] 

 data.model <- specifyModel(Delt(Cl(EURUSD)) ~ 
 myATR(EURUSD) + mySMI(EURUSD) + myADX(EURUSD) + myAroon(EURUSD) + 
 myBB(EURUSD) + myChaikinVol(EURUSD) + myCLV(EURUSD) +myEMA10(EURUSD) +myEMA20(EURUSD)      +myEMA30(EURUSD) +myEMA50(EURUSD) + myEMA60(EURUSD) +
 CMO(Cl(EURUSD)) + EMA(Delt(Cl(EURUSD))) + 
 myVolat(EURUSD) + myMACD(EURUSD) + RSI(Cl(EURUSD)) + 
 mySAR(EURUSD) + runMean(Cl(EURUSD)) + runSD(Cl(EURUSD))) 

I then tried to do the following:

 Tdata.train <- as.data.frame(modelData(data.model, 
 data.window=c('2011-08-03','2011-12-30'))) 

This gave me the following error:

 Warnings: 
 1: In which(index(model.data) >= as.Date(data.window[1], origin = "1970-01-01")) :
 incopatible methods ("Ops.POSIXt", "Ops.Date") für ">=" 
 2: In which(index(model.data) <= as.Date(data.window[2], origin = "1970-01-01")) :
 incopatible methods ("Ops.POSIXt", "Ops.Date") für "<=" 
 3: In max(i) : kein nicht-fehlendes Argument für max; gebe -Inf zurück 

Can someone please please tell me what I am doing wrong? I guess it is something very simple and I'm just stupid here. Thank you guys very much!!!

Was it helpful?

Solution

The problem lies in model.data function, please try this:

f3 <- function(...) as.POSIXct(paste(...), format = "%Y-%m-%d %H:%M")


    My_modelData <- function(x, data.window = NULL, exclude.training = FALSE)
{
  model.data <- x@model.data
  if (!is.null(data.window)) {
    if (length(data.window) > 2) {
      model.data <- model.data[index(model.data) %in% data.window]
    }
    else {
      start.date.index <- index(model.data[which(index(model.data) >=f3(data.window[1]))])
      end.date.index <- index(model.data[which(index(model.data) <= f3(data.window[2]))])
      date.range <- intersect(start.date.index, end.date.index)
      model.data <- model.data[as.POSIXct(date.range, origin="1970-01-01")]
    }
  }
  if (exclude.training == TRUE) {
    model.data <- model.data[!index(model.data) %in% x@model.data]
  }
  return(model.data)
} 

The code was found here: http://r.789695.n4.nabble.com/Quantmod-modelData-with-datetime-format-td3860416.html. I have modified it a little bit.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top