슈퍼 ATR 트렌드 다음 전략은 ATR 지표 기반 트렌드 다음 전략입니다. 그것은 시장 변동성을 측정하기 위해 ATR 지표를 사용하고 트렌드를 추적하기 위해 여러 ATR에 기반한 스톱 로스를 설정합니다.
전략은 먼저 ATR 지표를 계산합니다. 이는 지난 N 일 동안 가격 변동의 이동 평균으로 시장 위험과 변동성을 나타냅니다. 전략은 ATR 계산 방법을 변경할 수 있습니다. 일반 ATR 또는 SMA.
그 다음 상단 및 하단 대역은 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