Використання 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 = "___")