Strategi ini menggabungkan Bollinger Bands dan osilator Stochastic untuk mengidentifikasi peluang overbought dan oversold di pasar. Ini bertujuan untuk memanfaatkan harga rebound dari ekstrem yang didefinisikan oleh Bollinger Bands, dengan konfirmasi dari Stochastic untuk memaksimalkan probabilitas operasi yang sukses.
Strategi ini menggunakan 20 periode, 2 band standar deviasi Bollinger untuk mengidentifikasi apakah harga menyentuh atau menembus band atas atau bawah. Menyentuh band bawah menunjukkan kondisi oversold yang mungkin saat menembus band atas yang overbought. Selain itu, osilator Stochastic dengan siklus garis K 14 dan siklus penyelarasan nilai D 3 menentukan overbought dan oversold. Ketika harga dekat di bawah band bawah Bollinger dan nilai Stochastic K di bawah 20, sinyal oversold untuk masuk panjang. Ketika close berada di atas band atas Bollinger dan Stochastic K di atas 80, sinyal overbought untuk masuk pendek.
Setelah masuk, strategi ini menggunakan indikator Average True Range untuk trailing stop loss. titik stop loss ditetapkan pada 1,5 kali ATR, yang dapat menentukan stop loss range berdasarkan volatilitas pasar, menghindari stop loss yang terlalu ketat atau terlalu longgar.
Strategi ini memiliki keuntungan berikut:
Menggabungkan Bollinger Bands dan osilator Stochastic untuk menentukan overbought/oversold memberikan akurasi yang lebih tinggi dalam menangkap peluang perdagangan.
Penyesuaian dinamis titik stop loss berdasarkan volatilitas pasar menghasilkan jarak stop yang wajar.
Mekanisme stop loss trailing mencegah jarak stop dari terlalu dekat untuk menghindari stop out prematur.
Aturan strategi yang sederhana dan jelas membuatnya mudah dimengerti dan dilaksanakan.
Ada beberapa risiko dalam strategi ini:
Bollinger Bands band atas/bawah tidak dapat menjamin pembalikan harga, bisa ada kelanjutan breakout.
Penyesuaian parameter Stochastic yang tidak tepat dapat menghasilkan sinyal yang tidak akurat.
Stop trailing dapat menyebabkan stop loss yang terlalu luas melebihi fluktuasi pasar yang wajar.
Stop trailing dinamis mungkin bekerja lebih baik dengan micro-penyesuaian jarak stop berdasarkan volatilitas pasar.
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Uji dampak dari parameter Bollinger yang berbeda untuk menemukan kombinasi parameter yang optimal.
Uji parameter Stochastic yang berbeda untuk meningkatkan kinerja indikator.
Mengatur jarak berhenti secara dinamis berdasarkan waktu pemicu stop loss dan profitabilitas.
Tambahkan indikator lain untuk menyaring sinyal masuk dan meningkatkan tingkat keberhasilan.
Tambahkan mekanisme stop loss re-entry untuk sepenuhnya menangkap tren pasar.
Strategi ini mengidentifikasi overbought/oversold berdasarkan Bollinger Bands, dengan konfirmasi dari indikator Stochastic. Strategi ini memiliki keuntungan aturan yang jelas dan trailing stop loss yang fleksibel. Strategi ini juga memiliki risiko seperti kriteria penilaian yang tidak akurat dan konfigurasi jarak stop yang tidak tepat. Kinerja dapat ditingkatkan lebih lanjut melalui optimasi parameter, penyaringan sinyal tambahan, penyesuaian dinamis stop loss dll.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger y Estocástico con Trailing Stop", overlay=true) // Parámetros de entrada lengthBB = input(20, title="Longitud BB") stdDevBB = input(2, title="Desviación Estándar BB") kLength = input(14, title="Longitud K Estocástico") dLength = input(3, title="Longitud D Estocástico") smooth = input(3, title="Suavizado Estocástico") atrLength = input(14, title="Longitud ATR") trailStopATRMultiple = input(1.5, title="Multiplicador ATR para Trailing Stop") // Cálculos [upperBB, basisBB, lowerBB] = ta.bb(close, lengthBB, stdDevBB) stochK = ta.sma(ta.stoch(close, high, low, kLength), smooth) atr = ta.atr(atrLength) // Condiciones de trading longCondition = close < lowerBB and stochK < 20 shortCondition = close > upperBB and stochK > 80 // Ejecutar operaciones if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Trailing Stop strategy.exit("Exit Long", from_entry="Long", trail_points=atr * trailStopATRMultiple, trail_offset=atr * trailStopATRMultiple) strategy.exit("Exit Short", from_entry="Short", trail_points=atr * trailStopATRMultiple, trail_offset=atr * trailStopATRMultiple)