Strategi ini adalah sistem trend berikut yang menggabungkan Bollinger Bands, metrik turun naik, dan pengurusan risiko. Ia menangkap peluang trend dengan memantau penembusan harga di luar Bollinger Bands sambil menyesuaikan saiz kedudukan secara dinamik menggunakan ATR untuk kawalan risiko yang tepat. Strategi ini juga menggabungkan mekanisme pengesanan tempoh konsolidasi untuk menapis isyarat palsu secara berkesan di pasaran berkisar.
Strategi ini beroperasi berdasarkan logik teras berikut: 1. Menggunakan purata bergerak 20 tempoh sebagai band tengah Bollinger Bands, dengan band atas dan bawah pada 2 penyimpangan piawai. 2. Mengenali tempoh penyatuan pasaran dengan membandingkan lebar Bollinger Band semasa dengan purata bergerak. 3. Semasa tempoh bukan penyatuan, masukkan kedudukan panjang pada pecah band atas dan kedudukan pendek pada pecah band bawah. 4. Menggunakan ATR 14 tempoh untuk mengira secara dinamik paras stop-loss dan menetapkan tahap mengambil keuntungan berdasarkan nisbah risiko-balasan 2: 1. 5. Mengira secara automatik saiz kedudukan untuk setiap perdagangan berdasarkan had risiko akaun 1% dan nilai ATR.
Strategi ini menangkap trend melalui breakout Bollinger Bands sambil menggabungkan sistem kawalan risiko yang komprehensif. Kekuatannya terletak pada kemampuan beradaptasi yang tinggi dan risiko terkawal, walaupun perlu memberi perhatian kepada breakout palsu dan risiko pembalikan trend. Strategi ini mempunyai ruang untuk peningkatan lanjut melalui penambahan penunjuk pengesahan trend dan mengoptimumkan mekanisme penyesuaian parameter. Secara keseluruhan, ia mewakili strategi trend berikut yang logik dan praktikal.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-08 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Breakout Strategy", overlay=true) // Input parameters length = input(20, title="Bollinger Bands Length") stdDev = input(2.0, title="Standard Deviation") riskRewardRatio = input(2.0, title="Risk/Reward Ratio") atrLength = input(14, title="ATR Length") riskPercentage = input(1.0, title="Risk Percentage per Trade") // Calculate Bollinger Bands basis = ta.sma(close, length) dev = stdDev * ta.stdev(close, length) upperBand = basis + dev lowerBand = basis - dev // Calculate ATR for position sizing atr = ta.atr(atrLength) // Plot Bollinger Bands plot(basis, color=color.blue, title="Basis") plot(upperBand, color=color.red, title="Upper Band") plot(lowerBand, color=color.green, title="Lower Band") // Market Consolidation Detection isConsolidating = (upperBand - lowerBand) < ta.sma(upperBand - lowerBand, length) * 0.5 // Breakout Conditions longCondition = ta.crossover(close, upperBand) and not isConsolidating shortCondition = ta.crossunder(close, lowerBand) and not isConsolidating // Risk Management: Calculate position size equity = strategy.equity riskAmount = equity * (riskPercentage / 100) positionSize = riskAmount / (atr * riskRewardRatio) // Execute trades with risk management if (longCondition) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Take Profit", from_entry="Long", limit=close + atr * riskRewardRatio, stop=close - atr) if (shortCondition) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Take Profit", from_entry="Short", limit=close - atr * riskRewardRatio, stop=close + atr) // Alert conditions for breakouts alertcondition(longCondition, title="Long Breakout", message="Long breakout detected!") alertcondition(shortCondition, title="Short Breakout", message="Short breakout detected!")