IniziaInizia gratis

Crea il tuo indicatore - II

Anche se l'RSI è valido, come indicatore è un po' datato. In questo esercizio, scriverai da zero una versione semplificata di un altro indicatore. L'indicatore si chiama David Varadi Oscillator (DVO), ideato da David Varadi, direttore della ricerca quantitativa.

Lo scopo di questo oscillatore è simile a quello dell'RSI: cerca opportunità per comprare su un calo temporaneo e vendere in un rialzo temporaneo. Oltre ai dati di mercato, una funzione di tipo oscillatore accetta due periodi di lookback.

Per prima cosa, la funzione calcola un rapporto tra il prezzo di chiusura e la media dei prezzi massimo e minimo. Poi applica una SMA a quella quantità per attenuare il rumore, di solito su un orizzonte molto breve, come due giorni. Infine, usa la funzione runPercentRank() per calcolare la percentuale di rango mobile di questo rapporto medio e la moltiplica per 100 per convertirla in una quantità tra 0 e 100.

Pensa a come gli studenti ottengono il percentile dopo un test standardizzato (per esempio, se una studentessa prende 800 nella sezione di matematica, potrebbe essere nel 95º percentile a livello nazionale). runPercentRank() fa la stessa cosa, ma nel tempo. Questo indicatore fornisce il rango dell'osservazione più recente nel contesto di un periodo passato specificato dall'utente. Per esempio, se qualcosa ha un valore di runPercentRank pari a 0,90 usando un lookback di 126, significa che è nel 90º percentile rispetto a se stesso e alle 125 osservazioni precedenti.

Il tuo compito è implementare questo indicatore e salvarlo come DVO. Parte del codice necessario è già fornito e i pacchetti quantstrat, TTR e quantmod sono caricati nel tuo workspace.

Questo esercizio fa parte del corso

Trading finanziario in R

Visualizza il corso

Istruzioni dell'esercizio

  • Crea e assegna un nome a una funzione, DVO, per l'indicatore descritto sopra. I tre argomenti della funzione saranno HLC, navg (impostato di default a 2) e percentlookback (impostato di default a 126).
  • Il rapporto tra la chiusura (Cl()) di HLC e la media dei prezzi massimo (Hi()) e minimo (Lo()) è già calcolato per te.
  • Usa SMA() per implementare una media mobile di questo rapporto, parametrizzata dall'argomento navg. Salvala come avgratio.
  • Usa runPercentRank() per implementare un sistema di ranking percentuale per avgratio.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
}
Modifica ed esegui il codice