R 使用quantmod设置打开和关闭时间

R 使用quantmod设置打开和关闭时间,r,quantmod,R,Quantmod,我正在研究R的期货合约。期货市场在美国东部时间下午6点开放,第二天下午5点结束。我在处理小时级别的数据。当我使用quantmod时,它假定在上午12:00打开,在晚上11:59关闭。有没有办法改变开门和关门时间,或者有更好的办法来解决这个问题?这里通常的技巧是设置一个时区,以便午夜与一天的结束时间相匹配。EST的问题在于夏季/冬季切换,但由于您的市场是23小时,而不是24小时,您不需要处理它(与外汇市场相反) 如果您试图一次处理一天的数据,在R中,我使用下面的示例代码。它是对rollpapply

我正在研究R的期货合约。期货市场在美国东部时间下午6点开放,第二天下午5点结束。我在处理小时级别的数据。当我使用quantmod时,它假定在上午12:00打开,在晚上11:59关闭。有没有办法改变开门和关门时间,或者有更好的办法来解决这个问题?

这里通常的技巧是设置一个时区,以便午夜与一天的结束时间相匹配。EST的问题在于夏季/冬季切换,但由于您的市场是23小时,而不是24小时,您不需要处理它(与外汇市场相反)

如果您试图一次处理一天的数据,在R中,我使用下面的示例代码。它是对
rollpapply.right
的修改。我的脚本和数据都在UTC时区。(
data
可能是刻度数据、小时数据或两者之间的任何数据)

基本思想是获取数据的副本,将该副本移动到不同的时区,在其上运行
端点
,然后在原始数据上使用
端点
的结果。“7*3600”调整将从下午5点向前移动到午夜

rollapply_chunks.FX.xts=function(data,width,FUN,...,on="days",k=1){
data <- try.xts(data)

x2 <- data
index(x2) <- index(x2)+(7*3600)
indexTZ(x2) <- 'America/New_York'

ep <- endpoints(x2,on=on,k=k)    #The end point of each calendar day (when on="days").
    #Each entry points to the final bar of the day. ep[1]==0.

if(length(ep)<2){
    stop("Cannot divide data up")
}else if(length(ep)==2){  #Can only fit one chunk in.
    sp <- 1;ep <- ep[-1]
}else{
    sp <- ep[1:(length(ep)-width)]+1
    ep <- ep[(width+1):length(ep)]
}

xx <- lapply(1:length(ep), function(ix) FUN(.subset_xts(data,sp[ix]:ep[ix]),...) )
xx <- do.call(rbind,xx)   #Join them up as one big matrix/data.frame.

tt <- index(data)[ep]  #Implicit align="right". Use sp for align="left"
res <- xts(xx, tt)
return (res)
}
rollappy_chunks.FX.xts=函数(数据、宽度、乐趣,…,on=“days”,k=1){

数据你能告诉我们你到底想做什么吗?你是从更高的频率(即每小时数据)计算每日OHLC信息吗?我正在计算sd、平均值、趋势,并绘制一些内置功能,如MACD和BBands。通常每小时的刻度太细,所以我需要向上移动到每日或每月的刻度(到.daily,到.monthly).即打开和关闭时间不同步时。