Эта стратегия генерирует торговые сигналы на основе разницы между двумя скользящими средними с разными временными рамками. Она рассчитывает более быструю SMA и более медленную SMA и производит сигналы покупки, когда быстрая SMA пересекает более медленную SMA снизу, и сигналы продажи, когда быстрая SMA пересекает ниже медленной SMA сверху.
Основная логика этой стратегии заключается в вычислении двух скользящих средних, SMA ((len1) и SMA ((len2), и их разницы. Здесь len1 представляет собой период более быстрого MA и len2 более медленного MA. Более быстрый MA быстрее реагирует на изменения цен, в то время как более медленный MA лучше отражает долгосрочную тенденцию.
Когда более быстрый MA пересекает более медленный MA снизу, это указывает на то, что краткосрочная цена начала расти выше долгосрочного тренда, и, таким образом, можно сделать длинный вход.
Для фильтрации ложных сигналов стратегия также использует out3 как линию торгового сигнала, которая представляет собой сглаженную разницу между более быстрым MA и средней точкой цены.
В частности, длинная переменная сохраняет положительные значения, когда out3 пересекает диф, давая сигналы покупки. Короткая переменная сохраняет отрицательные значения, когда out3 пересекает диф, генерируя сигналы продажи.
Это очень простая и интуитивно понятная стратегия для отслеживания трендов. Она использует перекресток двух МА разных периодов для выявления точек обратного движения тренда, которые могут быть более надежными, чем одна система МА. Фильтр линии торговых сигналов также помогает избежать ложных сигналов на нестабильных рынках в некоторой степени.
В отличие от стоп-лосса, он использует трендоустойчивое мышление, чтобы максимизировать прибыль в течение более длительных трендов, не останавливаясь.
Эта стратегия имеет несколько параметров и легко понимается и настраивается, что делает ее подходящей для начинающих торговцев.
Наибольший риск этой стратегии заключается в неправильном выборе периодов MA, что приводит к плохим сигналам. Если len1 слишком длинный, ранние движения тренда будут пропущены; если слишком короткий, увеличиваются випса. Если len2 слишком длинный, корректировка позиции будет задержана; если слишком короткий, он может быть нарушен рыночным шумом.
Параметры могут быть оптимизированы путем попытки различных значений len1 и len2 для поиска наилучшей комбинации.
Стратегии, следующие за трендом, также должны контролировать убытки на единичных сделках с помощью стоп-лосса или размещения позиций.
Стратегия двойного перекрестка MA является типичной тенденцией, следующей за представителем. Ее простая система двойного перекрестка MA обеспечивает стабильные сигналы, в то время как фильтр помогает избежать шума. С оптимизированными периодами MA она может достичь хорошей производительности.
/*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)