ПочатиПочніть безкоштовно

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

Досі ви використовували повністю заздалегідь написані індикатори через функцію add.indicator(). Тепер час написати й застосувати власний індикатор.

Ваша функція індикатора обчислюватиме середнє двох різних індикаторів, щоб утворити RSI 3,5. Ось як:

  • Прийміть ціновий ряд.
  • Обчисліть RSI 3.
  • Обчисліть RSI 4.
  • Поверніть середнє між RSI 3 і RSI 4.

Такий RSI можна вважати RSI 3,5, адже він довший за RSI 3 і коротший за RSI 4. Усередненням цей індикатор враховує вплив даних чотириденної давнини, водночас реагує швидше, ніж простий RSI 4, і зменшує шум як RSI 3, так і RSI 4.

У цій вправі ви створите функцію для цього індикатора під назвою calc_RSI_avg() і додасте її до своєї стратегії strategy.st. Усі потрібні пакети вже завантажено для вас.

Ця вправа є частиною курсу

Фінансовий трейдинг в R

Переглянути курс

Інструкції до вправи

  • Створіть і назвіть функцію calc_RSI_avg із трьома аргументами price, n1 та n2 саме в такому порядку.
  • Обчисліть RSI з вікном n1 та назвіть його RSI_1.
  • Обчисліть RSI з вікном n2 та назвіть його RSI_2.
  • Обчисліть середнє між RSI_1 і RSI_2. Назвіть його RSI_avg.
  • Встановіть назву стовпця для RSI_avg як RSI_avg за допомогою colnames() і поверніть RSI_avg.
  • Додайте цей індикатор до своєї стратегії з параметрами n1 = 3 і n2 = 4. Позначте цей індикатор як RSI_3_4.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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 = ___)
Редагувати та запускати код