Bollinger Bands Breakout dengan Strategi Filter Volatilitas

Penulis:ChaoZhang, Tanggal: 2024-03-08 15:28:05
Tag:

img

Tinjauan Strategi

Bollinger Bands Breakout with Volatility Filter Strategy adalah strategi perdagangan yang didasarkan pada indikator Bollinger Bands. Strategi ini menggunakan Bollinger Bands untuk menentukan posisi dan volatilitas harga relatif terhadap moving average, sehingga memutuskan titik masuk dan keluar. Aspek unik dari strategi ini adalah bahwa strategi ini menggunakan filter volatilitas, yang menghindari memasuki perdagangan selama volatilitas pasar yang tinggi dengan mendeteksi tingkat perubahan lilin berturut-turut. Selain itu, strategi menetapkan kondisi untuk mengambil keuntungan dan menghentikan kerugian untuk melindungi keuntungan dan mengendalikan risiko.

Prinsip Strategi

Pada inti strategi adalah perhitungan indikator Bollinger Bands. Bollinger Bands terdiri dari tiga garis: garis tengah adalah rata-rata bergerak sederhana, sementara band atas dan bawah diatur pada standar tertentu penyimpangan di atas dan di bawah garis tengah, masing-masing.

Kondisi masuk strategi didasarkan pada posisi harga penutupan relatif terhadap Bollinger Bands. Jika arah perdagangan ditetapkan menjadi panjang (tradeDirection>=0) dan harga penutupan pecah di bawah band bawah dengan persentase tertentu (lower_breakout_pct), posisi panjang dibuka; jika arah perdagangan ditetapkan menjadi pendek (tradeDirection<=0) dan harga penutupan pecah di atas band atas dengan persentase tertentu (upper_breakout_pct), posisi pendek dibuka. Parameter persentase pecah memungkinkan harga untuk sedikit menerobos Bollinger Bands sebelum memasuki posisi untuk mengkonfirmasi tren.

Di sisi lain, jika tingkat perubahan dua candlestick berturut-turut keduanya melebihi ambang volatilitas yang telah ditetapkan (Volatility), volatilitas pasar saat ini dianggap tinggi, dan strategi tidak akan membuka posisi baru. Filter volatilitas ini dapat menghindari perdagangan dalam kondisi pasar yang sangat volatile sampai batas tertentu.

Dalam hal posisi keluar, jika harga penutupan posisi panjang mencapai dekat band atas (area ataslong_win_pct), atau harga penutupan posisi pendek mencapai dekat band bawah (bawah + areashort_win_pct), strategi akan menutup posisi yang sesuai untuk mengambil keuntungan. Selain itu, jika kerugian posisi yang belum direalisasikan melebihi persentase penarikan maksimum yang telah ditetapkan (max_drawdown_percent), strategi juga akan menutup posisi untuk menghentikan kerugian.

Keuntungan Strategi

  1. Bollinger Bands adalah indikator teknis yang matang dan banyak digunakan yang menggabungkan informasi tentang moving average dan volatilitas harga.

  2. Strategi ini mencakup logika entri panjang dan pendek, yang memungkinkan menangkap peluang yang fleksibel di pasar bullish dan bearish.

  3. Filter volatilitas menghindari pembukaan posisi di pasar yang sangat volatile, mengurangi risiko yang terkait dengan perdagangan yang sering dan leverage sampai batas tertentu.

  4. Strategi ini menggunakan mekanisme mengambil keuntungan dan menghentikan kerugian untuk secara aktif mengelola posisi dan menutupnya ketika harga kembali ke tingkat kunci.

Risiko Strategi

  1. Bollinger Bands pada dasarnya merupakan indikator yang tertinggal dan memiliki keterlambatan tertentu dalam bereaksi terhadap pasar. Pada saat-saat kritis pembalikan tren atau perubahan kondisi pasar, strategi dapat melewatkan waktu masuk terbaik.

  2. Pengaturan parameter strategi mungkin tidak berlaku secara universal untuk kondisi pasar yang berbeda. Misalnya, pengaturan ambang batas filter volatilitas mungkin perlu dibedakan dalam tren dan pasar osilasi. Parameter tetap dapat menyebabkan strategi tidak dapat membuka posisi atau terbuka terlalu sering dalam kondisi pasar tertentu.

  3. Meskipun ada langkah-langkah stop-loss, ketika ada kesenjangan pasar, strategi mungkin tidak dapat dieksekusi pada harga yang telah ditetapkan sebelumnya, yang mengarah pada kerugian yang lebih besar.

  4. Strategi ini tidak menetapkan stop-loss atau break-even stop setelah membuka posisi, yang dapat menyebabkan beberapa pengembalian keuntungan.

Arahan Optimasi

  1. Pertimbangkan untuk memperkenalkan lebih banyak indikator teknis atau penilaian kondisi pasar, seperti ATR, indikator tren, indikator volatilitas, dll, sebagai kondisi penyaringan untuk strategi untuk meningkatkan kualitas dan waktu entri.

  2. Untuk filter volatilitas, cobalah mengadopsi ambang batas dinamis yang beradaptasi dengan instrumen atau kerangka waktu yang berbeda untuk meningkatkan efektivitas penyaringan.

  3. Dalam hal stop-loss dan take-profit, memperkenalkan mekanisme trailing stop atau break-even stop untuk memungkinkan strategi untuk memegang posisi ketika tren berlanjut, daripada menutup posisi lebih awal.

  4. Lebih lanjut mengoptimalkan manajemen posisi dengan secara dinamis menyesuaikan ukuran entri berdasarkan kekuatan tren, volatilitas, tingkat risiko, dan indikator lainnya untuk mengendalikan penarikan.

Ringkasan

Bollinger Bands Breakout with Volatility Filter Strategy memanfaatkan karakterisasi posisi harga dan volatilitas oleh Bollinger Bands untuk membangun strategi perdagangan dua arah. Aspek unik dari strategi ini adalah filter volatilitas yang menghindari perdagangan di pasar yang sangat volatile, sementara juga menetapkan kondisi take profit dan stop loss yang relatif sederhana. Secara keseluruhan, strategi ini mencakup logika masuk dan keluar yang cukup komprehensif dan pengendalian risiko, tetapi ada ruang untuk optimalisasi lebih lanjut dalam hal beradaptasi dengan perubahan pasar, penerapan parameter, dan efektivitas stop loss. Jika lebih banyak indikator teknis, parameter dinamis, dan optimasi manajemen posisi dapat diperkenalkan, ketahanan dan profitabilitas 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")


Lebih banyak