Стратегия торговли на основе разницы скользящих средних


Дата создания: 2023-10-17 13:54:05 Последнее изменение: 2023-10-17 13:54:05
Копировать: 0 Количество просмотров: 706
1
Подписаться
1617
Подписчики

Стратегия торговли на основе разницы скользящих средних

Обзор

Эта стратегия основана на расхождении движущихся средних значений двойных равновесных линий для создания торгового сигнала. Она рассчитывает две средние линии с быстрым и медленным периодом, когда быстрая линия спускается вниз и прорывает медленную линию, создавая сигнал покупки; когда быстрая линия падает сверху и прорывает медленную линию, создавая сигнал продажи.

Первоначальный анализ

Центральная логика этой стратегии заключается в вычислении двух движущихся средних SMA ((len1) и SMA ((len2)), а также их разницы. Len1 представляет собой краткосрочный средний цикл, а len2 - долгосрочный.

Когда краткосрочная средняя линия пересекает долгосрочную среднюю линию снизу, то можно купить, показывая, что краткосрочная цена начинает расти выше долгосрочной тенденции; когда она пересекает долгосрочную среднюю линию снизу, то можно продать, показывая, что краткосрочная цена начинает падать ниже долгосрочной тенденции.

Для фильтрации ошибочных операций стратегия также вводит out3 в качестве линии торгового сигнала. out3 является результатом разграничения среднесрочной средней линии от средней цены после ее сглаживания.

В частности, long переменная имеет положительное значение, когда out3 пересекает dif вверх, как сигнал к покупке; short переменная имеет отрицательное значение, когда out3 пересекает dif вниз, как сигнал к продаже.

Анализ преимуществ

Это очень простая и интуитивно понятная стратегия для отслеживания трендов. Она использует бинарный цикл, чтобы поймать точки перехода тренда, которые вызывают пересечение средних линий, и может быть более надежной, чем система с одинарной средней линией. И введение фильтрации торговых сигнальных линий может в некоторой степени предотвратить создание ложных сигналов на рынке волатильности.

В отличие от движущихся стоп-моделей, он использует идею отслеживания тренда, чтобы получить максимальную прибыль, и не будет остановлен, когда тренд будет длиннее. В то же время он будет контролировать потери и своевременно ликвидировать позиции, когда тренд изменится.

Стратегия имеет меньше параметров, ее легко освоить и скорректировать, и она подходит для начинающих, изучающих алгоритмическую торговлю.

Риски и улучшения

Наибольший риск этой стратегии заключается в том, что неправильные циклические параметры двойных средних линий приводят к ошибке торговых сигналов. Если краткосрочный средний цикл len1 слишком длинный, то будет упущена возможность начать фазу тренда; если слишком короткий, то увеличится вероятность ложного сигнала.

Для достижения оптимального сочетания можно скорректировать параметры 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")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)