Strategi ini adalah sistem perdagangan reversi rata-rata adaptif berdasarkan indikator Bollinger Bands. Ini menangkap peluang overbought dan oversold dengan memantau crossover harga dengan Bollinger Bands, perdagangan pada prinsip reversi rata-rata. Strategi ini menggabungkan ukuran posisi dinamis dan mekanisme manajemen risiko, cocok untuk beberapa pasar dan kerangka waktu.
Logika inti didasarkan pada poin berikut: 1. Menggunakan rata-rata bergerak 20 periode sebagai band tengah, dengan 2 standar deviasi untuk band atas dan bawah. 2. Membuka posisi panjang ketika harga pecah di bawah band bawah (sinyal oversold). 3. Membuka posisi short ketika harga menembus band atas (sinyal overbought). Mengambil keuntungan ketika harga kembali ke band tengah. 5. Menetapkan 1% stop loss dan 2% mengambil keuntungan, mencapai rasio risiko-imbalan 2: 1. 6. Menggunakan ukuran posisi berdasarkan persentase, menginvestasikan 1% dari ekuitas akun per perdagangan.
Risiko pasar konsolidasi - Dapat mengakibatkan kerugian karena perdagangan yang sering terjadi di pasar yang berbeda. Solusi: Tambahkan filter tren, hanya perdagangan ketika tren jelas.
Risiko Breakout Palsu - Harga dapat dengan cepat berbalik setelah breakout. Solusi: Tambahkan sinyal konfirmasi seperti volume atau indikator teknis lainnya.
Risiko sistematis - Dapat mengalami kerugian yang lebih besar dalam kondisi pasar yang ekstrem. Solusi: Mengimplementasikan batas maksimum penarikan, secara otomatis menghentikan perdagangan ketika ambang batas tercapai.
Strategi ini menangkap deviasi harga menggunakan Bollinger Bands dan berdagang pada prinsip reversi rata-rata. Manajemen risiko yang komprehensif dan aturan perdagangan yang jelas memberikan kepraktisan yang baik. Melalui optimasi yang disarankan, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut. Ini cocok untuk pedagang kuantitatif yang mencari pengembalian yang stabil.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Inputs for Bollinger Bands bbLength = input.int(20, title="Bollinger Bands Length") bbStdDev = input.float(2.0, title="Bollinger Bands StdDev") // Inputs for Risk Management stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1, step=0.1) takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1) // Calculate Bollinger Bands basis = ta.sma(close, bbLength) bbStdev = ta.stdev(close, bbLength) upper = basis + bbStdDev * bbStdev lower = basis - bbStdDev * bbStdev // Plot Bollinger Bands plot(basis, color=color.blue, title="Middle Band") plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") // Entry Conditions longCondition = ta.crossover(close, lower) shortCondition = ta.crossunder(close, upper) // Exit Conditions exitLongCondition = ta.crossunder(close, basis) exitShortCondition = ta.crossover(close, basis) // Stop Loss and Take Profit Levels longStopLoss = close * (1 - stopLossPerc / 100) longTakeProfit = close * (1 + takeProfitPerc / 100) shortStopLoss = close * (1 + stopLossPerc / 100) shortTakeProfit = close * (1 - takeProfitPerc / 100) // Execute Long Trades if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit) // Close Positions on Exit Conditions if (exitLongCondition and strategy.position_size > 0) strategy.close("Long") if (exitShortCondition and strategy.position_size < 0) strategy.close("Short") // 🔊 SOUND ALERTS IN BROWSER 🔊 if (longCondition) alert("🔔 Long Entry Signal!", alert.freq_once_per_bar_close) if (shortCondition) alert("🔔 Short Entry Signal!", alert.freq_once_per_bar_close) if (exitLongCondition) alert("🔔 Closing Long Trade!", alert.freq_once_per_bar_close) if (exitShortCondition) alert("🔔 Closing Short Trade!", alert.freq_once_per_bar_close)