Strategi ini adalah versi yang lebih baik daripada sistem trend berikut Bollinger Bands tradisional. Ia memantau tindakan harga untuk tiga sentuhan berturut-turut Bollinger Bands untuk mengesahkan kebolehpercayaan trend, menghasilkan kadar kemenangan yang lebih tinggi. Strategi ini menggunakan purata bergerak 20 tempoh sebagai band tengah dan 2 penyimpangan standard untuk band atas dan bawah. Melalui analisis terperinci hubungan harga dengan sempadan band, ia mencapai sistem perdagangan dengan kelebihan yang unik.
Mekanisme ini berfungsi untuk mengesan pergerakan harga yang berterusan di bawah band bawah tiga kali berturut-turut, dan sinyal pendek apabila harga melangkaui band atas tiga kali berturut-turut. Mekanisme ini berkesan menapis pecah palsu, meningkatkan kebolehpercayaan perdagangan. Strategi ini menggunakan band tengah (20-period moving average) sebagai isyarat keluar, melengkapkan perdagangan apabila harga kembali ke band tengah. Reka bentuk ini memastikan kedua-dua trend menangkap dan mengambil keuntungan tepat pada masanya.
Strategi ini meningkatkan sistem perdagangan Bollinger Bands tradisional dengan melaksanakan pendekatan trend yang sangat boleh dipercayai. Mekanisme pengesahan tiga sentuhan yang uniknya secara berkesan meningkatkan kadar kemenangan, sementara mekanisme keluar berdasarkan purata bergerak menyediakan penyelesaian pengambilan keuntungan yang rasional. Walaupun terdapat risiko yang melekat, arah pengoptimuman yang dicadangkan dapat meningkatkan kestabilan dan keuntungan strategi.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Bollinger Bands Strategy - 3 Crossings", overlay=true) // Input Parameters length = input.int(20, title="Bollinger Bands Length", minval=1) src = input(close, title="Source") mult = input.float(2.0, title="Multiplier", step=0.1) // Calculate Bollinger Bands basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot Bollinger Bands plotBasis = plot(basis, color=color.blue, title="Basis") plotUpper = plot(upper, color=color.red, title="Upper Band") plotLower = plot(lower, color=color.green, title="Lower Band") fill(plot1=plotUpper, plot2=plotLower, color=color.new(color.blue, 90), title="Band Fill") // Counter Variables var int longCrossCount = 0 var int shortCrossCount = 0 // Detect Crossings longCondition = close < lower // Price closes below the lower band shortCondition = close > upper // Price closes above the upper band if longCondition longCrossCount += 1 // Increment the counter for long shortCrossCount := 0 // Reset the short counter if shortCondition shortCrossCount += 1 // Increment the counter for short longCrossCount := 0 // Reset the long counter if not longCondition and not shortCondition longCrossCount := 0 // Reset if no crossing shortCrossCount := 0 // Entry and Exit Rules if longCrossCount >= 3 and strategy.position_size <= 0 strategy.entry("Long", strategy.long) longCrossCount := 0 // Reset the counter after entering if shortCrossCount >= 3 and strategy.position_size >= 0 strategy.entry("Short", strategy.short) shortCrossCount := 0 // Reset the counter after entering // Exit Condition (When Price Returns to the Middle Band) exitCondition = ta.crossover(src, basis) or ta.crossunder(src, basis) if exitCondition and strategy.position_size > 0 strategy.close("Long") if exitCondition and strategy.position_size < 0 strategy.close("Short")