НачатьНачать бесплатно

Создайте собственный индикатор — 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 = ___)
Редактировать и запускать код