出于兴趣,RTAQ 是否提供其他 R 包中没有的东西?0.1 版是两年多前发布的,所以它看起来像是一个死项目。无论如何,您仍然可以使用 XTS 的to.minute()
功能,因为 RTAQ 似乎使用 xts 对象。
这是我用来获取刻度并转换为条形的一些示例代码,以及添加其他列,例如平均值/标准差:
k=60
...
bars=to.period(x,k,period="secs")
colnames(bars)=c("Open","High","Low","Close")
ep=endpoints(x,"secs",k)
bars$Volume=period.apply(x,ep,length)
bars$mean=period.apply(x,ep,mean)
bars$sd=period.apply(x,ep, function(x){apply(x,2,sd)})
align.time(bars,k) #Do this last
而不是align.time
我使用align.time.down
, 以便从 06:00:00 到 06:00:59.999 的刻度进入标有“06:00:00”的条,而不是标有“06:01:00”的条。这与我拥有的历史数据格式相匹配。如果你需要它,定义是:
align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)}
最后,如果您有一整分钟没有刻度,并且仍然希望在您的数据中为它们提供一个条形图,我使用它(与上面相同的 k=60):
full_index=do.call("c",mapply(
seq.exclude_final_period.POSIXt,period_from,period_to,by=k,SIMPLIFY=F
))
bars=merge(bars,xts(,full_index),all=TRUE)
seq.exclude_final_period.POSIXt
函数定义如下:
#' Helper for process_one_day_of_ticks(); intended as a
#' replacement for seq.POSIXt (which will not exclude the final period).
#' @internal Use from=from+by instead of to=to-by to exclude the
# first period instead.
seq.exclude_final_period.POSIXt=function(from,to,by){
to=to-by #Make the final entry exclusive
seq(from,to,by)
}
period_from
和period_to
是POSIXct
对象,描述了您的交易时段的开始和结束。