Programa tu propio indicador - I
Hasta ahora, has usado indicadores totalmente predefinidos mediante la función add.indicator(). Ahora toca que escribas y apliques tu propio indicador.
Tu función de indicador calculará la media de dos indicadores distintos para crear un RSI de 3,5. Así es como lo harás:
- Recibe una serie de precios.
- Calcula el RSI 3.
- Calcula el RSI 4.
- Devuelve la media del RSI 3 y el RSI 4.
Este RSI puede entenderse como un RSI 3,5, porque es más largo que un RSI 3 y más corto que un RSI 4. Al promediar, este indicador tiene en cuenta el impacto de hace cuatro días, sigue siendo más rápido que un RSI 4 simple y además reduce el ruido tanto del RSI 3 como del RSI 4.
En este ejercicio, crearás una función para este indicador llamada calc_RSI_avg() y la añadirás a tu estrategia strategy.st. Todos los paquetes relevantes ya están cargados para ti.
Este ejercicio forma parte del curso
Trading financiero en R
Instrucciones del ejercicio
- Crea y nombra una función
calc_RSI_avgcon tres argumentosprice,n1yn2, en ese orden. - Calcula un RSI con retroceso
n1llamadoRSI_1. - Calcula un RSI con retroceso
n2llamadoRSI_2. - Calcula la media de
RSI_1yRSI_2. LlámalaRSI_avg. - Establece el nombre de columna de
RSI_avgaRSI_avgusando colnames(), y devuelveRSI_avg. - Añade este indicador a tu estrategia usando entradas
n1 = 3yn2 = 4. Etiqueta este indicador comoRSI_3_4.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Write the calc_RSI_avg function
calc_RSI_avg <- function(price, n1, n2) {
# RSI 1 takes an input of the price and n1
RSI_1 <- RSI(price = price, n = ___)
# RSI 2 takes an input of the price and n2
RSI_2 <- RSI(price = price, n = ___)
# RSI_avg is the average of RSI_1 and RSI_2
RSI_avg <- (___ + ___)/2
# Your output of RSI_avg needs a column name of RSI_avg
colnames(RSI_avg) <- "___"
return(___)
}
# Add this function as RSI_3_4 to your strategy with n1 = 3 and n2 = 4
add.indicator(strategy.st, name = ___, arguments = list(price = quote(Cl(mktdata)), n1 = ___, n2 = ___), label = ___)