Strategi Penembusan Bollinger Bands

Penulis:ChaoZhang, Tarikh: 2023-09-19 16:06:56
Tag:

Ringkasan

Strategi ini adalah berdasarkan kepada penunjuk Bollinger Bands. Ia pergi lama apabila harga memecahkan di atas band bawah dan menutup kedudukan apabila harga menyentuh band atas. Strategi ini menggunakan prinsip penahanan Bollinger Bands untuk mengesan pecah harga yang tidak normal untuk membeli rendah dan menjual tinggi.

Prinsip Strategi

  1. Mengira SMA jalur tengah sebagai purata bergerak mudah harga penutupan baru-baru ini.

  2. Mengira penyimpangan standard StdDev untuk mencerminkan julat turun naik harga.

  3. Tambah ofset atas penyimpangan piawai ke jalur tengah SMA untuk mendapatkan jalur atas.

  4. Mengurangkan ofset bawah penyimpangan piawai dari jalur tengah SMA untuk mendapatkan jalur bawah.

  5. Pergi panjang apabila harga penutupan melanggar band bawah dari bawah ke atas.

  6. Tutup kedudukan apabila harga menyentuh band atas, kerana harga dianggap tidak normal.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah menggunakan sifat statistik Bollinger Bands untuk mengesan turun naik pasaran yang tidak normal dan menangkap trend dengan berkesan.

  1. Bollinger Bands band atas dan bawah boleh menyesuaikan diri dengan turun naik pasaran secara automatik.

  2. Isyarat keluar lebih boleh dipercayai untuk masuk.

  3. Kembali ke bermaksud adalah munasabah untuk mengambil keuntungan.

  4. Ruang penyesuaian parameter yang besar untuk menyesuaikan diri dengan pasaran yang berbeza.

  5. Boleh menangkap trend jangka menengah hingga jangka panjang dan juga digunakan untuk jangka pendek.

Analisis Risiko

Risiko berpotensi strategi ini adalah terutamanya:

  1. Prestasi Bollinger Band yang lemah dalam pasaran yang terhad, elakkan entri yang salah.

  2. Isyarat yang keluar mungkin palsu, perlu penilaian yang bijak.

  3. Kedudukan mengambil keuntungan terlalu ideal, boleh dioptimumkan untuk tindakan harga sebenar.

  4. Tetapan parameter yang tidak betul boleh membawa kepada perdagangan berlebihan atau konservatif.

  5. Tempoh ujian belakang perlu cukup lama untuk mengelakkan pemasangan lengkung.

Langkah pengurusan risiko yang sepadan:

  1. Tambah penunjuk jumlah dagangan untuk menapis isyarat.

  2. Mengoptimumkan parameter dan data ujian dari pasaran yang berbeza.

  3. Tambahkan stop loss yang tertinggal, tahap keuntungan yang bergoyang.

  4. Menilai perbezaan isyarat, mengelakkan mengejar tinggi dan menjual rendah.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Cuba kombinasi parameter Bollinger Bands yang berbeza untuk mencari yang optimum.

  2. Tambah MA, MACD dan lain-lain untuk menapis isyarat pecah.

  3. Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter Bollinger.

  4. Menilai kekuatan pecah dan menyesuaikan saiz kedudukan.

  5. Uji balik jangka masa yang lebih lama untuk menguji kestabilan.

  6. Tambah mekanisme stop loss untuk mengawal risiko.

Ringkasan

Ringkasnya, strategi Bollinger Bands adalah strategi trend yang boleh dipercayai secara keseluruhan. Ia dapat menangkap turun naik harga yang tidak normal dengan berkesan. Tetapi kita juga harus memperhatikan penyimpangannya dari harga sebenar dan sentiasa mengoptimumkan parameter. Jika digunakan untuk perdagangan langsung, pengurusan risiko yang ketat adalah suatu keharusan untuk mengawal kerugian setiap perdagangan.


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

//@version=4

strategy(title="BB training No Repainting (OTS Mode)", overlay=true)


// Strategy Rules:
// 1. Enter trade when price crosses above the lower band
// 2. Exit trade when price touches the upper band
// 

// Chart Properties
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

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

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na
bgcolor(testPeriodBackgroundColor, transp=97)

// User provided values
smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average)
stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to
ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA
lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

smaValue = sma(close, smaLength) // Middle band
stdDev = stdev(close, stdLength)
upperBand = smaValue + stdDev * ubOffset // Top band
lowerBand = smaValue - stdDev * lbOffset // Bottom band

// Plot bands to chart
plot(series=smaValue, title="SMA", color=color.green)
plot(series=upperBand, title="UB", color=color.blue, linewidth=2)
plot(series=lowerBand, title="LB", color=color.blue, linewidth=2)

longCondition = (crossover(close, lowerBand))
closeLongCondition = (close >= upperBand)

if (longCondition and testPeriod())
    strategy.entry(id="CALL", long=true)

strategy.close(id="CALL", when=closeLongCondition)


Lebih lanjut