Usar IBrokers de R va a ser la ruta más fácil. Un ejemplo rápido de captura de datos en el disco sería:
library(IBrokers)
tws <- twsConnect()
aapl.csv <- file("AAPL.csv", open="w")
# run an infinite-loop ( <C-c> to break )
reqMktData(tws, twsSTK("AAPL"),
eventWrapper=eWrapper.MktData.CSV(1),
file=aapl.csv)
close(aapl.csv)
close(tws)
Esto enviará una salida estilo CSV al disco. Además, los datos pueden almacenarse en objetos xts dentro del bucle, que pueden añadirse o rellenarse para proporcionar un objeto constante en memoria que se utilice para el análisis. Los objetos pueden ser compartidos con muchas herramientas - incluyendo el uso del paquete RBerkeley en CRAN para compartir objetos con otros programas con enlaces Berkeley DB. Este último enfoque, si se gestiona de forma inteligente es muy, muy rápido.
Dado el límite de símbolos de IB (100 concurrentes más o menos) y las actualizaciones de 250ms - R normalmente puede manejar todo esto sin romper a sudar (es decir, la JVM que ejecuta el TWS de IB o incluso el cliente IBGateway es probable que sea muy superior al proceso R/IBrokers en términos de uso de la CPU).
Incluso puede ampliar la sintaxis anterior para registrar más de un símbolo pasando una lista de Contratos, aumentando el número en el eWrapper, y asegurándose de tener una lista adecuada de archivos en los que escribir.
En términos de algo más cercano al almacenamiento/acceso a largo plazo, los paquetes a los que se refirió Josh (mmap e indexación) también son muy útiles. He dado charlas con algunos ejemplos de datos de opciones básicas que tienen un tamaño de 3-4GB sin columnas derivadas (12GB en total), y puedo sacar usando la sintaxis de subconjuntos al estilo de R cualquier subconjunto que necesite casi instantáneamente. por ejemplo, encontrar 90k+ contratos para AAPL en 2009 (de 70MM de filas) tomó decenas de milisegundos. Todo sin guardar nada en la RAM, y todo corriendo en un portátil con 2GB de RAM.
Es probable que pronto consiga reunir más material de presentación para estos últimos paquetes, y daré alguna charla en la próxima R/Finanzas conferencia en Chicago. También estoy planeando algunos talleres públicos a través de lemnica relacionados con R e IB para 2011.
1 votos
Puede usar este: datatime.eu/public/gbot/TickDataBacktesting.htm#tickgrabber