Zacznij terazZacznij za darmo

Napisz własny wskaźnik – część I

Do tej pory korzystałeś ze wskaźników całkowicie gotowych, dodając je za pomocą funkcji add.indicator(). Teraz nadszedł czas, aby napisać i zastosować własny wskaźnik.

Twoja funkcja wskaźnika obliczy średnią z dwóch różnych wskaźników, tworząc RSI o wartości 3,5. Oto jak to działa:

  • Przyjmuje szereg cenowy.
  • Oblicza RSI 3.
  • Oblicza RSI 4.
  • Zwraca średnią z RSI 3 i RSI 4.

Ten RSI można traktować jako RSI 3,5 – jest dłuższy niż RSI 3 i krótszy niż RSI 4. Dzięki uśrednieniu wskaźnik uwzględnia wpływ danych sprzed czterech dni, jednocześnie reagując szybciej niż zwykły RSI 4 i redukując szum obecny zarówno w RSI 3, jak i RSI 4.

W tym ćwiczeniu stworzysz funkcję o nazwie calc_RSI_avg() i dodasz ją do strategii strategy.st. Wszystkie niezbędne pakiety są już wczytane.

To ćwiczenie jest częścią kursu

Handel finansowy w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz i nazwij funkcję calc_RSI_avg przyjmującą trzy argumenty: price, n1 i n2 – w tej kolejności.
  • Oblicz RSI z okresem lookback n1 i nadaj mu nazwę RSI_1.
  • Oblicz RSI z okresem lookback n2 i nadaj mu nazwę RSI_2.
  • Oblicz średnią z RSI_1 i RSI_2. Nazwij ją RSI_avg.
  • Ustaw nazwę kolumny RSI_avg na RSI_avg za pomocą colnames() i zwróć RSI_avg.
  • Dodaj ten wskaźnik do swojej strategii, używając wartości n1 = 3 i n2 = 4. Nadaj wskaźnikowi etykietę RSI_3_4.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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 = ___)
Edytuj i uruchom kod