Strategi ini menggabungkan WaveTrend Oscillator (WT) dan Volume Weighted Average Price (VWAP) untuk menangkap peluang pembalikan trend yang berpotensi dengan mengenal pasti perbezaan antara harga dan penunjuk. Strategi ini menggunakan Average True Range (ATR) untuk menentukan tahap stop-loss dan secara dinamik menyesuaikan saiz kedudukan berdasarkan peratusan risiko akaun. Kekuatan utama strategi terletak pada keupayaan mengikuti trend dan langkah pengurusan risiko, tetapi ia mungkin mengalami kerugian di pasaran yang berbelit-belit. Arahan pengoptimuman termasuk menambah penapis tambahan dan meningkatkan peraturan masuk dan keluar.
Strategi WaveTrend Oscillator Divergence menggabungkan penunjuk WaveTrend dan Harga Purata Bertimbang Volume untuk mengenal pasti peluang pembalikan trend yang berpotensi. Kekuatan strategi terletak pada keupayaan mengikuti trend dan langkah pengurusan risiko, tetapi ia mungkin menghadapi risiko di pasaran yang bergolak. Strategi ini boleh dioptimumkan lagi dengan memperkenalkan penapis tambahan, penyesuaian parameter dinamik, dan peraturan kemasukan dan keluar yang lebih baik. Ujian balik menyeluruh dan analisis berpandangan ke hadapan adalah penting sebelum melaksanakan strategi.
/*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")