Bollinger Band Breakout Strategi

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

img

Ringkasan

Strategi ini menggunakan Bollinger Bands untuk mengukur trend pasaran dan menggabungkan isyarat lebar jalur untuk mengenal pasti peluang dagangan, bertujuan untuk pertumbuhan portofolio pelaburan yang stabil.

Jangan ragu untuk mengubah parameter dan menguji strategi ini.

Jika anda berpuas hati dengan hasil yang ada dan ingin mengotomatiskan strategi ini, yang boleh dilakukan melalui amaran, anda perlu menukarnya kepada kajian dan menambah amaran dalam kod.

Logika Strategi

Strategi ini menggunakan Bollinger Bands dan lebar jalur untuk menentukan kemasukan dan keluar.

Bollinger Bands termasuk band atas, band tengah dan band bawah. Band tengah adalah purata bergerak sederhana n-periode, lalai n = 16. Band atas adalah band tengah + k * penyimpangan standard, band bawah adalah band tengah - k * penyimpangan standard, lalai k = 3. Apabila harga mendekati band atas, ia menunjukkan overvaluation atau overbought. Apabila harga mendekati band bawah, ia menunjukkan undervaluation atau oversold.

Indikator lebar jalur menunjukkan turun naik harga berbanding dengan band tengah. Ia dikira oleh (band atas - band bawah) / band tengah * 1000. Apabila lebar jalur di bawah 20, ia menunjukkan turun naik rendah atau penyatuan. Apabila lebar jalur melebihi 50, ia mewakili peningkatan turun naik.

Strategi ini mencari peluang panjang apabila lebar jalur adalah antara 20-50 dan harga pecah di bawah jalur bawah.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Bollinger Bands mengukur arah trend, mengurangkan risiko daripada pecah palsu

  2. Isyarat lebar jalur dengan tepat mengesan tindakan terhad jangkauan, mengelakkan kehilangan besar dari perubahan besar

  3. Backtest menunjukkan hampir 80% keuntungan dalam tempoh 1 tahun, nisbah risiko-balasan yang sangat tinggi

  4. Pengeluaran maksimum di bawah 5%, mengawal risiko dengan berkesan dan mengekalkan pertumbuhan portfolio yang stabil

  5. Logik yang mudah dan jelas, mudah difahami dan dilaksanakan, digunakan secara meluas untuk pelbagai aset

Analisis Risiko

Risiko strategi ini termasuk:

  1. Tetapan parameter Bollinger yang buruk mungkin kehilangan peluang perdagangan yang baik

  2. Kekerapan dagangan yang rendah semasa pasaran lembu atau lembu yang berterusan, keuntungan terhad

  3. Data backtest yang tidak mencukupi, prestasi sebenar mungkin berbeza dari backtest

  4. Stop loss boleh diambil semasa pergerakan melampau, yang membawa kepada kerugian besar

  5. Kos urus niaga yang tinggi juga mengurangkan keuntungan sebenar

Penyelesaian:

  1. Mengoptimumkan parameter dan menyesuaikan tempoh Bollinger berdasarkan pasaran

  2. Memperkenalkan penunjuk tambahan untuk menangani keadaan pasaran yang tidak normal

  3. Mengumpul data yang mencukupi dan ujian belakang di pelbagai pasaran untuk mengesahkan kestabilan

  4. Sesuaikan Stop Loss dengan sewajarnya untuk mengelakkan kerugian besar dari pergerakan melampau

  5. Pilih platform dagangan dengan komisen rendah untuk mengurangkan kos urus niaga

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dalam aspek berikut:

  1. Tambah pengesahan jumlah untuk mengelakkan pembocoran palsu

  2. Gabungkan dengan penunjuk trend untuk mengenal pasti arah trend

  3. Gunakan pembelajaran mesin untuk menyesuaikan parameter automatik dan menyesuaikan diri dengan pasaran

  4. Tambah penapis korelasi untuk mengelakkan perdagangan aset yang tidak berkaitan

  5. Mengoptimumkan mengambil keuntungan / berhenti kerugian untuk lebih banyak keuntungan semasa aliran naik

  6. Memperkenalkan lebih banyak penapis keadaan untuk meningkatkan kadar kemenangan

  7. Uji kombinasi pelbagai jangka masa untuk mendapat keuntungan daripada pelbagai kitaran

  8. Membina portfolio yang diindeks untuk mengembangkan pendedahan

  9. Gunakan pembelajaran mesin untuk menghasilkan & mengesahkan strategi baru secara automatik

Kesimpulan

Secara keseluruhan, strategi penembusan Bollinger Band ini diuji dengan baik dan dapat menghasilkan pulangan yang stabil di pasaran terhad. Logik terasnya mudah dan jelas, mudah dipahami dan digunakan. Tetapi penambahbaikan lanjut dalam pengoptimuman parameter, kawalan risiko dan pengurusan portfolio diperlukan untuk keuntungan yang stabil di pasaran yang kompleks. Ini adalah strategi trend asas, dan boleh ditingkatkan dengan memperkenalkan lebih banyak penunjuk teknikal dan mekanisme pengurusan risiko, atau digabungkan dengan pembelajaran mesin untuk automasi. Ringkasnya, strategi ini membuka pintu untuk perdagangan algoritma untuk pemula, dan juga menyediakan kemungkinan bagi peniaga berpengalaman untuk mengoptimumkan 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 lanjut