
Strategi ini adalah sistem mengikuti tren yang menggabungkan Bollinger Bands, volatilitas, dan manajemen risiko. Ia terutama menangkap peluang tren dengan memantau cara harga menembus jalur atas dan bawah Bollinger Bands, dan pada saat yang sama menyesuaikan ukuran posisi secara dinamis dalam kombinasi dengan ATR untuk mencapai pengendalian risiko yang tepat. Strategi ini juga menggabungkan mekanisme untuk mengidentifikasi periode konsolidasi pasar untuk secara efektif menyaring sinyal palsu di pasar yang bergejolak.
Strategi ini beroperasi berdasarkan logika inti berikut:
Strategi ini menangkap tren melalui terobosan Bollinger Band dan menggabungkannya dengan sistem pengendalian risiko yang baik. Keunggulannya adalah kemampuan beradaptasi yang kuat dan risiko yang dapat dikendalikan, tetapi kita tetap perlu memperhatikan risiko terobosan palsu dan pembalikan tren. Masih ada ruang untuk perbaikan strategi lebih lanjut dengan menambahkan indikator konfirmasi tren, mengoptimalkan mekanisme penyesuaian parameter, dll. Secara keseluruhan, ini adalah strategi mengikuti tren dengan logika yang jelas dan kepraktisan yang kuat.
/*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!")