SuperTrend와 DEMA를 기반으로 한 트렌드 추종 전략


생성 날짜: 2023-12-08 16:42:14 마지막으로 수정됨: 2023-12-08 16:42:14
복사: 0 클릭수: 1014
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

SuperTrend와 DEMA를 기반으로 한 트렌드 추종 전략

개요

이 전략은 슈퍼 트렌드 지표와 DEMA 지표를 결합하여 트렌드 추적 거래 전략을 구현한다. 가격이 상반도를 초과할 때 구매 신호를 발생시키고, 가격이 하반도로 떨어질 때 판매 신호를 발생시키며, DEMA 지표 필터링 거짓 신호와 결합한다. 이 전략은 트렌드적인 행태에 적용되며, 트렌드를 효과적으로 추적하고, 필터링 흔들림이다.

전략 원칙

이 전략은 주로 슈퍼 트렌드 지표에 기반하여 가격 트렌드 방향을 판단한다. 슈퍼 트렌드 지표는 ATR 지표와 결합하여 가격 트렌드를 효과적으로 판단한다. 가격이 상승할 때 위 궤도를 형성하고, 가격이 하락할 때 하향 궤도를 형성한다. 가격이 하향 궤도에서 돌파 할 때 트렌드 전환으로 구매 신호를 생성한다. 가격이 위 궤도에서 돌파 할 때 트렌드 전환으로 판매 신호를 생성한다.

잘못된 신호를 필터링하기 위해, 이 전략은 DEMA 지표도 결합한다. 구매 신호는 가격이 상반도를 넘어서 DEMA 라인보다 높을 때만 발생한다. 판매 신호는 가격이 하반도를 넘어서 DEMA 라인보다 낮을 때만 발생한다. 이것은 흔들리는 시장에서 가짜 신호를 효과적으로 필터링 할 수 있다.

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

  1. 가격이 하위 궤도에서 벗어날 때 트렌드 회전으로 구매 신호를 생성합니다.
  2. 가격이 상반에서 돌파할 때 트렌드 회전으로 판매 신호를 생성합니다.
  3. 구매 신호가 나타나고 가격이 DEMA 라인보다 높을 때만 구매 신호가 실제로 생성됩니다.
  4. 판매 신호가 나타나고 가격이 DEMA 라인보다 낮으면 판매 신호가 실제로 생성됩니다.

이런 논리적인 설계로, 동향적인 상황에서도 잘 움직일 수 있고, 흔들리는 시장에서 자주 포지션을 열지 않을 수 있다.

전략적 이점

  • 슈퍼 트렌드 지표와 DEMA 지표와 결합하여 트렌드 추적과 신호 필터링의 이중 효과를 구현합니다.
  • 슈퍼 트렌드 지표의 매개 변수를 쉽게 최적화 할 수 있으며 다양한 품종과 주기에 따라 조정할 수 있습니다.
  • DEMA 지표 매개 변수를 최적화하기 쉽고, 반복 테스트가 필요하지 않습니다.
  • 전략은 트렌디스틱한 행동에 적용되며, 트렌드를 추적할 수 있습니다.
  • DEMA 지표를 통해 시장의 잘못된 신호를 효과적으로 필터링하는 것
  • 전략의 구현은 간단하고 이해하기 쉽고 수정할 수 있습니다.

전략적 위험

  • 가격의 급격한 변동에 대응하는 전략은 좋지 않습니다.
  • 트렌드가 바뀌면 손실이 발생할 수 있습니다.
  • DEMA 지수 변수가 잘못 설정되어 구매/판매의 최적의 시점을 놓칠 수 있습니다.
  • SuperTrend 지표 파라미터가 ATR 주기가 잘못 설정되어 잘못된 신호를 생성할 수 있습니다.

위험 해결 방법:

  • DEMA 변수와 SuperTrend 변수를 최적화
  • 단편적 손실을 제어하기 위한 단편적 손실을 제어하는 전략
  • 위키피디아에 따르면, “이번 테스트는 위키피디아를 이용한 데이터의 양을 측정하는 데 도움이 될 것입니다”.

전략 최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  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)