Стратегия Super ATR Trend Following - это стратегия, основанная на индикаторе ATR. Она использует индикатор ATR для измерения волатильности рынка и устанавливает стоп-лосс на основе нескольких ATR для отслеживания тенденций.
Стратегия сначала рассчитывает индикатор ATR, который является скользящим средним показателем волатильности цен за последние N дней, чтобы представить рыночный риск и волатильность.
Затем верхние и нижние диапазоны рассчитываются на основе значения ATR, умноженного на коэффициент, то есть:close - Multiplier * ATR
для верхней полосы;close + Multiplier * ATR
Это формирует канал тренда на основе ATR.
Затем мы судим, проходит ли текущая цена через верхнюю или нижнюю полосу канала. Если цена проходит через верхнюю полосу, она рассматривается как входящая в нисходящий тренд; если цена проходит через нижнюю полосу, она рассматривается как входящая в восходящий тренд. Когда происходит прорыв тренда, мы совершаем соответствующую покупку и продажу.
Кроме того, стратегия установила временное окно торговли, чтобы торговать только в указанном временном диапазоне.
Эта стратегия, основанная на канале индикатора, имеет следующие преимущества:
В целом, это простая и практичная стратегия, которая позволяет эффективно контролировать риски и получать хорошую прибыль.
В этой стратегии также есть некоторые риски:
Чтобы контролировать эти риски, мы можем принять следующие меры:
Есть возможности для дальнейшей оптимизации этой стратегии:
Эти оптимизации могут еще больше улучшить стабильность и рентабельность стратегии.
В целом, это очень практичный тренд, следующий за стратегией. Он создает адаптивный канал с использованием индикатора ATR и определяет входы по прорывам канала. Стратегия проста и эффективна для контроля рисков, подходящая для отслеживания среднесрочных долгосрочных тенденций. Мы также предложили дальнейшие рекомендации по контролю рисков и оптимизации, чтобы сделать стратегию более надежной.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('B厂长 @超级趋势精简优化版', overlay=true) Periods = input(title='ATR周期', defval=10) src = input(hl2, title='价格数据源') Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0) changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)') showsignals = input(title='显示买入/卖出信号', defval=false) atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.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='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12) FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31) FromYear = input.int(defval=2018, title='From Year', minval=999) ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12) ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31) ToYear = input.int(defval=9999, title='To Year', minval=999) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = buySignal if longCondition and window() strategy.entry('BUY', strategy.long, comment = '做多') shortCondition = sellSignal if shortCondition and window() strategy.entry('SAL', strategy.short, comment = '做空') buy1 = ta.barssince(buySignal) sell1 = ta.barssince(sellSignal) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na