Ini adalah strategi trend following berdasarkan indikator Bollinger Bands. Hal ini menggunakan breakout Bollinger Bands band atas dan bawah untuk menentukan arah tren dan membuka posisi yang sesuai. Ketika harga mulai turun kembali, itu menggunakan stop loss trailing dengan jarak dinamis untuk keluar posisi dan mewujudkan keuntungan.
Strategi ini menggunakan Bollinger Bands untuk menentukan arah tren. Bollinger Bands dibangun dengan menghitung standar deviasi harga untuk membentuk band atas dan bawah. Ketika harga menembus band atas, ini menunjukkan awal tren naik. Ketika harga menembus band bawah, ini menunjukkan awal tren turun.
Logika perdagangan khusus adalah:
Hitung band tengah, atas dan bawah Bollinger Bands.
Ketika harga melewati band atas, pergi panjang. Ketika harga melewati band bawah, pergi pendek.
Gunakan stop loss untuk mengendalikan risiko dan keluar saat harga mulai turun.
Masuk kembali ke tren ketika harga menembus band lagi.
Menggunakan Bollinger Bands untuk menentukan tren dan menggabungkan dengan stop loss trailing dinamis dapat secara efektif mengendalikan risiko.
Keuntungan dari strategi ini meliputi:
Menggunakan Bollinger Bands untuk menentukan tren, sederhana dan efektif.
Kombinasi dari entry breakout dan stop loss trailing dinamis menyeimbangkan penangkapan tren dan pengendalian risiko.
Struktur kode yang bersih dan ringkas, mudah dipahami dan dimodifikasi.
Beberapa parameter, mudah dioptimalkan.
Dilakukan pada produk yang berbeda, fleksibel.
Hasil backtest yang baik, dengan potensi keuntungan yang besar.
Risiko utama adalah:
Bollinger Bands hanya mengandalkan statistik, risiko kurva yang cocok.
Sulit untuk membedakan perluasan rentang dan tren nyata, dapat menyebabkan penilaian yang salah.
Titik stop loss terlalu ketat, risiko dihentikan oleh osilasi normal.
Tidak mempertimbangkan biaya transaksi.
Periode backtest terbatas, risiko overfit.
Solusinya adalah:
Mengoptimalkan parameter atau menambahkan indikator lain untuk verifikasi sinyal.
Meningkatkan identifikasi osilasi dan saluran.
Mengatur stop loss secara dinamis berdasarkan ATR dll.
Tambahkan komisi, biaya slip.
Memperluas periode backtest, verifikasi multi-pasar.
Strategi dapat dioptimalkan dengan:
Uji efek kombinasi dari indikator yang berbeda.
Meningkatkan identifikasi osilasi tren.
Memperkenalkan pembelajaran mesin untuk optimasi parameter dinamis.
Mengoptimalkan strategi stop loss berdasarkan hasil backtest.
Mengevaluasi dan menambahkan biaya transaksi.
Optimasi ruang parameter untuk pengaturan optimal.
Menambahkan manajemen uang untuk mengendalikan risiko posisi.
Strategi ini menentukan arah tren dengan Bollinger Bands dan mengontrol risiko dengan trailing stop loss. Logika keseluruhan sederhana dan jelas. Ini memiliki kemampuan menangkap tren yang baik, tetapi dapat ditingkatkan dengan memperkenalkan lebih banyak indikator teknis, mengoptimalkan parameter, menambahkan biaya dll untuk membuatnya lebih kuat. Secara keseluruhan, strategi ini menyediakan pendekatan trend berikut Bollinger Bands yang sederhana dan praktis.
/*backtest start: 2022-09-15 00:00:00 end: 2023-09-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true) // Inputs // sma = input(20, minval=1) mult = input(1.2, minval=0.001, maxval=50) src = input(close) // alert msg // message_long_entry = input("long entry") message_short_entry = input("short entry") // Calculations // basis = sma(close, sma) dev = mult * stdev(close, sma) upper = basis + dev lower = basis - dev // Backtest // fromyear = input(2019, defval = 2019, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(1, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") leverage = input(1, "Leverage") term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)) // PLOT // plot(basis, color = color.gray, linewidth = 2) lu = plot(upper, color = color.green, linewidth = 2) ll = plot(lower, color = color.red, linewidth = 2) fill(lu, ll, color = color.gray) // Signals // long = crossover(close, upper) short = crossunder(close, lower) // Strategy entry // strategy.initial_capital = 50000 if (long and term) strategy.entry("long", strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry) if (short and term) strategy.entry("short", strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry) // strategy exit // strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick) strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)