리소스 로딩... 로딩...

웨이브트렌드 오시레이터 디버전스 전략

저자:차오장, 날짜: 2024-05-28 17:43:54
태그:WTVWAP

img

전반적인 설명

이 전략은 웨브트렌드 오시일레이터 (WT) 와 볼륨 가중화 평균 가격 (VWAP) 를 결합하여 가격과 지표 사이의 오차를 식별하여 잠재적 인 트렌드 역전 기회를 포착합니다. 전략은 스톱 로스 수준을 결정하고 계정 위험 비율에 따라 포지션 사이징을 동적으로 조정하기 위해 평균 진정한 범위 (ATR) 를 사용합니다. 전략의 주요 강점은 트렌드 추적 기능과 위험 관리 조치에 있습니다. 그러나 불안정한 시장에서 손실을 입을 수 있습니다. 최적화 방향은 추가 필터를 추가하고 입출 규칙을 개선하는 것을 포함합니다.

전략 원칙

  1. 웨이브트렌드 오시레이터 (WT) 를 계산합니다. 현재 가격을 채널과 평균과 비교하여 모멘텀 오시레이터를 생성합니다.
  2. 부피 가중 평균 가격 (Volume Weighted Average Price, VWAP) 을 계산합니다. 부피 가중 평균 이동 가격을 계산합니다.
  3. 가격과 WT 지표 사이의 오차를 식별합니다. 가격이 새로운 최고/하위치를 달성하고 지표가 그렇게하지 않을 때 잠재적 인 트렌드 전환이 나타납니다.
  4. 진입 조건: 상승차가 발견되면 긴 포지션을 개설하고, 하락차가 발견되면 포지션을 닫습니다.
  5. 스톱 로스 (Stop Loss): 평균 실제 범위 (ATR) 를 기반으로 동적 스톱 로스 레벨을 설정합니다.
  6. 포지션 크기: 계정 리스크 비율과 스톱 로스 거리에 따라 각 거래의 포지션 크기를 동적으로 조정합니다.
  7. 배경 색상: 지표의 과잉 구매/ 과잉 판매 수준에 따라 배경 색상을 변경하여 추가 시각 신호를 제공합니다.

이점 분석

  1. 트렌드 추적: 가격과 지표 사이의 차이를 파악함으로써 전략은 잠재적인 트렌드 역전 기회를 포착 할 수 있습니다.
  2. 리스크 관리: ATR 기반의 동적 스톱 로스 및 리스크 비율에 기초한 포지션 사이즈의 사용은 잠재적 손실을 제어하는 데 도움이 됩니다.
  3. 시각 신호: 지표의 과잉 구매/ 과잉 판매 상태에 따라 배경 색상이 변경되며 거래자에게 추가 시각 신호를 제공합니다.
  4. 유연성: 전략의 매개 변수 (예: 채널 길거리, 평균 길거리, 과소 구매/ 과소 판매 수준) 는 다른 시장 조건과 거래 스타일에 맞게 조정될 수 있습니다.

위험 분석

  1. 불안한 시장: 명확한 추세가 없는 시장 조건에서 전략은 연속적인 손실을 입을 수 있습니다.
  2. 매개 변수 최적화: 전략의 성능은 매개 변수 선택에 크게 달려 있으며, 최적의 미만의 매개 변수 설정은 평균 미만의 결과를 초래할 수 있습니다.
  3. 과잉 거래: 빈번한 진입 및 출구 신호는 높은 거래 비용을 초래할 수 있으며 전략의 전반적인 성과에 영향을 줄 수 있습니다.

