Programmiere deinen eigenen Indikator – I
Bisher hast du mit add.indicator() nur Indikatoren verwendet, die komplett für dich vorprogrammiert waren. Jetzt ist es an der Zeit, deinen eigenen Indikator zu schreiben und anzuwenden.
Deine Indikatorfunktion berechnet den Durchschnitt aus zwei verschiedenen Indikatoren, um einen RSI von 3,5 zu erzeugen. So gehst du vor:
- Nimm eine Preisserie entgegen.
- Berechne RSI 3.
- Berechne RSI 4.
- Gib den Durchschnitt aus RSI 3 und RSI 4 zurück.
Diesen RSI kannst du dir als RSI 3,5 vorstellen, weil er länger ist als ein RSI 3 und kürzer als ein RSI 4. Durch das Mitteln berücksichtigt dieser Indikator den Einfluss von vor vier Tagen, ist zugleich schneller als ein einfacher RSI 4 und reduziert außerdem das Rauschen von sowohl RSI 3 als auch RSI 4.
In dieser Übung erstellst du eine Funktion für diesen Indikator namens calc_RSI_avg() und fügst sie deiner Strategie strategy.st hinzu. Alle relevanten Pakete sind bereits geladen.
Diese Übung ist Teil des Kurses
Finanzhandel in R
Anleitung zur Übung
- Erstelle eine Funktion
calc_RSI_avgmit den drei Argumentenprice,n1undn2in genau dieser Reihenfolge. - Berechne einen RSI mit Lookback
n1und nenne ihnRSI_1. - Berechne einen RSI mit Lookback
n2und nenne ihnRSI_2. - Berechne den Durchschnitt von
RSI_1undRSI_2. Nenne das ErgebnisRSI_avg. - Setze den Spaltennamen von
RSI_avgaufRSI_avgmit colnames() und gibRSI_avgzurück. - Füge diesen Indikator zu deiner Strategie hinzu, mit den Eingaben
n1 = 3undn2 = 4. Vergib das LabelRSI_3_4.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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 = ___)