Calcular indicadores de análisis técnico en R

Hace unos años calcular indicadores como el ADX o el RSI podría ser tedioso y complicado, pero gracias a R y unos sencillos comandos se puedes crear un dataset para realizar estudios técnicos, gráficos e incluso alimentar algoritmos de Machine Learning.

El paquete que nos ayudará con la tarea es “TTR”.  Este paquete contiene 42 estudios técnicos, cada uno con sus correspondientes parámetros y componentes para el análisis.   Lo interesante de este paquete es que cada función colocará “NA” cuando el indicador aún no pueda ser calculado, de esta manera solo es necesario unir columnas, no se necesita realizar ningún ajuste de fechas para crear el dataser.

Para este ejercicio necesitaremos el paquete tidyquant y así traer la serie de precios de la acción de Apple.

# Lo primero es instalar paquetes
install.packages('TTR')
install.packages("tidyquant")

# Con los paquetes instalados debemos cargarlos
requiere(tidyquant)
require(TTR)
# Puedes consultar la página ofcicial del paquete en este link.

# Con la función tq_get cargamos los datos de la acción de Apple en AAPL
AAPL <- tq_get("AAPL", get="stock.prices", from= "2018-01-01", to= "2018-12-313")
# Para trabajar los datos debemos convertirlos en un Dataframe.
AAPL <- data.frame(AAPL)

# Verificamos los datos
head(AAPL)
names(AAPL)
str(AAPL)

# Con el Dataframe de precios ya se pueden hacer los cálculos necesarios para crear el dataset con algunos indicadores.
# La función SMA calcula el promedio móvil simple.  Lo calcularemos un promedio de 20 y 40 periodos con base en el cierre. 
sma20 <- SMA(AAPL[c('close')], n=20)
head(sma20, n=50)
# Calcular el promedio movil de 40 periodos, n= número de periodos.
sma40 <- SMA(AAPL$close, n=40)
head(sma40, n=50)

# Para calcular las bandas de bollinger se pueden especificar parámetros como los periodos de la media y el número de desviaciones estándar.
bb20 = BBands(AAPL$close, sd=2.0)
head(bb20 , n=50)

# Para calcular el RSI se deben definir el periodo para el cálculo de alzas y bajas.
rsi14 = RSI(AAPL$close, n = 14)
head(rsi14, n = 30)

# En el caso del MACD se tiene más parámetros.
macd <- MACD(AAPL$close, nFast=12, nSlow=26, nSig=9, maType=EMA)
head(macd, n=30)

# Con estos cálculos podemos unir todos los datos en un solo dataframe.
Estudio = data.frame(AAPL, sma20, sma40, bb20 ,rsi14, macd, adx)
head(Estudio, n=30)
str(Estudio)

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado