Strategi ini adalah sistem trend following yang menggabungkan Bollinger Bands, metrik volatilitas, dan manajemen risiko. Strategi ini menangkap peluang tren dengan memantau price breakout di luar Bollinger Bands sambil menyesuaikan ukuran posisi secara dinamis menggunakan ATR untuk pengendalian risiko yang tepat. Strategi ini juga menggabungkan mekanisme deteksi periode konsolidasi untuk secara efektif menyaring sinyal palsu di pasar yang bervariasi.
Strategi ini beroperasi berdasarkan logika inti berikut: 1. Menggunakan rata-rata bergerak 20 periode sebagai band tengah Bollinger Bands, dengan band atas dan bawah pada 2 standar deviasi. 2. Mengidentifikasi periode konsolidasi pasar dengan membandingkan lebar Bollinger Band saat ini dengan rata-rata bergerak. 3. Selama periode non-konsolidasi, masuk posisi panjang pada breakout band atas dan posisi pendek pada breakout band bawah. 4. Menggunakan ATR 14 periode untuk secara dinamis menghitung tingkat stop loss dan menetapkan tingkat take profit berdasarkan rasio risiko-manfaat 2: 1. 5. Menghitung secara otomatis ukuran posisi untuk setiap perdagangan berdasarkan batas risiko akun 1% dan nilai ATR.
Strategi ini menangkap tren melalui breakout Bollinger Bands sambil menggabungkan sistem pengendalian risiko yang komprehensif. Kekuatannya terletak pada kemampuan beradaptasi yang tinggi dan risiko yang terkendali, meskipun perhatian harus diberikan pada breakout palsu dan risiko pembalikan tren. Strategi ini memiliki ruang untuk perbaikan lebih lanjut melalui penambahan indikator konfirmasi tren dan mengoptimalkan mekanisme penyesuaian parameter. Secara keseluruhan, strategi ini merupakan strategi tren yang logis dan praktis.
/*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!")