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
Anleitung zur Übung
- Erstelle und benenne eine Funktion
DVOfür den oben beschriebenen Indikator. Die drei Argumente deiner Funktion sindHLC,navg(Standardwert 2) undpercentlookback(Standardwert 126). - Das Verhältnis aus Schlusskurs (
Cl()) vonHLCgeteilt 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 Argumentnavg. Speichere dies alsavgratio. - Verwende
runPercentRank(), um ein prozentuales Rankingsystem füravgratiozu 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)
}