Стратегия торговли Supertrend Breakout

Автор:Чао Чжан, Дата: 2024-02-18 14:19:58
Тэги:

img

Обзор

Эта стратегия разработана на основе индикатора Supertrend. Она сочетает в себе ценовое действие и направление канала Supertrend для оценки рыночных тенденций и генерации торговых сигналов при изменении направления канала.

Когда цена проходит через канал Supertrend, вы идете на длинный; когда цена проходит ниже нижнего канала Supertrend, вы идете на короткий.

Логика стратегии

Супертендентный канал состоит из верхней рельсы и нижней рельсы. Площадь внутри канала является зоной консолидации, а область снаружи - зоной тренда. Для определения ширины канала используется средний истинный диапазон, умноженный на фактор.

Когда цена проходит через верхний рельс снизу, это сигнал покупки. Это означает, что начинается новый восходящий тренд. Когда цена проходит через нижний рельс сверху, это сигнал продажи. Это означает, что начинается новый нисходящий тренд.

Стратегия использует индикатор Supertrend, чтобы судить о направлении основного тренда. Когда направление канала меняется, то есть когда цена прорывается через рельсы канала, генерируются торговые сигналы. Затем используйте тренд отслеживания стоп-лосса для блокировки прибыли.

Анализ преимуществ

Это относительно простая и интуитивно понятная стратегия прорыва. Она имеет следующие преимущества:

  1. Используйте каналы Supertrend для определения основного направления тренда и избегайте шума торговли.

  2. Следуйте тренду, судите о долгосрочных и краткосрочных возможностях на основе отношения цены к каналу.

  3. Он имеет четкий механизм остановки потерь для эффективного контроля рисков.

  4. Метод стоп-лосса - это отслеживание тренда стоп-лосса, который может максимизировать блокировку прибыли.

Риски и улучшения

В этой стратегии также есть некоторые риски, в основном:

  1. Неправильное настройка параметров Supertrend может привести к ложным сигналам.

  2. Сигналы прорыва могут быть кратковременными сигналами обратного движения, приводящими к убыткам.

  3. Метод стоп-лосса - это только тенденционное отслеживание стоп-лосса, которое может преждевременно остановить потерю.

Соответствующие меры по улучшению включают:

  1. Испытать данные с разных рынков и оптимизировать параметры.

  2. Сигналы фильтрации в сочетании с другими показателями.

  3. Оценить надежность сигналов прорыва в сочетании с структурой цен.

  4. Увеличить фоновые остановки потери для дальнейшего контроля рисков.

Резюме

В целом, эта стратегия является относительно простой и интуитивно понятной стратегией следования тренду. Она использует каналы 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)))




Больше