Strategi ini adalah sistem perdagangan kuantitatif berdasarkan indikator WaveTrend, yang menggabungkan mekanisme manajemen risiko dinamis. Strategi ini menghitung kekuatan tren melalui fluktuasi harga, menyaring sinyal di wilayah yang terlalu banyak dibeli dan terlalu banyak dijual, dan menerapkan langkah-langkah pengendalian risiko termasuk mekanisme stop-loss, take-profit, dan trailing stop.
Inti dari strategi ini terletak pada perhitungan indikator WaveTrend menggunakan harga HLC3. Pertama-tama menghitung rata-rata bergerak eksponensial (EMA) periode n1 sebagai garis dasar, kemudian menghitung penyimpangan harga dari garis dasar ini, menormalkan dengan koefisien 0,015. Ini menghasilkan dua garis gelombang, wt1 dan wt2, masing-masing mewakili garis cepat dan lambat. Sinyal perdagangan dihasilkan berdasarkan garis ini yang melintasi tingkat overbought dan oversold, dikombinasikan dengan sistem kontrol risiko berlapis-lapis.
Strategi ini mencapai pendekatan perdagangan kuantitatif yang komprehensif dengan menggabungkan indikator WaveTrend dengan sistem manajemen risiko yang kuat. Kekuatan utamanya terletak pada kemampuan beradaptasi dan paparan risiko yang terkendali, meskipun pedagang perlu mengoptimalkan parameter dan meningkatkan strategi berdasarkan kondisi pasar yang sebenarnya. Melalui optimalisasi dan penyempurnaan terus-menerus, strategi ini menunjukkan janji untuk mencapai pengembalian yang stabil dalam lingkungan perdagangan nyata.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true) // Input Parameters n1 = input.int(10, "Channel Length") n2 = input.int(21, "Average Length") obLevel1 = input.int(60, "Over Bought Level 1") obLevel2 = input.int(53, "Over Bought Level 2") osLevel1 = input.int(-60, "Over Sold Level 1") osLevel2 = input.int(-53, "Over Sold Level 2") // Risk Management Inputs stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100) takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100) trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100) trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100) // WaveTrend Calculation 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) wt1 = tci wt2 = ta.sma(wt1, 4) // Plotting Original Indicators plot(0, color=color.gray) plot(obLevel1, color=color.red) plot(osLevel1, color=color.green) plot(obLevel2, color=color.red, style=plot.style_line) plot(osLevel2, color=color.green, style=plot.style_line) plot(wt1, color=color.green) plot(wt2, color=color.red, style=plot.style_line) plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80) // Buy and Sell Signals with Risk Management longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2) shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2) // Strategy Entry with Risk Management if (longCondition) entryPrice = close stopLossPrice = entryPrice * (1 - stopLossPercent/100) takeProfitPrice = entryPrice * (1 + takeProfitPercent/100) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 + trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100)) if (shortCondition) entryPrice = close stopLossPrice = entryPrice * (1 + stopLossPercent/100) takeProfitPrice = entryPrice * (1 - takeProfitPercent/100) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 - trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100))