Strategi Bollinger Bands Breakout with Volatility Filter adalah strategi perdagangan berdasarkan penunjuk Bollinger Bands. Ia menggunakan Bollinger Bands untuk menentukan kedudukan dan turun naik harga berbanding purata bergerak, dengan itu memutuskan titik masuk dan keluar. Aspek unik strategi ini adalah bahawa ia menggunakan penapis turun naik, yang mengelakkan memasuki perdagangan semasa turun naik pasaran yang tinggi dengan mengesan kadar perubahan lilin berturut-turut.
Pada teras strategi adalah pengiraan penunjuk Bollinger Bands. Bollinger Bands terdiri daripada tiga garis: garis tengah adalah purata bergerak mudah, sementara jalur atas dan bawah ditetapkan pada penyimpangan standard tertentu di atas dan di bawah garis tengah, masing-masing.
Syarat kemasukan strategi ini adalah berdasarkan kedudukan harga penutupan berhubung dengan Bollinger Bands. Jika arah perdagangan ditetapkan untuk panjang (tradeDirection>=0) dan harga penutupan pecah di bawah band bawah dengan peratusan tertentu (lower_breakout_pct), kedudukan panjang dibuka; jika arah perdagangan ditetapkan untuk pendek (tradeDirection<=0) dan harga penutupan pecah di atas band atas dengan peratusan tertentu (upper_breakout_pct), kedudukan pendek dibuka. Parameter peratusan pecah membolehkan harga untuk sedikit menembusi Bollinger Bands sebelum memasuki kedudukan untuk mengesahkan trend.
Sebaliknya, jika kadar perubahan dua candlestick berturut-turut melebihi ambang turun naik yang telah ditetapkan (Volatility), turun naik pasaran semasa dianggap tinggi, dan strategi tidak akan membuka kedudukan baru. Penapis turun naik ini dapat mengelakkan perdagangan dalam keadaan pasaran yang sangat turun naik hingga tahap tertentu.
Dari segi kedudukan keluar, jika harga penutupan kedudukan panjang mencapai berhampiran band atas (area ataslong_win_pct), atau harga penutupan kedudukan pendek mencapai berhampiran jalur bawah (bawah + kawasanshort_win_pct), strategi akan menutup kedudukan yang sepadan untuk mengambil keuntungan. Di samping itu, jika kerugian yang tidak direalisasikan dari kedudukan melebihi peratusan pengeluaran maksimum yang telah ditetapkan (max_drawdown_percent), strategi juga akan menutup kedudukan untuk menghentikan kerugian.
Bollinger Band adalah penunjuk teknikal yang matang dan digunakan secara meluas yang menggabungkan maklumat mengenai purata bergerak dan turun naik harga.
Strategi ini merangkumi logik kemasukan panjang dan pendek, yang membolehkan pengambilan peluang yang fleksibel di kedua-dua pasaran bullish dan bearish.
Penapis turun naik mengelakkan pembukaan kedudukan di pasaran yang sangat turun naik, mengurangkan risiko yang berkaitan dengan perdagangan yang kerap dan leverage ke tahap tertentu.
Strategi ini menggunakan mekanisme mengambil keuntungan dan menghentikan kerugian untuk menguruskan kedudukan secara aktif dan menutupnya apabila harga kembali ke tahap utama.
Bollinger Bands pada dasarnya merupakan penunjuk yang tertinggal dan mempunyai kelewatan tertentu dalam bertindak balas terhadap pasaran. Pada saat kritikal pembalikan trend atau perubahan dalam keadaan pasaran, strategi mungkin terlepas masa kemasukan yang terbaik.
Tetapan parameter strategi mungkin tidak boleh digunakan secara sejagat untuk keadaan pasaran yang berbeza. Sebagai contoh, penetapan ambang penapis turun naik mungkin perlu dibezakan dalam pasaran trend dan berayun. Parameter tetap boleh menyebabkan strategi tidak dapat membuka kedudukan atau membuka terlalu kerap dalam keadaan pasaran tertentu.
Walaupun terdapat langkah-langkah berhenti kerugian, apabila jurang pasaran, strategi mungkin tidak dapat dilaksanakan pada harga yang telah ditetapkan, yang membawa kepada kerugian yang lebih besar.
Strategi ini tidak menetapkan penangguhan stop-loss atau penghentian impas selepas membuka kedudukan, yang mungkin membawa kepada beberapa keuntungan kembali.
Pertimbangkan untuk memperkenalkan lebih banyak penunjuk teknikal atau penilaian keadaan pasaran, seperti ATR, penunjuk trend, penunjuk turun naik, dan lain-lain, sebagai syarat penapisan untuk strategi untuk meningkatkan kualiti dan waktu kemasukan.
Untuk penapis turun naik, cuba menggunakan ambang dinamik yang disesuaikan dengan instrumen atau jangka masa yang berbeza untuk meningkatkan keberkesanan penapis.
Dari segi stop-loss dan take-profit, memperkenalkan mekanisme trailing stop atau break-even stop untuk membolehkan strategi untuk memegang kedudukan apabila trend berterusan, dan bukannya menutup kedudukan lebih awal. Pada masa yang sama, pertimbangkan untuk menetapkan nisbah stop-loss dan take-profit yang berbeza untuk mengoptimumkan nisbah risiko-balasan.
Mengoptimumkan lagi pengurusan kedudukan dengan menyesuaikan saiz kemasukan secara dinamik berdasarkan kekuatan trend, turun naik, tahap risiko, dan penunjuk lain untuk mengawal pengeluaran.
Strategi Bollinger Bands Breakout dengan Penapis Volatiliti memanfaatkan ciri kedudukan harga dan turun naik oleh Bollinger Bands untuk membina strategi perdagangan dua hala. Aspek unik strategi ini adalah penapis turun naik yang mengelakkan perdagangan di pasaran yang sangat berubah-ubah, sementara juga menetapkan syarat mengambil keuntungan dan berhenti rugi yang agak mudah. Secara keseluruhan, strategi ini merangkumi logik masuk dan keluar yang cukup komprehensif dan kawalan risiko, tetapi terdapat ruang untuk pengoptimuman lanjut dari segi penyesuaian dengan perubahan pasaran, penerapan parameter, dan keberkesanan stop loss. Jika lebih banyak penunjuk teknikal, parameter dinamik, dan pengoptimuman pengurusan kedudukan dapat diperkenalkan, ketahanan dan keuntungan strategi dapat ditingkatkan.
/*backtest start: 2024-02-29 00:00:00 end: 2024-03-07 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 ) // Input parameters length = 20 mult = 2 max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100 upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100 lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100 tradeDirection = input(1, title="Trade Direction") Volatility = input(0.5, title="Volatility") / 100 long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit") short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit") // Bollinger Bands calculation basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev area = upper - lower // Calculate the rate of change for two consecutive candlesticks var float change1 = na var float change2 = na change1 := change2 change2 := ((close - open) / open) // Check for two or more consecutive candlesticks with a change rate greater than 0.5% var bool highVolatility = false highVolatility := change2 > Volatility // Trading logic var float highestPriceSinceOpen = na var float lowestPriceSinceOpen = na var int profitableDrawbackCount = 1 // Entry logic - In the absence of high volatility if not highVolatility and strategy.position_size == 0 if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct) strategy.entry("Long", strategy.long) highestPriceSinceOpen := close profitableDrawbackCount := 0 if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct) strategy.entry("Short", strategy.short) lowestPriceSinceOpen := close profitableDrawbackCount := 0 if strategy.position_size > 0 and close > upper - area * long_win_pct strategy.close("Long", comment = "Take Profit") if strategy.position_size < 0 and close < lower + area * short_win_pct strategy.close("Short", comment = "Take Profit") // Stop loss logic - Based on drawdown percentage if strategy.position_size > 0 if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent strategy.close("Long", comment = "Drawdown Stop Loss") else if strategy.position_size < 0 if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent strategy.close("Short", comment = "Drawdown Stop Loss")