LoslegenKostenlos loslegen

Programmiere deinen eigenen Indikator – II

Der RSI ist zwar ordentlich, aber als Indikator etwas in die Jahre gekommen. In dieser Übung programmierst du eine vereinfachte Version eines anderen Indikators von Grund auf. Der Indikator heißt David Varadi Oscillator (DVO) und wurde von David Varadi, einem Director of Quantitative Research, entwickelt.

Der Zweck dieses Oszillators ähnelt dem des RSI: Er versucht, Gelegenheiten zu finden, bei einem vorübergehenden Rücksetzer zu kaufen und in einem vorübergehenden Aufwärtstrend zu verkaufen. Zusätzlich zu den obligatorischen Marktdaten nimmt eine Oszillatorfunktion zwei Lookback-Perioden entgegen.

Zuerst berechnet die Funktion das Verhältnis zwischen Schlusskurs und dem Durchschnitt aus Hoch- und Tiefkurs. Anschließend wird auf diese Größe eine SMA angewendet, um Rauschen zu glätten – üblicherweise über einen sehr kurzen Zeitraum, etwa zwei Tage. Schließlich nutzt sie die Funktion runPercentRank(), um einen laufenden prozentualen Rang dieses durchschnittlichen Verhältnisses zu berechnen, und multipliziert das Ergebnis mit 100, um es in eine Größe von 0–100 zu überführen.

Denk an die Art und Weise, wie Schüler:innen nach einem standardisierten Test Prozentwerte erhalten (wenn eine Schülerin zum Beispiel 800 Punkte im Matheteil erzielt, könnte sie bundesweit im 95. Perzentil liegen). runPercentRank() macht dasselbe – nur über die Zeit. Dieser Indikator liefert den Rang für die aktuellste Beobachtung im Kontext eines vom Nutzer festgelegten vergangenen Zeitraums. Wenn beispielsweise etwas einen runPercentRank-Wert von 0,90 bei einer Lookback-Periode von 126 hat, bedeutet das, es liegt im 90. Perzentil im Vergleich zu sich selbst und den vergangenen 125 Beobachtungen.

Deine Aufgabe ist es, diesen Indikator zu implementieren und als DVO zu speichern. Ein Teil des notwendigen Codes wurde bereitgestellt, und die Pakete quantstrat, TTR und quantmod sind in deiner Arbeitsumgebung geladen.

Diese Übung ist Teil des Kurses

Finanzhandel in R

Kurs anzeigen

Anleitung zur Übung

  • Erstelle und benenne eine Funktion DVO für den oben beschriebenen Indikator. Die drei Argumente deiner Funktion sind HLC, navg (Standardwert 2) und percentlookback (Standardwert 126).
  • Das Verhältnis aus Schlusskurs (Cl()) von HLC geteilt durch den Durchschnitt aus Hoch- (Hi()) und Tief- (Lo()) Kursen ist für dich berechnet.
  • Verwende SMA(), um einen gleitenden Durchschnitt dieses Verhältnisses zu berechnen, parametrisiert durch das Argument navg. Speichere dies als avgratio.
  • Verwende runPercentRank(), um ein prozentuales Rankingsystem für avgratio zu implementieren.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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)
}
Code bearbeiten und ausführen