이중 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-16 15:03:55
태그:

img

전반적인 설명

이중 트렌드 추적 전략 (Dual Trend Tracking Strategy) 은 슈퍼 트렌드 지표, 이중 기하급수적 이동 평균 (DEMA) 및 볼링거 밴드를 결합한 복합 전략이다. 트렌드가 역전될 때 여러 기술적 지표의 장점을 활용하여 구매 및 판매 신호를 적시에 포착하는 것을 목표로합니다.

전략 논리

이 전략은 세 가지 주요 부분으로 구성됩니다.

  1. 슈퍼트렌드 지표: 현재 트렌드 방향을 결정하기 위해 상향 브레이크 라인과 하향 브레이크 라인을 계산합니다. 가격이 슈퍼트렌드 라인에서 상향으로 깨지면 구매 신호를 생성하고 가격이 하향으로 깨지면 판매 신호를 생성합니다.

  2. 이중 기하급수적 이동 평균 (DEMA): 단순한 이동 평균과 기하급수적 이동 평균의 특징을 결합한 트렌드 추적 지표로, 가격 변화에 더 빠르게 대응할 수 있다. 전략은 장기적인 트렌드 방향을 판단하기 위해 200일 DEMA를 설정한다.

  3. 볼링거 밴드: 가격의 변동 범위를 나타냅니다. 볼링거 밴드의 비정상적 인 수축 또는 확장은 잠재적 인 트렌드 반전을 신호합니다.

슈퍼트렌드 지표와 DEMA가 모두 구매/판매 신호를 발행하면 전략은 해당 위치에 진입합니다. 또한 볼링거 밴드의 이상은 보조 판단 신호로 사용될 수 있습니다.

장점

  1. 여러 가지 지표의 조합은 잘못된 신호를 줄입니다.

  2. 슈퍼트렌드 지표는 사소한 가격 변화에 민감하지 않으며 트렌드 전환점에만 신호를 생성하여 과도한 거래 빈도를 피합니다.

  3. DEMA 매끄러운 곡선은 정확하고 신뢰할 수 있는 장기 트렌드를 판단합니다.

  4. 볼링거 밴드는 트렌드 반전 지점을 결정하는데 도움을 줍니다.

위험 과 해결책

  1. 과도하게 민감한 슈퍼 트렌드 매개 변수는 더 많은 소음을 발생시킬 수 있습니다. ATR 기간과 곱셈 매개 변수를 최적화하면 개선 될 수 있습니다.

  2. 긴 DEMA 기간은 열악한 트렌드를 초래합니다. 100일 같은 짧은 기간을 테스트할 수 있습니다.

  3. 여러 지표의 판단을 결합할 때 불일치 신호입니다. 이 경우 슈퍼 트렌드 지표는 주요 신호로 간주 될 수 있습니다.

최적화 방향

  1. 다른 ATR 기간과 곱셈 매개 변수를 테스트하여 슈퍼 트렌드 지표에 최적의 조합을 찾습니다.

  2. DEMA 기간 매개 변수를 최적화해

  3. KDJ, MACD 등과 같은 다른 보조 지표를 추가합니다.

  4. 스톱 로스 전략을 도입하세요.

요약

이중 트렌드 추적 전략은 여러 지표를 사용하여 슈퍼트렌드, DEMA 및 볼링거 밴드의 강점을 결합하여 트렌드를 포착하는 동안 신호 품질을 향상시킵니다. 매개 변수 최적화 및 스톱 로스 메커니즘을 추가함으로써 추가 성능 향상이 기대 될 수 있습니다.


/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
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

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : 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 ? 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(showSupertrend ? (trend == 1 ? na : dn) : na, 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 ? 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))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)

// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell")
    alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover")
    alert("Sell Signal - Supertrend")


더 많은