Začněte nyníZačněte zdarma

Napiš vlastní indikátor – II

RSI je solidní indikátor, ale z dnešního pohledu už trochu zastaralý. V tomto cvičení si od základu naprogramuješ zjednodušenou verzi jiného indikátoru. Jmenuje se David Varadi Oscillator (DVO) a jeho autorem je David Varadi, ředitel kvantitativního výzkumu.

Účel tohoto oscilátoru je podobný jako u RSI – snaží se identifikovat příležitosti k nákupu při dočasném poklesu a k prodeji při dočasném vzestupu. Kromě povinných tržních dat přijímá funkce oscilátoru dva parametry zpětného pohledu.

Funkce nejprve vypočítá poměr mezi závěrečnou cenou a průměrem nejvyšší a nejnižší ceny. Poté na tuto hodnotu aplikuje SMA, aby vyhladila šum – obvykle na velmi krátkém časovém rámci, například dva dny. Nakonec pomocí funkce runPercentRank() vypočítá průběžné percentilové pořadí tohoto průměrného poměru a vynásobí ho 100, čímž hodnotu převede na rozsah 0–100.

Představ si, jak studenti dostávají percentilové skóre po standardizovaných testech – například student s 800 body v matematice může být na 95. percentilu v celostátním srovnání. runPercentRank() funguje stejně, jen v čase. Tento indikátor udává pořadí nejnovějšího pozorování v kontextu určitého minulého období, které si sám nastavíš. Pokud má například hodnota runPercentRank při zpětném pohledu 126 period hodnotu 0,90, znamená to, že se nachází na 90. percentilu v porovnání se sebou samou a předchozími 125 pozorováními.

Tvým úkolem je implementovat tento indikátor a uložit ho jako DVO. Část potřebného kódu je již připravena. Do tvého pracovního prostředí jsou načteny balíčky quantstrat, TTR a quantmod.

Toto cvičení je součástí kurzu

Finanční obchodování v R

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř a pojmenuj funkci DVO pro výše popsaný indikátor. Funkce bude mít tři argumenty: HLC, navg (výchozí hodnota 2) a percentlookback (výchozí hodnota 126).
  • Výpočet poměru závěrečné ceny (Cl()) z HLC dělené průměrem nejvyšší (Hi()) a nejnižší (Lo()) ceny je již připraven.
  • Pomocí SMA() implementuj klouzavý průměr tohoto poměru s parametrem navg. Výsledek ulož jako avgratio.
  • Pomocí runPercentRank() implementuj systém percentilového pořadí pro avgratio.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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)
}
Upravit a spustit kód