Это стратегия обратной торговли, основанная на двойных показателях скользящих средних. путем вычисления двух групп скользящих средних с различными параметрами настройки и суждения о ценовой тенденции в соответствии с их направленными изменениями, торговые сигналы могут быть сгенерированы путем установки параметра чувствительности для направленных изменений.
Основным показателем этой стратегии является двойная скользящая средняя. Стратегия позволяет выбрать тип (SMA, EMA и т. д.), длину и источник цены (закрытая цена, типичная цена и т. д.) скользящей средней. После расчета двух групп скользящих средних, их направления определяются путем определения параметра реакции. Сигнал покупки генерируется, когда быстрая линия пересекает над медленной линией, и сигнал продажи генерируется, когда она пересекает ниже. Параметр реакции используется для регулирования чувствительности для определения поворотных точек.
Кроме того, стратегия также устанавливает условия для определения изменения направления и продолжающегося роста/падения, чтобы избежать генерирования неправильных сигналов. И она визуализирует рост и падение цен в разных цветах. Когда цены продолжают расти, линия movavg отображается в зеленом, а в красном цвете, когда цены падают.
Стратегия двойного движения сочетает в себе быстрые и медленные линии с различными параметрами, которые могут эффективно фильтровать шум на торговом рынке и идентифицировать более сильные тенденции.
Параметр реакции позволяет стратегии быть гибкой и адаптируемой к различным циклам и разновидностям.
Наибольший риск этой стратегии заключается в том, что вы пропустите поворотный момент и потеряете деньги или возьмете обратную позицию. Это связано с настройкой параметров реакции. Если реакция слишком мала, то могут возникнуть неправильные сигналы. Если реакция слишком велика, она может пропустить лучшие точки входа.
Другим риском является неспособность эффективно контролировать потери. Когда цены сильно колеблются, он не может быстро остановить потери, что приводит к увеличению потерь. Это требует использования стратегий стоп-лосса для контроля рисков.
Основные направления оптимизации этой стратегии сосредоточены на выборе параметров реакции, типов и длины скользящих средних. Увеличение реакции соответствующим образом может уменьшить неправильные сигналы.
Кроме того, подтверждение торговых сигналов другими вспомогательными индикаторами, такими как RSI и KD, также является идеей оптимизации.
В целом, эта стратегия относительно проста и практична. Фильтровывая с помощью двойных скользящих средних и генерируя торговые сигналы, она может эффективно идентифицировать обратные тенденции и является типичной стратегией следования тренду. После оптимизации параметров портфеля, ее способность улавливать тенденции и удерживать позиции против рынка будет улучшена. Использование ее с механизмами остановки потерь и управления позициями работает лучше.
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle="MA_color strategy", title="Moving Average Color", overlay=true) // === INPUTS ma_type = input(defval="HullMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"]) ma_len = input(defval=32, title="MA Lenght", minval=1) ma_src = input(close, title="MA Source") reaction = input(defval=2, title="MA Reaction", minval=1) // SuperSmoother filter // © 2013 John F. Ehlers variant_supersmoother(src,len) => a1 = exp(-1.414*3.14159 / len) b1 = 2*a1*cos(1.414*3.14159 / len) c2 = b1 c3 = (-a1)*a1 c1 = 1 - c2 - c3 v9 = 0.0 v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2]) v9 variant_smoothed(src,len) => v5 = 0.0 v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len v5 variant_zerolagema(src,len) => ema1 = ema(src, len) ema2 = ema(ema1, len) v10 = ema1+(ema1-ema2) v10 variant_doubleema(src,len) => v2 = ema(src, len) v6 = 2 * v2 - ema(v2, len) v6 variant_tripleema(src,len) => v2 = ema(src, len) v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) v7 variant(type, src, len) => type=="EMA" ? ema(src,len) : type=="WMA" ? wma(src,len): type=="VWMA" ? vwma(src,len) : type=="SMMA" ? variant_smoothed(src,len) : type=="DEMA" ? variant_doubleema(src,len): type=="TEMA" ? variant_tripleema(src,len): type=="HullMA"? wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) : type=="SSMA" ? variant_supersmoother(src,len) : type=="ZEMA" ? variant_zerolagema(src,len) : type=="TMA" ? sma(sma(src,len),len) : sma(src,len) // === Moving Average ma_series = variant(ma_type,ma_src,ma_len) direction = 0 direction := rising(ma_series,reaction) ? 1 : falling(ma_series,reaction) ? -1 : nz(direction[1]) change_direction= change(direction,1) change_direction1= change(direction,1) pcol = direction>0 ? lime : direction<0 ? red : na plot(ma_series, color=pcol,style=line,join=true,linewidth=3,transp=10,title="MA PLOT") /////// Alerts /////// alertcondition(change_direction,title="Change Direction MA",message="Change Direction MA") longCondition = direction>0 shortCondition = direction<0 if (longCondition) strategy.entry("BUY", strategy.long) if (shortCondition) strategy.entry("SELL", strategy.short)