1. Learn
  2. /
  3. Курси
  4. /
  5. Фінансовий трейдинг в R

Connected

Вправа

Створіть власний індикатор — II

RSI — непоганий індикатор, але нині його вважають дещо застарілим. У цій вправі ви напишете спрощену версію іншого індикатора з нуля. Індикатор називається David Varadi Oscillator (DVO), його автор — Девід Вараді, директор з кількісних досліджень.

Мета цього осцилятора подібна до RSI: він намагається знаходити можливості купувати на короткочасних просіданнях і продавати на тимчасових зростаннях. Окрім обов'язкових ринкових даних, функція осцилятора приймає два періоди огляду (lookback).

Спочатку функція обчислює відношення між ціною закриття та середнім значенням цін максимуму і мінімуму. Далі до цього показника застосовується SMA, щоб згладити шум, зазвичай на дуже короткому інтервалі, наприклад, два дні. Нарешті, використовується функція runPercentRank(), щоб обчислити ковзний процентиль цього середнього відношення, після чого результат множиться на 100, аби отримати шкалу 0–100.

Згадайте, як учні отримують процентильні бали після стандартизованого тесту (тобто, якщо студентка набрала 800 з математики, це може відповідати 95-му процентилю на національному рівні). runPercentRank() робить те саме, але в часовому розрізі. Цей індикатор надає ранг для останнього спостереження в контексті заданого користувачем минулого періоду. Наприклад, якщо значення runPercentRank дорівнює 0.90 за періоду огляду 126, це означає, що воно в 90-му процентилі порівняно із собою та попередніми 125 спостереженнями.

Ваше завдання — реалізувати цей індикатор і зберегти його як DVO. Частину необхідного коду вже надано, а пакети quantstrat, TTR та quantmod завантажено у ваш робочий простір.

Інструкції

100 XP
  • Створіть і назвіть функцію DVO для індикатора, описаного вище. Три аргументи вашої функції: HLC, navg (типово 2) і percentlookback (типово 126).
  • Відношення ціни закриття (Cl()) з HLC до середнього між цінами максимуму (Hi()) і мінімуму (Lo()) уже обчислено для вас.
  • Використайте SMA(), щоб реалізувати ковзне середнє цього відношення, параметризоване аргументом navg. Збережіть його як avgratio.
  • Використайте runPercentRank(), щоб реалізувати систему процентильного ранжування для avgratio.