1. Nauka
  2. /
  3. Kursy
  4. /
  5. Handel finansowy w R

Connected

ćwiczenie

Zakoduj własny wskaźnik – część II

RSI to przyzwoity wskaźnik, ale jak na dzisiejsze standardy jest już nieco przestarzały. W tym ćwiczeniu zakoduj od podstaw uproszczoną wersję innego wskaźnika – oscylatora Davida Varadiego (DVO), opracowanego przez Davida Varadiego, dyrektora ds. badań ilościowych.

Cel tego oscylatora jest podobny do RSI: stara się on identyfikować okazje do kupna podczas chwilowych spadków i sprzedaży podczas chwilowych wzrostów. Oprócz standardowych danych rynkowych funkcja oscylatora przyjmuje dwa okresy wsteczne (lookback).

Funkcja najpierw oblicza stosunek ceny zamknięcia do średniej cen maksymalnej i minimalnej. Następnie wygładza tę wartość za pomocą SMA – zwykle na bardzo krótkim przedziale czasowym, np. dwóch dni. Na końcu używa funkcji runPercentRank(), aby obliczyć bieżącą rangę percentylową tej wygładzonej wartości, i mnoży wynik przez 100, przekształcając go na skalę od 0 do 100.

Pomyśl o tym tak, jak o wynikach percentylowych na egzaminach standaryzowanych – jeśli ktoś uzyska 800 punktów z matematyki, może znaleźć się w 95. percentylu krajowym. Funkcja runPercentRank() działa analogicznie, tyle że w czasie. Wskaźnik wyznacza rangę dla najnowszej obserwacji na tle określonego przez użytkownika okresu historycznego. Na przykład wartość runPercentRank równa 0,90 przy okresie wstecznym 126 oznacza, że bieżąca obserwacja plasuje się w 90. percentylu w porównaniu z nią samą i 125 poprzednimi obserwacjami.

Twoim zadaniem jest zaimplementowanie tego wskaźnika i zapisanie go jako DVO. Część kodu została już przygotowana. Pakiety quantstrat, TTR i quantmod są wczytane do środowiska.

Instrukcje

100 XP
  • Utwórz i nazwij funkcję DVO zgodnie z opisem powyżej. Funkcja przyjmuje trzy argumenty: HLC, navg (domyślnie 2) oraz percentlookback (domyślnie 126).
  • Stosunek ceny zamknięcia (Cl()) ze zbioru HLC do średniej cen maksymalnej (Hi()) i minimalnej (Lo()) jest już obliczony.
  • Użyj funkcji SMA(), aby obliczyć średnią kroczącą tego stosunku, parametryzowaną argumentem navg. Zapisz wynik jako avgratio.
  • Użyj funkcji runPercentRank(), aby zastosować ranking percentylowy do zmiennej avgratio.