我有一个包含OHLC数据的data.frame
对象:
head(data,3)
Timestamp Open High Low Close Vol
2016-02-05 13:45:00 1161.9 1162.4 1161.7 1161.8 592
2016-02-05 13:50:00 1161.8 1163.2 1161.7 1162.5 643
2016-02-05 13:55:00 1162.5 1164.7 1162.1 1164.5 1072
然后我创建另一个data.frame,提取High和Low cols:
x <- data[,c("High","Low")]
给出了:
head(x,3)
Timestamp High Low
2016-02-05 13:45:00 1162.4 1161.7
2016-02-05 13:50:00 1163.2 1161.7
2016-02-05 13:55:00 1164.7 1162.1
然后转换为每小时:
x <- xts::to.hourly(x, indexAt='startof')
以某种方式加入&#34; Open&#34;和&#34;关闭&#34;列虽然它们不存在于&#34; x&#34;:
中head(x,3)
Timestamp x.Open x.High x.Low x.Close
2016-02-05 13:45:00 1162.4 1164.7 1162.4 1164.7
2016-02-05 14:00:00 1167.2 1176.7 1167.1 1176.7
2016-02-05 15:00:00 1176.3 1176.3 1174.9 1176.2
“打开”和“关闭”列中的值就好像它们来自data
而不是x
,但是当我没有将data
传递给该函数时,它是如何得到这些值的?
显然这里有一个简单的方法是删除(再次)to.hourly
函数后的打开和关闭列,但这是预期的行为,还是我错过了一些非常简单的东西?
答案 0 :(得分:2)
输出作为预期行为是有意义的。你减少5分钟到小时栏。 to.hourly
将尝试根据您的输入以较低的频率制作OHLC时间序列,而不仅仅是每小时HL时间序列。
to.hourly
是包to.period
中xts
的包装器。根据{{1}}的文档:
将OHLC或单变量对象转换为指定的周期较低值 比给定的数据对象。例如,将每日系列转换为a 每月系列,或每月系列,每年一个或一分钟 系列小时系列。
结果将包含给定时间段的打开和关闭,如 以及新时期的最大值和最小值,反映在 分别是新的高点和低点。
你没有在13:55:00之后显示5分钟的酒吧,所以1167.2小时酒吧的1167.2打开是否有意义是不明显的,因为你不知道,只使用HL数据,无论是高价还是低价(首先用作开盘价的代理)。您必须查看源代码,以了解在生成每小时开窗价格时所做的近似操作(仅根据HL条数据在逻辑上无法确定是对还是错)。如果你正在处理日内条形数据,那么至少知道HLC是有帮助的,而不仅仅是HL。