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

Использование sigCrossover

Длинный фильтр является необходимым, но недостаточным условием для открытия сделки в данной стратегии. Как только это условие перестаёт выполняться, стратегия должна немедленно закрыть все позиции. В этом упражнении вы реализуете правило, противоположное описанному выше, с помощью функции sigCrossover().

В отличие от sigComparison(), которая постоянно проверяет, выполняется ли условие, функция sigCrossover() возвращает положительное значение только в момент первого выполнения сигнала — и больше не повторяет его. Это удобно для сигналов, инициирующих транзакции: как правило, вы хотите выполнить одну транзакцию, а не запускать её снова и снова.

В данном случае вы реализуете функцию sigCrossover(), задав условие пересечения SMA50 ниже SMA200. Присвойте этому сигналу метку filterexit — он будет закрывать позицию в тот момент, когда фильтр скользящих средних сигнализирует о неблагоприятных условиях для удержания позиции.

Это упражнение является частью курса

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

Посмотреть курс

Инструкции к упражнению

  • Используйте add.signal(), чтобы добавить сигнал sigCrossover, задающий условие пересечения SMA50 ниже SMA200.
  • Присвойте этому сигналу метку filterexit.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Add a sigCrossover which specifies that the SMA50 is less than the SMA200 and label it filterexit
add.signal(strategy.st, name = "___",
           
           # We're interested in the relationship between the SMA50 and the SMA200
           arguments = list(columns = c("___", "___"),
                            
                            # The relationship is that the SMA50 crosses under the SMA200
                            relationship = "___"),
           
           # Label it filterexit
           label = "___")
Редактировать и запускать код