Стратегия Three SMA Crossover Momentum - это типичная стратегия технического индикатора, которая отслеживает тенденции рынка. Она сочетает в себе простые скользящие средние за 16-, 36- и 72-е периоды и использует их бычьи и медвежие кроссоверы для определения рыночных тенденций, а также адаптивную скользящую среднюю Кауфмана (KAMA) в качестве фильтра для занятия длинных или коротких позиций, когда направление тренда относительно ясно.
Основными показателями этой стратегии являются 16-, 36- и 72-периодные простые скользящие средние. Когда короткосрочная SMA пересекает более длительный период вверх, это сигнализирует о том, что рынок вступает в восходящий тренд. Когда короткосрочная SMA пересекает ниже более длительного периода вниз, это сигнализирует о том, что рынок вступает в нисходящий тренд. Например, когда 16-SMA пересекает 36-SMA и 72-SMA, это бычий сигнал. А когда 16-SMA пересекает ниже 36-SMA и 72-SMA, это медвежий сигнал.
Адаптивная скользящая средняя Кауфмана (KAMA) служит фильтром для предотвращения ошибочных сигналов, когда тенденция неясна.
Стратегия отслеживает ситуации перекрестки SMA, чтобы занять длинные или короткие позиции, когда тенденция относительно ясна. Длинное условие - 16-SMA пересечение 36-SMA и 72-SMA с линейной KAMA. Короткое условие - 16-SMA пересечение ниже 36-SMA и 72-SMA с линейной KAMA.
Преимущества этой стратегии:
Эта стратегия также сопряжена с некоторыми рисками:
Риски могут быть уменьшены путем настройки параметров SMA, установления ограничений стоп-лосса или применения только к очень волатильным рынкам.
Стратегия может быть оптимизирована следующими способами:
Стратегия Three SMA Crossover Momentum - довольно классическая и практичная стратегия, следующая за трендом в целом. Она эффективно оценивает средне- и долгосрочные рыночные тенденции с помощью многопериодных перекрестных SMA и фильтрует некоторый шум. Она может служить одним из ориентировочных индикаторов времени для позиционной торговли.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Wielkieef //@version=5 strategy(title='Three SMA-crossover strategy [30min] ', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=10000, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) src = close Length1 = input.int(16, title=' 1-SMA Lenght', minval=1, group='SMA') Length2 = input.int(36, title=' 2-SMA Lenght', minval=1, group='SMA') Length3 = input.int(72, title=' 3-SMA Lenght', minval=1, group='SMA') SMA1 = ta.sma(close, Length1) SMA2 = ta.sma(close, Length2) SMA3 = ta.sma(close, Length3) Long_ma = SMA1 > SMA2 and SMA2 > SMA3 Short_ma = SMA1 < SMA2 and SMA2 < SMA3 LengthMainSMA = input.int(100, title=' Trend SMA ', minval=1) SMAas = ta.sma(src, LengthMainSMA) // Powered Kaufman Adaptive Moving Average by alexgrover (modificated by Wielkieef) lengthas = input.int(50, title=' KAMA Lenght') sp = input.bool(true, title=' Self Powered') er = math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas) pow = sp ? 1 / er : 2 per = math.pow(math.abs(ta.change(close, lengthas)) / math.sum(math.abs(ta.change(close)), lengthas), pow) a = 0. a := per * src + (1 - per) * nz(a[1], src) mad4h = 0. a_f = a / a[1] > .999 and a / a[1] < 1.001 ///. Bar_color = close > SMAas ? color.green : Long_ma ? color.blue : Short_ma ? color.maroon : color.gray barcolor(color=Bar_color) long_cond = Long_ma and SMAas < close and not a_f and close > a short_cond = Short_ma and SMAas > close and not a_f and close < a long_stop = Short_ma and SMAas < close short_stop = Long_ma and SMAas > close SMA1plot = plot(SMA1, color=Bar_color, linewidth=2) SMA2plot = plot(SMA2, color=Bar_color, linewidth=4) SMA3plot = plot(SMA3, color=Bar_color, linewidth=2) fill(SMA1plot,SMA3plot,title="RANGE " ,color = color.new(Bar_color, 50)) if long_cond strategy.entry('Long', strategy.long) if short_cond strategy.entry('Short', strategy.short) strategy.close_all(when=long_stop or short_stop) //by wielkieef