Una de las mejores formas de trabajar en algoritmos de trading o automatizar estudios técnicos es descargar lo datos de precios históricos directamente desde fuentes en la web.  Este proceso es bastante sencillo y práctico en R cuando nos referimos a acciones de los Estados Unidos.  Para otros mercados y datos fundamentales se necesitan otras fuentes.  

Lo primero que necesitamos es instalar el paquete ‘BatchGetSymbols’ con el comando 

install.packages('BatchGetSymbols')   

Una vez instalado el paquete, debemos cargarlo  

library(BatchGetSymbols) 

Con el paquete cargado procederemos a guardar en variables los diferentes parámetros que se necesitan para utilizar la función de descarga.   La información necesaria es la fecha inicial de la serie, la fecha final, la frecuencia de los datos y los tickers de las acciones que se desean traer.  

# Definimos las variables necesarias.  

fechaInicial  <- Sys.Date() – 250  # fecha del sistema menos 250 días 

fechaFinal <- Sys.Date() # Fecha del sistema cómo fecha final 

freqDatos <- 'daily'  # Frecuencia de los datos. 

acciones <- c('MSFT', 'AAPL', 'TSLA', 'GPRO')  # Vector con las acciones que se quiere descargar 

ahora se deben descargar los datos con la función BatchGetSymbols 

Datos <- BatchGetSymbols(tickers = acciones, first.date = fechaInicial, last.date = fechaFinal,         freq.data = freqDatos,  cache.folder = file.path(tempdir(), 'BGS_Cache') )  

“Datos” contiene dos listas, la primera con datos de control o información de la descarga y la segunda los datos de las acciones.  

# para verificar la descarga 

print(l.out$df.control) 

# Para conocer la estructura del DataFrame que contiene las series históricos.  

str(l.out$df.tickers) 

head(l.out$df.tickers) 

Luego de verificar la descarga se debe cargar la lista de precios históricos en una nueva variable, en este caso la variable acciones.  

acciones <- l.out$df.tickers 

head(acciones) 

names(acciones) 

En el Dataframe de datos históricos se encuentra la columna ticker la cual contiene el ticker de la acción, así que si se desea seleccionar los datos de una sola acción se deberá filtrar el DataFrame por esta columna. 

# Seleccionar la acción de Tesla 

accion_sel <- 'FB' 

# Se seleccionarán las columnas de información de precio y volumen.  

accion <- acciones[acciones$ticker == accion_sel, c(7,1:5)] 

head(accion) 

# Por último se asignarán nombres de columnas en español y se reiniciará el índice.  

names(accion) <- c('Fecha', 'Apretura', 'Maximo', 'Minimo', 'Cierre', 'Volumen') 

head(accion) 

rownames(accion) <- NULL 

Una segunda opción es usar el paquete tidyquant. 

install.packages("tidyquant") 

library(tidyquant)  

AAPL <- tq_get("AAPL", get="stock.prices", from= "2016-09-01", to= "2017-12-31") 

head(AAPL) 

AAPL <- data.frame(AAPL) 

head(AAPL)