Торговая стратегия на основе разницы двух скользящих средних
Обзор
Данная стратегия основана на разнице скользящих средних (MA) двух линий для генерации торговых сигналов. Она рассчитывает две скользящие средние с быстрым и медленным периодами. Когда быстрая линия пересекает медленную снизу вверх, генерируется сигнал на покупку; когда быстрая линия пересекает медленную сверху вниз, генерируется сигнал на продажу.
Принцип работы
Основная логика стратегии заключается в расчёте двух скользящих средних SMA(len1) и SMA(len2), а также их разницы dif. Здесь len1 – период короткой скользящей средней, len2 – период длинной скользящей средней. Короткая скользящая средняя быстрее реагирует на изменение цены, а длинная лучше отражает долгосрочный тренд.
Когда короткая скользящая средняя пересекает длинную снизу вверх, это означает, что краткосрочная цена начинает расти быстрее долгосрочного тренда – можно покупать. Когда она пересекает длинную сверху вниз, это сигнализирует о снижении краткосрочной цены относительно долгосрочного тренда – можно продавать.
Чтобы отфильтровать ложные срабатывания, стратегия вводит линию сигнала out3. out3 – это результат сглаживания с помощью SMA разницы между короткой скользящей средней и средней ценой. Торговый сигнал генерируется только при пересечении out3 с dif.
Конкретно: переменная long принимает положительное значение, когда out3 пересекает dif снизу вверх – это сигнал на покупку; переменная short принимает отрицательное значение, когда out3 пересекает dif сверху вниз – это сигнал на продажу. strategy.entry создаёт ордер на покупку по сигналу long, а strategy.close закрывает позицию по сигналу short.
Преимущества
Это очень простая и интуитивно понятная стратегия следования за трендом. Она использует пересечение скользящих средних с разными периодами для обнаружения точек смены тренда, что может быть надёжнее, чем система с одной скользящей средней. Введение фильтра линии сигнала позволяет в некоторой степени избежать ложных сигналов, возникающих на боковом рынке.
По сравнению с методами, использующими скользящий стоп-лосс, эта стратегия придерживается концепции следования за трендом, что позволяет максимально реализовать прибыль и не выходить из позиции при продолжительном тренде. В то же время она ограничивает убытки, своевременно закрывая позиции при развороте тренда.
Стратегия использует мало параметров, её легко освоить и настроить. Она подходит в качестве вводной стратегии для новичков, изучающих алгоритмическую торговлю.
Риски и улучшения
Основной риск стратегии – неправильный выбор периодов скользящих средних, приводящий к ошибочным сигналам. Если период короткой скользящей средней len1 слишком велик, стратегия упустит начало тренда; если слишком мал – увеличится количество ложных сигналов. Если период длинной скользящей средней len2 слишком велик, задержка в корректировке позиции возрастёт; если слишком мал – стратегия будет подвержена рыночному шуму.
Оптимальную комбинацию можно найти, подбирая параметры len1 и len2. Также можно попробовать использовать адаптивные скользящие средние для динамической настройки периодов. Кроме того, можно уменьшить количество ложных сигналов, оптимизируя параметры фильтра.
Стратегии следования за трендом также требуют контроля над размером убытка по каждой сделке. Можно установить стоп-лосс или внедрить управление позицией для оптимизации.
Заключение
Стратегия на основе разницы двух скользящих средних является типичным представителем стратегий следования за трендом. Её простая система пересечения двух скользящих средних обеспечивает стабильный источник сигналов, а в сочетании с фильтром она позволяет эффективно избегать помех от рыночного шума. Оптимизация периодов скользящих средних может улучшить её показатели. Эта стратегия отлично подходит для изучения в качестве вводной стратегии алгоритмической торговли.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")- 1

