Tren Breakout Bollinger Band Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-22 14:31:17
Tag:

Gambaran umum

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.

Logika Strategi

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:

  1. Hitung band tengah, atas dan bawah Bollinger Bands.

  2. Ketika harga melewati band atas, pergi panjang. Ketika harga melewati band bawah, pergi pendek.

  3. Gunakan stop loss untuk mengendalikan risiko dan keluar saat harga mulai turun.

  4. 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.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Menggunakan Bollinger Bands untuk menentukan tren, sederhana dan efektif.

  2. Kombinasi dari entry breakout dan stop loss trailing dinamis menyeimbangkan penangkapan tren dan pengendalian risiko.

  3. Struktur kode yang bersih dan ringkas, mudah dipahami dan dimodifikasi.

  4. Beberapa parameter, mudah dioptimalkan.

  5. Dilakukan pada produk yang berbeda, fleksibel.

  6. Hasil backtest yang baik, dengan potensi keuntungan yang besar.

Analisis Risiko

Risiko utama adalah:

  1. Bollinger Bands hanya mengandalkan statistik, risiko kurva yang cocok.

  2. Sulit untuk membedakan perluasan rentang dan tren nyata, dapat menyebabkan penilaian yang salah.

  3. Titik stop loss terlalu ketat, risiko dihentikan oleh osilasi normal.

  4. Tidak mempertimbangkan biaya transaksi.

  5. Periode backtest terbatas, risiko overfit.

Solusinya adalah:

  1. Mengoptimalkan parameter atau menambahkan indikator lain untuk verifikasi sinyal.

  2. Meningkatkan identifikasi osilasi dan saluran.

  3. Mengatur stop loss secara dinamis berdasarkan ATR dll.

  4. Tambahkan komisi, biaya slip.

  5. Memperluas periode backtest, verifikasi multi-pasar.

Arahan Optimasi

Strategi dapat dioptimalkan dengan:

  1. Uji efek kombinasi dari indikator yang berbeda.

  2. Meningkatkan identifikasi osilasi tren.

  3. Memperkenalkan pembelajaran mesin untuk optimasi parameter dinamis.

  4. Mengoptimalkan strategi stop loss berdasarkan hasil backtest.

  5. Mengevaluasi dan menambahkan biaya transaksi.

  6. Optimasi ruang parameter untuk pengaturan optimal.

  7. Menambahkan manajemen uang untuk mengendalikan risiko posisi.

Kesimpulan

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)





Lebih banyak