2012-01-12 8 views
0

fxレートの時間別データを扱う際に問題があります。日中のfxレートのQuantmodでエラーが発生しました

CSVファイルのように:私はcsvファイルには、次の方法から読んだ

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:私は、指標のカップルと、次のモデルを設定

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)) 

その後、次の操作を実行しようとした:

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

これは私に次のエラーが発生しました

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 

私が間違っていることを教えてもらえますか?私はそれが非常に単純なものだと思うし、私はここでばかげている。皆さんありがとう!

+0

私はあなたがこれを投稿するべきだと思うstackoverflow – Seb

+0

私は[このサイト](http://lifeanalytics.blogspot.com/2011/01/forex-trading-with-r-part- 1.html)。なぜあなたは著者に尋ねないのですか? – nograpes

+0

こんにちはnograpes、私はその質問については著者に尋ねたが、彼が何をしたのは毎日の料金を使用することでした。代わりに時間単価を使用しました。コードは毎日のレートで正常に動作しますが、私は時間ごとのレートで使用するとこのエラーが発生します。私はこれがquantmodまたは索引付けに関するより一般的な質問であると思った。 – MarcoH

答えて

2

問題がmodel.data機能であり、これを試してください。

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


    My_modelData <- function(x, data.window = NULL, exclude.training = FALSE) 
{ 
    model.data <- [email protected] 
    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% [email protected]] 
    } 
    return(model.data) 
} 

コードがここに発見された:http://r.789695.n4.nabble.com/Quantmod-modelData-with-datetime-format-td3860416.html。私はそれを少し変更しました。

関連する問題