Использование 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 = "___")