Это стратегия отслеживания супертенденции, которая в основном сочетает в себе индикаторы супертенденции с различными параметрами для достижения эффекта отслеживания и использует индикатор фильтра для контроля риска.
Эта стратегия состоит в основном из трех групп индикаторов супертенденции с различными параметрами. Первая группа - это основной индикатор супертенденции, который использует параметры по умолчанию для базового суждения о рыночных тенденциях. Вторая группа - заместительный индикатор супертенденции, который достигает более чувствительного отслеживания изменений цен путем сокращения периода ATR и увеличения мультипликатора ATR. Третья группа - это индикатор фильтра супертенденции, который соответствующим образом увеличивает период ATR и мультипликатор ATR для фильтрации ложных прорывов.
Когда основной супертенд выпускает сигнал покупки, если заместительный супертенд также выпускает синхронизированный сигнал, и направление фильтра супертенда вверх, стратегия будет отслеживать покупку. Когда основной супертенд выпускает сигнал продажи, если заместительный супертенд также выпускает синхронизированный сигнал, и направление фильтра супертенда вниз, стратегия будет отслеживать продажу. Это может захватить основной тренд, используя гибкий заместительный супертенд индикатор для отслеживания незначительных корректировок и достижения своевременного входа и остановки потери.
Основные меры по предотвращению риска:
Общая идея этой стратегии ясна и проста. Координируя несколько групп индикаторов супертенденции с различными параметрами, он реализует отслеживание входа и контроль рисков. Сигнал стратегии более точен с хорошей живой производительностью. Он подходит для обучения новичков, а также может использоваться в качестве шаблона для тестирования и оптимизации различных индикаторов и параметров. Это стратегия супертенденции, которую стоит рекомендовать.
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) tp=close sl=close atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green ) plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white ) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red ) plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white ) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white sPeriods=input(title="ATR Period", type=input.integer, defval=8) sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5) satr2 = sma(tr, sPeriods) satr= changeATR ? atr(sPeriods) : satr2 ssup=ohlc4-(sMultiplier*satr) ssup1 = nz(ssup[1],ssup) ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup sdn=ohlc4+(sMultiplier*satr) sdn1 = nz(sdn[1], sdn) sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn strend = 1 strend := nz(strend[1], strend) strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend sbuySignal = strend == 1 and strend[1] == -1 ssellSignal = strend == -1 and strend[1] == 1 fPeriods=input(title="ATR Period", type=input.integer, defval=10) fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5) fatr2 = sma(tr, fPeriods) fatr= changeATR ? atr(fPeriods) : fatr2 fup=ohlc4-(fMultiplier*fatr) fup1 = nz(fup[1],fup) fup := close[1] > fup1 ? max(fup,fup1) : fup fdn=ohlc4+(fMultiplier*fatr) fdn1 = nz(fdn[1], fdn) fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn ftrend = 1 ftrend := nz(ftrend[1], ftrend) ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend fbuySignal = ftrend == 1 and ftrend[1] == -1 fsellSignal = ftrend == -1 and ftrend[1] == 1 tcolor=color.new(color.gray,50) fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor) fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor) if (strategy.position_size > 0) tp:=tp[1] sl:=up strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl) if (strategy.position_size < 0) tp:=tp[1] sl:=dn strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl) if ((buySignal and ftrend==1) or (sbuySignal and trend==1 and ftrend==1)) tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and ftrend==-1)) tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))