Crie seu próprio indicador - I
Até agora, você usou indicadores totalmente pré-programados por meio da função add.indicator(). Agora é hora de escrever e aplicar o seu próprio indicador.
Sua função de indicador vai calcular a média de dois indicadores diferentes para criar um RSI de 3,5. Veja como:
- Receba uma série de preços.
- Calcule o RSI 3.
- Calcule o RSI 4.
- Retorne a média do RSI 3 e do RSI 4.
Esse RSI pode ser visto como um RSI 3,5, porque é mais longo que um RSI 3 e mais curto que um RSI 4. Ao fazer a média, esse indicador considera o impacto de quatro dias atrás, continua mais rápido que um simples RSI 4 e ainda reduz o ruído tanto do RSI 3 quanto do RSI 4.
Neste exercício, você vai criar uma função para esse indicador chamada calc_RSI_avg() e adicioná-la à sua estratégia strategy.st. Todos os pacotes relevantes já estão carregados para você.
Este exercício faz parte do curso
Negociação financeira em R
Instruções do exercício
- Crie e nomeie uma função
calc_RSI_avgcom três argumentosprice,n1en2, nessa ordem. - Calcule um RSI com retrospecto
n1chamadoRSI_1. - Calcule um RSI com retrospecto
n2chamadoRSI_2. - Calcule a média de
RSI_1eRSI_2. Chame isso deRSI_avg. - Defina o nome da coluna de
RSI_avgcomoRSI_avgusando colnames() e retorneRSI_avg. - Adicione esse indicador à sua estratégia usando entradas
n1 = 3en2 = 4. Rotule esse indicador comoRSI_3_4.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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 = ___)