ComeçarComece de graça

Crie seu próprio indicador - II

Embora o RSI seja razoável, ele está um pouco defasado em termos de indicadores. Neste exercício, você vai programar do zero uma versão simplificada de outro indicador. Esse indicador é o David Varadi Oscillator (DVO), criado por David Varadi, diretor de pesquisa quantitativa.

A proposta desse oscilador é similar à do RSI: encontrar oportunidades de compra em quedas temporárias e de venda em altas temporárias. Além dos dados de mercado obrigatórios, uma função de oscilador recebe dois períodos de lookback.

Primeiro, a função calcula a razão entre o preço de fechamento e a média dos preços máximo e mínimo. Em seguida, aplica uma SMA a essa razão para suavizar o ruído, geralmente em um período muito curto, como dois dias. Por fim, usa a função runPercentRank() para obter a classificação percentual móvel dessa razão média e multiplica por 100 para convertê-la em uma quantidade de 0 a 100.

Pense em como estudantes recebem notas em percentis após fazer um teste padronizado (por exemplo, se uma estudante tirou 800 na parte de matemática, ela pode estar no 95º percentil nacional). runPercentRank() faz o mesmo, só que ao longo do tempo. Esse indicador fornece a classificação da observação mais recente no contexto de um período passado especificado pelo usuário. Por exemplo, se algo tem valor de runPercentRank de 0,90 usando lookback de 126, isso significa que está no 90º percentil quando comparado a si mesmo e às 125 observações anteriores.

Sua tarefa é implementar esse indicador e salvá-lo como DVO. Parte do código necessário já foi fornecida, e os pacotes quantstrat, TTR e quantmod estão carregados no seu workspace.

Este exercício faz parte do curso

Negociação financeira em R

Ver curso

Instruções do exercício

  • Crie e nomeie uma função, DVO, para o indicador descrito acima. Os três argumentos da sua função serão HLC, navg (padrão 2) e percentlookback (padrão 126).
  • A razão do fechamento (Cl()) de HLC dividida pela média dos preços máximo (Hi()) e mínimo (Lo()) já foi calculada para você.
  • Use SMA() para implementar uma média móvel dessa razão, parametrizada pelo argumento navg. Salve como avgratio.
  • Use runPercentRank() para implementar um sistema de classificação percentual para avgratio.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Declare the DVO function
DVO <- function(___, navg = ___, percentlookback = ___) {
  
  # Compute the ratio between closing prices to the average of high and low
  ratio <- Cl(HLC)/((Hi(HLC) + Lo(HLC))/2)
  
  # Smooth out the ratio outputs using a moving average
  avgratio <- SMA(ratio, n = ___)
  
  # Convert ratio into a 0-100 value using runPercentRank()
  out <- runPercentRank(___, n = percentlookback, exact.multiplier = 1) * 100
  colnames(out) <- "DVO"
  return(out)
}
Editar e executar o código