R如何将报价数据转换为OHLC每日OHLC数据,但从特定时间开始。 IE下午5:00,即芝加哥时间?

时间:2019-03-27 20:52:22

标签: r time-series xts

我需要为股票做这件事,例如道琼斯迷你期货,它从周日开始于下午5:00,在第二天芝加哥时间下午四点关闭。

这里的答案是:to.minutes using custom endpoints建议按所需时间段调整初始数据。因此,我在下午5点添加了7个小时以使其成为午夜。不幸的是,这由于夏时制而失败。我留意要看一年或更长时间的数据,并且需要正确的时间(包括DST)。

合同的平仓或结算不同于当天的最后一笔交易。我对所有这些结算数据都有单独的说明。每天组织起来,那一天就解决了。

index(settles) = as.POSIXct(paste(as.character(index(settle)),"17:00:00",sep=" "),tz = 'America/Chicago')

此代码强制我的日期定在芝加哥时间5:00 PM,并正确设置CST或CDT。下午5点是定居点生效的时间,应该是我的OHLC数据的时间范围。

此外,使用定居点作为间隔时间也可以适当地处理暂停和假期,假期和休假可能会超过24小时,但为期一天。

我唯一需要工作的方法是循环,在稳定时间之间提取数据并手动提取每天或极慢时间段内的OHL。

更新1:

这是我当前的代码:

settles = settleList[[1]]
index(settles) = as.POSIXct(paste(as.character(index(settle)),"17:00:00",sep=" "),tz = 'America/Chicago')
OpenHLC = matrix(0,ncol = 3,nrow = nrow(settles))
OpenHLC = cbind(OpenHLC,settles)
colnames(OpenHLC) = c("Open","High","Low","Close")
for (ii in seq(1:length(settles)))
{
  inst = instList[[1]]
  if (ii > 0) {
    temp1 = inst[paste(index(settles[ii-1]),index(settles[ii]),sep = "/")]
  } else {
    temp1 = inst[paste(index(settles[ii])-60*60*24,index(settles[ii]),sep = "/")]
  }
  if (nrow(temp1) > 0) {
    OpenHLC$Open[ii] = temp1$Trade.Price[1]
    OpenHLC$High[ii] = max(temp1$Trade.Price,OpenHLC$Close[ii])
    OpenHLC$Low[ii] = min(temp1$Trade.Price,OpenHLC$Close[ii])
  } else {
    OpenHLC$Open[ii] = OpenHLC$High[ii] = OpenHLC$Low[ii] = OpenHLC$Close[ii]
  }
}

这可以很好地工作,因为它不会非常慢,因为它一次只能一天进行一次操作。我认为应该有一个更好的矢量化形式。一个小的结果可以正确地跳过假期:

> OpenHLC
                     Open  High   Low Close
2018-12-20 17:00:00 23313 23428 22640 22997
2018-12-21 17:00:00 23015 23247 22373 22407
2018-12-24 17:00:00 22420 22572 21683 21700
2018-12-26 17:00:00 21743 22966 21453 22898
2018-12-27 17:00:00 22893 23197 22243 23153
2018-12-28 17:00:00 23121 23372 22958 23035
2018-12-31 17:00:00 23178 23349 23092 23268
2019-01-02 17:00:00 23305 23417 22791 23325
2019-01-03 17:00:00 23036 23123 22617 22659
2019-01-04 17:00:00 22693 23502 22565 23395
我发现与我有关的

Creating daily OHLC with custom starting time是一个非常相似的问题,答案使用不同的端点。我认为可以将沉降索引点用作端点,但是我尚未获得相同的结果。

0 个答案:

没有答案