LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Erstelle eine Funktion calc_RSI_avg mit den drei Argumenten price, n1 und n2 in genau dieser Reihenfolge.
  • Berechne einen RSI mit Lookback n1 und nenne ihn RSI_1.
  • Berechne einen RSI mit Lookback n2 und nenne ihn RSI_2.
  • Berechne den Durchschnitt von RSI_1 und RSI_2. Nenne das Ergebnis RSI_avg.
  • Setze den Spaltennamen von RSI_avg auf RSI_avg mit colnames() und gib RSI_avg zurück.
  • Füge diesen Indikator zu deiner Strategie hinzu, mit den Eingaben n1 = 3 und n2 = 4. Vergib das Label RSI_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 = ___)
Code bearbeiten und ausführen