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.
Mengira SMA jalur tengah sebagai purata bergerak mudah harga penutupan baru-baru ini.
Mengira penyimpangan standard StdDev untuk mencerminkan julat turun naik harga.
Tambah ofset atas penyimpangan piawai ke jalur tengah SMA untuk mendapatkan jalur atas.
Mengurangkan ofset bawah penyimpangan piawai dari jalur tengah SMA untuk mendapatkan jalur bawah.
Pergi panjang apabila harga penutupan melanggar band bawah dari bawah ke atas.
Tutup kedudukan apabila harga menyentuh band atas, kerana harga dianggap tidak normal.
Kelebihan terbesar strategi ini adalah menggunakan sifat statistik Bollinger Bands untuk mengesan turun naik pasaran yang tidak normal dan menangkap trend dengan berkesan.
Bollinger Bands band atas dan bawah boleh menyesuaikan diri dengan turun naik pasaran secara automatik.
Isyarat keluar lebih boleh dipercayai untuk masuk.
Kembali ke bermaksud adalah munasabah untuk mengambil keuntungan.
Ruang penyesuaian parameter yang besar untuk menyesuaikan diri dengan pasaran yang berbeza.
Boleh menangkap trend jangka menengah hingga jangka panjang dan juga digunakan untuk jangka pendek.
Risiko berpotensi strategi ini adalah terutamanya:
Prestasi Bollinger Band yang lemah dalam pasaran yang terhad, elakkan entri yang salah.
Isyarat yang keluar mungkin palsu, perlu penilaian yang bijak.
Kedudukan mengambil keuntungan terlalu ideal, boleh dioptimumkan untuk tindakan harga sebenar.
Tetapan parameter yang tidak betul boleh membawa kepada perdagangan berlebihan atau konservatif.
Tempoh ujian belakang perlu cukup lama untuk mengelakkan pemasangan lengkung.
Langkah pengurusan risiko yang sepadan:
Tambah penunjuk jumlah dagangan untuk menapis isyarat.
Mengoptimumkan parameter dan data ujian dari pasaran yang berbeza.
Tambahkan stop loss yang tertinggal, tahap keuntungan yang bergoyang.
Menilai perbezaan isyarat, mengelakkan mengejar tinggi dan menjual rendah.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Cuba kombinasi parameter Bollinger Bands yang berbeza untuk mencari yang optimum.
Tambah MA, MACD dan lain-lain untuk menapis isyarat pecah.
Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter Bollinger.
Menilai kekuatan pecah dan menyesuaikan saiz kedudukan.
Uji balik jangka masa yang lebih lama untuk menguji kestabilan.
Tambah mekanisme stop loss untuk mengawal risiko.
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)