Bollinger Band Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-07 15:08:36
Tag:

img

Gambaran umum

Strategi ini menggunakan Bollinger Bands untuk mengukur tren pasar dan menggabungkan sinyal bandwidth untuk mengidentifikasi peluang perdagangan, bertujuan untuk pertumbuhan portofolio investasi yang stabil.

Jangan ragu untuk menyesuaikan parameter dan backtest strategi ini.

Jika Anda senang dengan hasil yang ada dan ingin mengotomatiskan strategi ini, yang dapat dilakukan melalui peringatan, Anda perlu mengubahnya menjadi studi dan menambahkan peringatan dalam kode.

Logika Strategi

Strategi ini menggunakan Bollinger Bands dan bandwidth untuk menentukan entri dan keluar.

Bollinger Bands terdiri dari band atas, band tengah dan band bawah. Band tengah adalah rata-rata bergerak sederhana n-periode, default n = 16. Band atas adalah band tengah + k * deviasi standar, band bawah adalah band tengah - k * deviasi standar, default k = 3. Ketika harga mendekati band atas, itu menunjukkan overvaluation atau overbought. Ketika harga mendekati band bawah, itu menunjukkan undervaluation atau oversold.

Indikator bandwidth menunjukkan volatilitas harga relatif terhadap band tengah. Hal ini dihitung dengan (band atas - band bawah) / band tengah * 1000. Ketika bandwidth di bawah 20, ini menunjukkan volatilitas rendah atau konsolidasi. Ketika bandwidth melebihi 50, ini mewakili peningkatan volatilitas.

Strategi ini mencari peluang jangka panjang ketika bandwidth berada di antara 20-50 dan harga pecah di bawah band bawah.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Bollinger Bands mengukur arah tren, mengurangi risiko dari pecah palsu

  2. Sinyal bandwidth secara akurat menemukan tindakan yang terbatas pada rentang, menghindari kerugian besar dari perubahan besar

  3. Backtest menunjukkan hampir 80% profitabilitas selama 1 tahun, rasio risiko-manfaat yang sangat tinggi

  4. Penarikan maksimum di bawah 5%, mengontrol risiko secara efektif dan mempertahankan pertumbuhan portofolio yang stabil

  5. Logika yang sederhana dan jelas, mudah dimengerti dan diterapkan, dapat diterapkan secara luas pada berbagai aset

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Pengaturan parameter Bollinger yang buruk dapat kehilangan peluang perdagangan yang baik

  2. Frekuensi perdagangan rendah selama pasar bull atau bear yang terus menerus, profitabilitas terbatas

  3. Data backtest yang tidak cukup, kinerja sebenarnya mungkin berbeda dari backtest

  4. Stop loss dapat diambil selama gerakan ekstrim, menyebabkan kerugian besar

  5. Biaya transaksi yang tinggi juga mengurangi keuntungan yang sebenarnya

Solusi:

  1. Mengoptimalkan parameter dan menyesuaikan periode Bollinger berdasarkan pasar

  2. Memperkenalkan indikator tambahan untuk menangani kondisi pasar yang tidak normal

  3. Mengumpulkan data yang cukup dan backtest di berbagai pasar untuk memverifikasi stabilitas

  4. Sesuaikan stop loss dengan tepat untuk mencegah kerugian besar dari gerakan ekstrem

  5. Pilih platform perdagangan dengan komisi rendah untuk mengurangi biaya transaksi

Arahan Optimasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Tambahkan konfirmasi volume untuk menghindari gangguan palsu

  2. Gabungkan dengan indikator tren untuk mengidentifikasi arah tren

  3. Menggunakan pembelajaran mesin untuk menyesuaikan parameter otomatis dan beradaptasi dengan pasar

  4. Tambahkan filter korelasi untuk menghindari perdagangan aset yang tidak berkorelasi

  5. Mengoptimalkan mengambil keuntungan / menghentikan kerugian untuk lebih banyak keuntungan selama tren naik

  6. Memperkenalkan lebih banyak filter kondisi untuk meningkatkan tingkat menang

  7. Uji kombinasi multi-frame waktu untuk mendapatkan keuntungan dari beberapa siklus

  8. Membangun portofolio terindeks untuk memperluas eksposur

  9. Gunakan pembelajaran mesin untuk secara otomatis menghasilkan & memvalidasi strategi baru

Kesimpulan

Secara keseluruhan strategi breakout Bollinger Band ini backtested dengan baik dan dapat menghasilkan pengembalian yang stabil di pasar yang terikat kisaran. Logika inti sederhana dan jelas, mudah dipahami dan diterapkan. Tetapi perbaikan lebih lanjut dalam optimasi parameter, kontrol risiko dan manajemen portofolio diperlukan untuk keuntungan yang stabil di pasar yang kompleks. Ini adalah strategi dasar yang mengikuti tren, dan dapat ditingkatkan dengan memperkenalkan lebih banyak indikator teknis dan mekanisme manajemen risiko, atau dikombinasikan dengan pembelajaran mesin untuk otomatisasi. Singkatnya, strategi ini membuka pintu untuk perdagangan algoritmik bagi pemula, dan juga memberikan kemungkinan bagi pedagang berpengalaman untuk mengoptimalkan strategi.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands BAT/USDT 30min", overlay=true )

/// Indicators
///Bollinger Bands
source = close
length = input(16, minval=1)
mult = input(3, step=0.1, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

//Bollinger bands width
bbw = (upper-lower)/basis*1000
//plot(bbw, color=color.blue)

upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50)
lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20)


// Backtesting Period
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

// Take Profit
tp_inp = input(8, title='Take Profit %', step=0.1)/100
take_level = strategy.position_avg_price * (1 + tp_inp)

//Entry Strategy
entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input)
exit_long = cross(high,upper) or close < lower

if testPeriod()

    strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long)
    strategy.exit("Take Profit Long","LongBB",limit=take_level)
    strategy.close(id="LongBB", when=exit_long )



Lebih banyak