
Die Strategie kombiniert WaveTrend-Schockindikator (WT) und Volumen-Wert-Durchschnittspreis (VWAP), um potenzielle Trendwende-Gelegenheiten durch die Identifizierung von Preisen und Abweichungen des Indikators zu erfassen. Die Strategie verwendet ATR (Average True Range), um die Stop-Position zu ermitteln und die Position dynamisch anhand des Prozentsatzes der Konto-Risiken zu skalieren. Die Hauptvorteile der Strategie liegen in ihrer Fähigkeit, Trends zu verfolgen und Risikomanagementmaßnahmen zu ergreifen, die jedoch in einem schwachen Markt zu Verlusten führen können.
Die WaveTrend Oscillator Divergence Strategy kombiniert eine Kombination aus schwankenden Trend-Indikatoren und einem gewogenen Kursdurchschnitt, um potenzielle Trendwende-Gelegenheiten zu identifizieren. Die Strategie hat ihre Vorteile in ihrer Fähigkeit, Trends zu verfolgen und Risikomanagementmaßnahmen zu ergreifen, kann jedoch in einem schwankenden Markt gefährdet sein. Die Strategie kann durch die Einführung zusätzlicher Filterbedingungen, Anpassung der dynamischen Parameter und verbesserter Ausgangsregeln weiter optimiert werden.
/*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")