Strategi Bollinger Band dengan Pilihan Julat Tarikh

Penulis:ChaoZhang, Tarikh: 2024-02-05 16:04:40
Tag:

img

Ringkasan

Strategi ini melaksanakan strategi perdagangan Bollinger Band dinamik dengan julat tarikh sejarah yang boleh dipilih berdasarkan penunjuk Bollinger Band. Ia membolehkan pengguna memilih masa permulaan dan akhir untuk backtesting, dengan itu membolehkan backtesting dan perbandingan strategi Bollinger Band dinamik dalam tempoh masa yang berbeza.

Nama Strategi

Strategi ini dinamakan Bollinger Band Strategy with Date Range Selection. Nama ini mengandungi kata kunci Bollinger Band dan Date Range Selection, yang meringkaskan fungsi utama strategi ini dengan tepat.

Logika Strategi

Prinsip utama strategi ini adalah untuk menjana isyarat perdagangan berdasarkan landasan dinamik atas dan bawah penunjuk Bollinger Band. Landasan tengah Bollinger Band adalah purata bergerak mudah n-hari, sementara landasan atas dan bawah adalah landasan tengah ditambah dan dikurangkan m kali penyimpangan standard n-hari masing-masing. Apabila harga memecahkan landasan bawah, pergi panjang; apabila harga memecahkan landasan atas, pergi pendek.

Satu lagi ciri utama strategi ini adalah membolehkan pengguna memilih julat masa backtesting. Strategi ini menyediakan parameter input untuk memilih masa permulaan dan akhir untuk backtesting dalam pelbagai dimensi seperti bulan, hari, tahun, jam, minit, dll. Ini membolehkan pengguna memilih tempoh masa sejarah yang berbeza untuk backtest dan mengesahkan strategi, mencapai analisis strategi yang lebih komprehensif dan dinamik.

Khususnya, strategi ini menukar masa permulaan dan akhir yang dipilih ke dalam format cap masa melalui fungsi cap masa ((), dan kemudian menetapkan tetingkap masa backtesting strategi yang sah melalui keadaan masa>=awal dan masa<=akhir. Ini mencapai fungsi pemilihan julat masa dinamik.

Kelebihan

Kelebihan terbesar strategi ini ialah ia menggabungkan dengan sempurna strategi Bollinger Band dinamik dengan pemilihan julat masa yang sewenang-wenang. Ini membolehkan pengguna untuk backtest dan mengesahkan strategi dengan cara yang lebih fleksibel dan komprehensif. Kelebihan khusus adalah:

  1. Melaksanakan strategi Bollinger Band dinamik yang dapat menangkap isyarat pembalikan trend semasa kenaikan dan penurunan pasaran untuk perdagangan trend.

  2. Sokongan memilih julat masa sejarah yang sewenang-wenang untuk pengujian semula untuk menganalisis prestasi strategi dalam persekitaran pasaran yang berbeza, mencapai pengoptimuman dinamik strategi.

  3. Digabungkan dengan kemampuan penyesuaian penunjuk Bollinger Band, strategi ini boleh menyesuaikan parameter secara automatik untuk menyesuaikan diri dengan perubahan yang lebih luas dalam keadaan pasaran.

  4. Menyediakan parameter yang boleh disesuaikan untuk penggunaan jangka panjang dan jangka pendek supaya pengguna dapat mengoptimumkan parameter mengikut keperluan mereka sendiri untuk menjadikan strategi lebih praktikal.

  5. Membolehkan pemilihan jam dan minit tertentu untuk backtesting dengan ketepatan yang lebih tinggi untuk analisis strategi yang lebih terperinci.

  6. Sokong bahasa Cina dan Inggeris untuk pengalaman pengguna yang baik.

Risiko

Risiko utama strategi ini terletak pada ketidakpastian penunjuk Bollinger Bands dalam menentukan pembalikan trend.

  1. Indikator Bollinger Bands sendiri tidak menentukan turun naik pasaran dengan sempurna, dan mungkin ada isyarat palsu.

  2. Pemilihan parameter Bollinger Bands yang tidak sesuai boleh membawa kepada prestasi strategi yang buruk atau bahkan kerugian.

  3. Kemungkinan kegagalan penunjuk dalam keadaan pasaran khas.

  4. Pemilihan julat tarikh backtest yang tidak betul mungkin terlepas beberapa keadaan pasaran penting.

Kaedah berikut boleh digunakan untuk mengawal dan memperbaiki risiko ini:

  1. Mengoptimumkan parameter Bollinger Band dan menyesuaikan kitaran rel tengah untuk menyesuaikan diri dengan produk dan tempoh masa yang berbeza.

  2. Gunakan penunjuk lain seperti purata bergerak untuk pengesahan untuk mengurangkan isyarat palsu.

  3. Uji lebih banyak tempoh masa pasaran untuk menilai ketahanan strategi.

  4. Tetapkan titik stop loss untuk mengawal kehilangan tunggal.

Arahan untuk Pengoptimuman Strategi

Terdapat beberapa arah utama untuk mengoptimumkan strategi ini:

  1. Menggabungkan algoritma pembelajaran mesin untuk mencapai pengoptimuman dinamik parameter Bollinger Band.

  2. Meningkatkan fungsi seperti ujian pembiakan semula untuk menilai sepenuhnya kestabilan parameter.

  3. Tambah fungsi seperti memindahkan stop loss dan mengesan stop loss untuk mengunci keuntungan dan mengurangkan risiko.

  4. Mengoptimumkan logik kemasukan dan menetapkan lebih banyak syarat pengesahan seperti lonjakan dalam jumlah dagangan.

  5. Menggabungkan strategi seperti indeks saham niaga hadapan arbitrage untuk mengembangkan skop aplikasi strategi.

  6. Tambah fungsi pelaksanaan perdagangan automatik untuk peralihan dari backtesting ke perdagangan langsung.

Pengoptimuman ini dapat meningkatkan prestasi praktikal dan keuntungan strategi yang stabil.

Ringkasan

Strategi ini telah berjaya mengintegrasikan strategi Bollinger Band dengan pemilihan julat masa sejarah yang sewenang-wenang. Analisis backtesting yang sangat fleksibel dan dinamik ini membolehkan pengguna menyesuaikan dan mengoptimumkan parameter strategi dengan tepat dalam persekitaran pasaran yang berbeza. Visualisasi yang disediakan juga sangat meningkatkan pengalaman pengguna. Adalah dijangka bahawa strategi ini dapat menyediakan pengguna dengan alat perdagangan kuantitatif yang kuat dan cekap.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200)

// Revision:        1
// Author:          @allanster 

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 20, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
FromHour  = input(defval = 17, title = "From Hour", minval = 00)
FromMinute  = input(defval = 00, title = "From Minute", minval = 00)

ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
ToHour  = input(defval = 23, title = "To Hour", minval = 00)
ToMinute  = input(defval = 59, title = "To Minute", minval = 00)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute)        // backtest finish window
window()  => true
source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

upper_stop = upper * 1.05
lower_stop = lower * 0.95

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE")
else
    strategy.cancel(id="BBandSE")





Lebih lanjut