5 votos

Crear Garrapata Bares con R

¿Cómo puedo obtener OHLC bares con recuento de marca (es decir, 500 pulsos) en lugar de tiempo?

Yo prefiero quantmod. Actualmente tengo la garrapata de datos y ya se puede convertir a minutos de bares utilizando xts.

# I'd like this to be 500 ticks, instead of 5 seconds
CL.x <- to.period(CL.tick, "seconds", k=5)

2voto

BigCanOfTuna Puntos 210

Yo no uso quantmod, pero usted puede agregar los datos de uso de R tapply. Supongamos que usted tiene una garrapata de datos, y estos se ordenan en el tiempo. Vamos a hacer algunos datos.

ticks <- cumprod(1 + rnorm(100020, sd = 0.001))

Calcular el número de barras.

n <- ceiling(length(ticks)/500)
bars <- rep(1:n, each = 500)[seq_along(ticks)]

Calcular open, high, low cierre de cada barra y se combinan en una matriz.

ohlc.list <- tapply(ticks, bars,
                    function(x) c(x[1], max(x), min(x), x[length(x)]))
ohlc <- do.call(rbind, ohlc.list)
colnames(ohlc) <- c("open", "high", "low", "close")

Usted puede ahora procesar estas barras como quiera; quizás adjuntar una marca de tiempo para cada barra, y la trama ellos.

1voto

vishal Puntos 1

He aquí lo terminé usando, gracias a Enrico.

Mis datos había CL.las garrapatas (DateTime y Abierta), por ejemplo en CL.las garrapatas <- CL[c("DateTime", "Abrir")]

Donde DateTime es POSIXct

# Combine -----
tickCount = 500
ticks = CL.ticks$Open
## get num bars
n <- ceiling(length(ticks)/tickCount)
bars <- rep(1:n, each = tickCount)[seq_along(ticks)]

## make a bar
ohlc.list <- tapply(ticks, bars, function(x) c(x[1], max(x), min(x), x[length(x)]))
ohlc <- do.call(rbind, ohlc.list)
colnames(ohlc) <- c("open", "high", "low", "close")

# Grab the opening time
bars.dt <- CL$DateTime[seq(1, length(CL$DateTime), tickCount)]
ohlc.df <- data.frame(ohlc)

## Add time to rows
ohlc.df$DateTime <- bars.dt
ohlc.df$DateTime <- make.time.unique(bars.dt, eps=0.00001)
rownames(ohlc.df) = ohlc.df$DateTime
ohlc.df$DateTime = NULL

## Plot
chartSeries(ohlc.df)

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