슈퍼트렌드 및 DEMA 기반 트렌드 다음 전략

저자:차오장, 날짜: 2023-12-08 16:42:14
태그:

img

전반적인 설명

이 전략은 트렌드를 따라 트렌드 전략을 구현하기 위해 슈퍼트렌드 지표와 DEMA 지표를 결합합니다. 가격이 상부 대역을 넘어서면 구매 신호를 생성하고 가격이 하위 대역을 넘어서면 판매 신호를 생성합니다. DEMA 지표는 잘못된 신호를 필터링하는 데 사용됩니다. 이 전략은 트렌딩 시장에 잘 작동하며 트렌드를 효과적으로 따라가고 통합을 필터링 할 수 있습니다.

전략 논리

이 전략의 핵심은 가격의 트렌드 방향을 결정하기 위해 슈퍼트렌드 지표에 의존합니다. 슈퍼트렌드 지표는 ATR 지표를 통합하고 가격 추세를 효과적으로 식별 할 수 있습니다. 가격이 상승하면 상위 대역이 형성되며 가격이 떨어지면 하위 대역이 형성됩니다. 하위 대역에서 파업이 트렌드 반전을 신호하고 구매 신호를 생성합니다. 상위 대역에서 파업이 트렌드 반전을 신호하고 판매 신호를 생성합니다.

잘못된 신호를 필터링하기 위해 이 전략은 DEMA 지표를 포함합니다. 구매 신호는 가격이 상단역을 넘어서 DEMA 라인 위에 있을 때만 생성됩니다. 판매 신호는 가격이 하단역을 넘어서 DEMA 라인 아래에 있을 때만 생성됩니다. 이것은 범위 시장에서 잘못된 신호를 효과적으로 필터링합니다.

특히, 거래 신호 논리는 다음과 같습니다.

  1. 하부 지대에서 벗어나는 것은 트렌드 반전을 신호하고 구매 신호를 생성합니다.
  2. 상위 계단에서 벗어나는 것은 트렌드 반전을 신호하고 판매 신호를 생성합니다.
  3. 실제 구매 신호는 구매 신호가 나타나고 가격이 DEMA 라인 위에 있을 때만 생성됩니다.
  4. 실제 판매 신호는 판매 신호가 나타나고 가격이 DEMA 라인 아래에 있을 때만 생성됩니다.

이 논리 설계를 통해 전략은 트렌딩 시장의 추세를 따라가며 다양한 시장에서 자주 포지션을 개척하는 것을 피할 수 있습니다.

전략 의 장점

  • 트렌드 추적 및 신호 필터링을 달성하기 위해 슈퍼 트렌드 및 DEMA 지표의 장점을 결합합니다.
  • 다른 제품과 시간 프레임에 대한 슈퍼 트렌드 매개 변수를 최적화하기 쉽습니다.
  • 반복 테스트 없이 DEMA 매개 변수를 최적화하기 쉽습니다.
  • 트렌드 시장에 적합하고, 트렌드를 효과적으로 따라갈 수 있습니다.
  • 시장에서 잘못된 신호는 DEMA 지표에 의해 필터링됩니다.
  • 단순한 논리, 이해하기 쉽고 수정하기 쉽습니다.

전략 의 위험

  • 극심한 가격 변동에 잘 대처할 수 없습니다.
  • 트렌드가 뒤집어지면 손실이 발생할 수 있습니다.
  • 부적절한 DEMA 매개 변수 설정은 가장 좋은 입구/출구 지점을 놓칠 수 있습니다.
  • ATR 기간과 같은 부적절한 슈퍼 트렌드 매개 변수는 잘못된 신호를 생성 할 수 있습니다.

위험 관리:

  • DEMA와 슈퍼트렌드 매개 변수를 최적화해
  • 손해를 제한하기 위해 손해를 막는 명령을 사용하세요.
  • 잘못된 신호를 피하기 위해 주요 지점에서 확인 메커니즘을 추가합니다.

개선 영역

이 전략은 다음과 같은 측면에서 향상될 수 있습니다.

  1. 슈퍼트렌드 매개 변수 최적화. 최적 매개 변수를 찾기 위해 다른 ATR 기간 조합을 테스트합니다.

  2. DEMA 매개 변수 최적화. 최적의 설정을 결정하기 위해 다른 값을 테스트.

  3. 스톱 손실 메커니즘을 추가합니다. 과대 스톱을 방지하기 위해 ATR 값을 기반으로 스톱 손실을 설정합니다.

  4. 신호 필터를 추가합니다. 잘못된 신호를 방지하기 위해 주요 지점에서 다른 지표로부터 확인을 증가시킵니다. 예를 들어, 트렌드 반전 지점에서 볼륨 확인을 추가합니다.

  5. 포지션 크기를 개선합니다. 시장 변동성과 위험을 기반으로 크기를 동적으로 조정합니다.

결론

이 전략은 트렌드 추적 및 신호 필터링에 기반한 양적 거래 전략을 구현하기 위해 슈퍼 트렌드 및 DEMA 지표의 강점을 결합합니다. 안정성과 수익성을 더욱 향상시키기 위해 매개 변수 조정, 스톱 손실 및 신호 필터로 최적화를 위한 충분한 공간이 있습니다. 전략 논리는 통제 가능한 위험에 따라 간단하고 쉽게 구현됩니다. 라이브 거래에 적합합니다.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Krish\'s Supertrend Strategy', overlay=true)

// Supertrend Settings
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)

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='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
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.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', 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='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
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.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

// DEMA Settings
dema_length = 200
dema = ta.ema(close, dema_length)

// Long and Short Conditions
longCondition = buySignal and close > dema
shortCondition = sellSignal and close < dema

// Strategy Entry and Exit
strategy.entry('Long', strategy.long, when=longCondition)
strategy.entry('Short', strategy.short, when=shortCondition)

strategy.close('Long', when=ta.change(trend) or close < dema)
strategy.close('Short', when=ta.change(trend) or close > dema)

// Plotting
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

fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90)
fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90)

// Alerts (using plotshape for alerts in strategies)
plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
changeCond = trend != trend[1]
plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)




더 많은