Strategi ini adalah sistem perdagangan kuantitatif berdasarkan penunjuk WaveTrend, yang menggabungkan mekanisme pengurusan risiko dinamik. Strategi ini mengira kekuatan trend melalui turun naik harga, menapis isyarat di rantau yang terlalu banyak dibeli dan terlalu banyak dijual, dan menggunakan langkah kawalan risiko termasuk mekanisme henti rugi, mengambil keuntungan, dan hentian.
Inti strategi ini terletak pada pengiraan penunjuk WaveTrend menggunakan harga HLC3. Ia mula-mula mengira purata bergerak eksponensial (EMA) tempoh n1 sebagai garis asas, kemudian mengira penyimpangan harga dari garis asas ini, menormalkan mereka dengan pekali 0.015. Ini menghasilkan dua garis gelombang, wt1 dan wt2, masing-masing mewakili garis cepat dan perlahan. Isyarat perdagangan dihasilkan berdasarkan garis-garis ini melintasi tahap overbought dan oversold, digabungkan dengan sistem kawalan risiko berlapis-lapis.
Strategi ini mencapai pendekatan perdagangan kuantitatif yang komprehensif dengan menggabungkan penunjuk WaveTrend dengan sistem pengurusan risiko yang kukuh. Kekuatannya utama terletak pada kemampuan beradaptasi dan pendedahan risiko yang terkawal, walaupun peniaga perlu mengoptimumkan parameter dan meningkatkan strategi berdasarkan keadaan pasaran sebenar. Melalui pengoptimuman dan penyempurnaan yang berterusan, strategi ini menunjukkan janji untuk mencapai pulangan yang stabil dalam persekitaran perdagangan sebenar.
/*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))