Estoy intentando meterme en R porque para algún proyecto personal necesito que R y quantmod me creen gráficos OHCL. Estoy atascado en el paso de creación del candleChart, y no estoy seguro de entender por qué. Usar un archivo de entrada 'diario' funciona bien, pero intentar crear un gráfico horario a partir de datos horarios es un gran fracaso.
Aquí hay una muestra de los datos que estoy utilizando:
> 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
Como puedes ver, los primeros datos son todos iguales pero hay un año de datos en mi archivo de entrada, y los precios suben hasta el 96 al final.
Lo que hago a continuación es crear mi objeto xts a partir de este marco de datos zz así:
> 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
Ahora, parece que (para mí) el xts es correcto. Hay la fecha+hora en las columnas sin nombre 1 y el resto de columnas nombradas correctamente para ser entendidas por chartCandle() de quantmod.
Esto es lo que ocurre cuando intento trazarlo :
> 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
No estoy seguro de por qué el primer argumento sería cualquier subconjunto de mi objeto XTS ? Además, he encontrado que :
> 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
La segunda llamada parece correcta, pero no estoy seguro de por qué periodicity(xx) piensa que sólo hay una observación en mi xts?