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