Strategi ini adalah versi yang lebih baik dari sistem trend-mengikuti Bollinger Bands tradisional. Ini memantau aksi harga selama tiga sentuhan berturut-turut dari Bollinger Bands untuk mengkonfirmasi keandalan tren, menghasilkan tingkat kemenangan yang lebih tinggi. Strategi ini menggunakan rata-rata bergerak 20 periode sebagai band tengah dan 2 penyimpangan standar untuk band atas dan bawah. Melalui analisis rinci hubungan harga dengan batas band, ia mencapai sistem perdagangan dengan keuntungan yang unik.
Mekanisme ini digunakan untuk mengidentifikasi pergerakan harga yang terus menerus. Sistem ini menghasilkan sinyal panjang ketika harga pecah di bawah band bawah tiga kali berturut-turut, dan sinyal pendek ketika harga pecah di atas band atas tiga kali berturut-turut. Mekanisme ini secara efektif menyaring keluar breakout palsu, meningkatkan keandalan perdagangan. Strategi ini menggunakan band tengah (20-periode moving average) sebagai sinyal keluar, menyelesaikan perdagangan ketika harga kembali ke band tengah.
Strategi ini meningkatkan sistem perdagangan Bollinger Bands tradisional dengan menerapkan pendekatan tren yang sangat andal. Mekanisme konfirmasi tiga sentuhan yang unik secara efektif meningkatkan tingkat kemenangan, sementara mekanisme keluar berbasis rata-rata bergerak memberikan solusi pengambilan keuntungan yang rasional. Meskipun risiko yang melekat ada, arah optimasi yang disarankan dapat lebih meningkatkan stabilitas dan profitabilitas 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")