최적화 방향

  1. 트렌드 필터: 트렌드 확증 지표 (예를 들어, 이동 평균) 를 추가로 도입하여 잠재적인 잘못된 신호를 필터링합니다.
  2. 동적 매개 변수: 시장 변동성에 기초하여 지표 매개 변수를 조정하고, 낮은 변동성에서 더 짧은 채널과 평균 길이를 사용하며, 높은 변동성에서 더 긴 매개 변수를 사용합니다.
  3. 영업이익: 수익성 있는 포지션을 더 잘 관리하기 위해 위험/이익 비율 또는 목표 가격에 기반한 동적 영업이익 수준을 도입합니다.
  4. 장기/단순 필터: 전체 시장 트렌드 방향 (예를 들어, 장기 이동 평균) 을 기반으로 트렌드 신호를 필터하여 트렌드 방향에서만 거래합니다.

요약

웨이브트렌드 오시레이터 디버전스 전략 (WaveTrend Oscillator Divergence Strategy) 은 웨이브트렌드 지표와 볼륨 가중 평균 가격을 결합하여 잠재적 인 트렌드 역전 기회를 식별합니다. 전략의 강점은 트렌드 추적 기능과 위험 관리 조치에 있지만 불안정한 시장에서 위험에 직면 할 수 있습니다. 전략은 추가 필터, 동적 매개 변수 조정 및 향상된 입출 규칙 도입으로 더 최적화 될 수 있습니다. 철저한 백테스팅과 미래 분석은 전략을 구현하기 전에 중요합니다.


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

//@version=5
strategy("PipShiesty Swagger", overlay=true)

// WaveTrend Oscillator (WT)
n1 = input.int(10, "Channel Length")
n2 = input.int(21, "Average Length")
obLevel1 = input.float(60.0, "Overbought Level 1")
obLevel2 = input.float(53.0, "Overbought Level 2")
osLevel1 = input.float(-60.0, "Oversold Level 1")
osLevel2 = input.float(-53.0, "Oversold Level 2")

ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

// VWAP
vwap = ta.vwma(close, n1)

// Signal Line
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Bullish and Bearish Divergences
bullishDivergence = (ta.lowest(close, 5) > ta.lowest(close[1], 5)) and (wt1 < wt1[1]) and (close > close[1])
bearishDivergence = (ta.highest(close, 5) < ta.highest(close[1], 5)) and (wt1 > wt1[1]) and (close < close[1])

// Plot WaveTrend Oscillator
plot(wt1, title="WT1", color=color.blue)
plot(wt2, title="WT2", color=color.red)

// Plot Divergences
plotshape(series=bullishDivergence, location=location.belowbar, color=color.green, style=shape.labelup, title="Bullish Divergence")
plotshape(series=bearishDivergence, location=location.abovebar, color=color.red, style=shape.labeldown, title="Bearish Divergence")

// Risk Management Parameters
riskPercentage = input.float(1, title="Risk Percentage per Trade", minval=0.1, step=0.1) / 100
stopLossATR = input.float(1.5, title="Stop Loss ATR Multiplier", minval=0.5, step=0.1)

// ATR Calculation
atr = ta.atr(14)

// Position Size Calculation
calculatePositionSize(stopLoss) =>
    riskAmount = strategy.equity * riskPercentage
    positionSize = riskAmount / stopLoss
    positionSize

// Entry and Exit Logic with Stop Loss
if bullishDivergence
    stopLoss = low - atr * stopLossATR
    positionSize = calculatePositionSize(close - stopLoss)
    strategy.entry("Buy", strategy.long, qty=positionSize)
    strategy.exit("Sell", from_entry="Buy", stop=stopLoss)

if bearishDivergence
    strategy.close("Buy")

// Plot VWAP
plot(vwap, title="VWAP", color=color.orange)

// Background color to indicate Overbought/Oversold conditions
bgcolor(wt1 > obLevel1 ? color.new(color.red, 90) : na, title="Overbought Level 1")
bgcolor(wt1 < osLevel1 ? color.new(color.green, 90) : na, title="Oversold Level 1")
bgcolor(wt1 > obLevel2 ? color.new(color.red, 70) : na, title="Overbought Level 2")
bgcolor(wt1 < osLevel2 ? color.new(color.green, 70) : na, title="Oversold Level 2")


관련

더 많은