Эта стратегия разработана на основе индикатора Supertrend. Она сочетает в себе ценовое действие и направление канала Supertrend для оценки рыночных тенденций и генерации торговых сигналов при изменении направления канала.
Когда цена проходит через канал Supertrend, вы идете на длинный; когда цена проходит ниже нижнего канала Supertrend, вы идете на короткий.
Супертендентный канал состоит из верхней рельсы и нижней рельсы. Площадь внутри канала является зоной консолидации, а область снаружи - зоной тренда. Для определения ширины канала используется средний истинный диапазон, умноженный на фактор.
Когда цена проходит через верхний рельс снизу, это сигнал покупки. Это означает, что начинается новый восходящий тренд. Когда цена проходит через нижний рельс сверху, это сигнал продажи. Это означает, что начинается новый нисходящий тренд.
Стратегия использует индикатор Supertrend, чтобы судить о направлении основного тренда. Когда направление канала меняется, то есть когда цена прорывается через рельсы канала, генерируются торговые сигналы. Затем используйте тренд отслеживания стоп-лосса для блокировки прибыли.
Это относительно простая и интуитивно понятная стратегия прорыва. Она имеет следующие преимущества:
Используйте каналы Supertrend для определения основного направления тренда и избегайте шума торговли.
Следуйте тренду, судите о долгосрочных и краткосрочных возможностях на основе отношения цены к каналу.
Он имеет четкий механизм остановки потерь для эффективного контроля рисков.
Метод стоп-лосса - это отслеживание тренда стоп-лосса, который может максимизировать блокировку прибыли.
В этой стратегии также есть некоторые риски, в основном:
Неправильное настройка параметров Supertrend может привести к ложным сигналам.
Сигналы прорыва могут быть кратковременными сигналами обратного движения, приводящими к убыткам.
Метод стоп-лосса - это только тенденционное отслеживание стоп-лосса, которое может преждевременно остановить потерю.
Соответствующие меры по улучшению включают:
Испытать данные с разных рынков и оптимизировать параметры.
Сигналы фильтрации в сочетании с другими показателями.
Оценить надежность сигналов прорыва в сочетании с структурой цен.
Увеличить фоновые остановки потери для дальнейшего контроля рисков.
В целом, эта стратегия является относительно простой и интуитивно понятной стратегией следования тренду. Она использует каналы Supertrend для четкого определения направления тренда и генерирует сигналы, когда канал меняет направление. Затем использует отслеживание тренда для блокировки прибыли.
По сравнению с другими индикаторами, канал Supertrend имеет лучшую толерантность к колебаниям цен. Но для этой стратегии все еще есть место для прибыли. Ее можно оптимизировать с точки зрения фильтрации сигналов и методов остановки потерь для дальнейшего улучшения стабильности.
/*backtest start: 2023-02-11 00:00:00 end: 2024-02-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hlc3, 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 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 tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if sellSignal tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))