1 votos

¿Cómo trazar datos horarios personalizados en R con quantmod?

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?

2voto

doekman Puntos 5187

periodicity llamadas:

p <- median(diff(.index(x)))
if (is.na(p)) 
  stop("can not calculate periodicity of 1 observation")

p puede ser NA si x tiene 1 observación, o si tiene valores perdidos en su índice (porque no hay na.rm=TRUE en el median llamar.

> xx <- xts(1:10, as.POSIXct(c(1:5,NA,7:10),origin='1970-01-01'))
> periodicity(xx)
Error in periodicity(xx) : can not calculate periodicity of 1 observation
> candleChart(xx)
Error in periodicity(x) : can not calculate periodicity of 1 observation

El NA en su índice probablemente tenga que ver con el horario de verano al convertir zz[, 1] a POSIXct .

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X