我正在尝试进入 R,因为对于一些个人项目,我需要 R 和 quantmod 来为我创建 OHCL 图表。我被困在创建蜡烛图的步骤中,我不确定我理解为什么。使用“每日”输入文件可以正常工作,但尝试从每小时数据创建每小时图表只是一个很大的失败。
这是我正在使用的数据示例:
> zz <- read.csv(dataFile, sep=",", header=TRUE, stringsAsFactors=T)
> head(zz)
DATE OPEN HIGH LOW CLOSE VOLUME
1 2012-10-23 02:00:00 22 22 22 22 171
2 2012-10-23 03:00:00 22 22 22 22 171
3 2012-10-23 04:00:00 22 22 22 22 171
4 2012-10-23 05:00:00 22 22 22 22 171
5 2012-10-23 06:00:00 22 22 22 22 171
6 2012-10-23 07:00:00 22 22 22 22 171
如您所见,第一个数据都是相同的,但我的输入文件中有一年的数据,最后价格上涨到 96。
我接下来要做的是从这个 zz 数据框创建我的 xts 对象,如下所示:
> xx <- xts(zz[,2:6], order.by=as.POSIXct(zz[, 1], tz="", format="%Y-%m-%d %H:%M:%S"))
> head(xx)
OPEN HIGH LOW CLOSE VOLUME
2012-10-23 02:00:00 22 22 22 22 171
2012-10-23 03:00:00 22 22 22 22 171
2012-10-23 04:00:00 22 22 22 22 171
2012-10-23 05:00:00 22 22 22 22 171
2012-10-23 06:00:00 22 22 22 22 171
2012-10-23 07:00:00 22 22 22 22 171
> tail(xx)
OPEN HIGH LOW CLOSE VOLUME
2013-10-22 06:00:00 96 96 96 96 115
2013-10-22 07:00:00 96 96 96 96 115
2013-10-22 08:00:00 96 96 96 96 115
2013-10-22 09:00:00 96 96 96 96 115
2013-10-22 10:00:00 96 96 96 96 115
2013-10-22 11:00:00 96 96 96 96 118
现在,看起来(对我来说)xts 是正确的。未命名的第 1 列中有日期+时间,其余列正确命名,以便 quantmod 中的 chartCandle() 理解。
这是我尝试绘制它时发生的情况:
> candleChart(xx, name=tickerName, subset="last 3 weeks", bar.type = "ohlc")
Error in periodicity(x) : can not calculate periodicity of 1 observation
> candleChart(xx)
Error in periodicity(x) : can not calculate periodicity of 1 observation
我不确定为什么第一个参数是我的 XTS 对象的任何子集?另外,我发现:
> periodicity(xx)
Error in periodicity(xx) : can not calculate periodicity of 1 observation
> periodicity(xx)
Error in periodicity(xx) : can not calculate periodicity of 1 observation
第二次调用看起来是正确的,但我不确定为什么 periodity(xx) 会认为我的 xts 中只有 1 个观察值?