Bollinger Band Breakout Trend Mengikuti Strategi

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

Ringkasan

Ini adalah strategi trend berikut berdasarkan penunjuk Bollinger Bands. Ia menggunakan pecah Bollinger Bands band atas dan bawah untuk menentukan arah trend dan membuka kedudukan yang sepadan. Apabila harga mula jatuh kembali, ia menggunakan stop loss dengan jarak dinamik untuk keluar dari kedudukan dan mencapai keuntungan.

Logika Strategi

Strategi ini menggunakan Bollinger Bands untuk menentukan arah trend. Bollinger Bands dibina dengan mengira penyimpangan standard harga untuk membentuk band atas dan bawah. Apabila harga memecahkan band atas, ia menunjukkan permulaan trend menaik. Apabila harga memecahkan band bawah, ia menunjukkan permulaan trend menurun.

Logik perdagangan khusus adalah:

  1. Mengira jalur tengah, atas dan bawah Bollinger Bands.

  2. Apabila harga menembusi band atas, pergi panjang. Apabila harga menembusi band bawah, pergi pendek.

  3. Gunakan stop loss untuk mengawal risiko dan keluar apabila harga mula jatuh.

  4. Masuk semula trend apabila harga memecahkan jalur lagi.

Menggunakan Bollinger Bands untuk menentukan trend dan digabungkan dengan stop loss yang dinamik dapat mengawal risiko dengan berkesan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Menggunakan Bollinger Bands untuk menentukan trend, mudah dan berkesan.

  2. Gabungan entri breakout dan stop loss yang dinamik menyeimbangkan menangkap trend dan kawalan risiko.

  3. Struktur kod yang bersih dan ringkas, mudah difahami dan diubah suai.

  4. Beberapa parameter, mudah untuk dioptimumkan.

  5. Boleh digunakan untuk produk yang berbeza, fleksibel.

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

Analisis Risiko

Risiko utama ialah:

  1. Bollinger Band hanya bergantung pada statistik, risiko yang sesuai dengan lengkung.

  2. Sukar untuk membezakan pengembangan julat dan trend sebenar, boleh menyebabkan penilaian yang salah.

  3. Titik kehilangan berhenti terlalu ketat, risiko dihentikan oleh goyangan biasa.

  4. Tiada pertimbangan kos transaksi.

  5. Tempoh backtest yang terhad, risiko pemasangan berlebihan.

Penyelesaian adalah:

  1. Mengoptimumkan parameter atau menambah penunjuk lain untuk pengesahan isyarat.

  2. Meningkatkan pengenalan osilasi dan saluran.

  3. Sesuaikan kehilangan berhenti secara dinamik berdasarkan ATR dan lain-lain

  4. Tambah komisen, kos tergelincir.

  5. Luaskan tempoh backtest, pengesahan pelbagai pasaran.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Ujian kesan gabungan penunjuk yang berbeza.

  2. Meningkatkan pengenalan goyangan trend.

  3. Memperkenalkan pembelajaran mesin untuk pengoptimuman parameter dinamik.

  4. Mengoptimumkan strategi stop loss berdasarkan hasil backtest.

  5. Menilai dan menambah kos transaksi.

  6. Pengoptimuman ruang parameter untuk tetapan optimum.

  7. Menambah pengurusan wang untuk mengawal risiko kedudukan.

Kesimpulan

Strategi ini menentukan hala tuju trend dengan Bollinger Bands dan mengawal risiko dengan menghentikan kerugian. Logik keseluruhan adalah mudah dan jelas. Ia mempunyai keupayaan menangkap trend yang baik, tetapi boleh dipertingkatkan dengan memperkenalkan lebih banyak penunjuk teknikal, mengoptimumkan parameter, menambah kos dan lain-lain untuk menjadikannya lebih mantap. Secara keseluruhan, strategi ini menyediakan pendekatan trend berikut yang berasaskan Bollinger Bands yang mudah dan praktikal.


/*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 lanjut