Strategi Breakout Bollinger Bands

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

Gambaran umum

Strategi ini didasarkan pada indikator Bollinger Bands. Ini pergi panjang ketika harga melanggar band bawah dan menutup posisi ketika harga menyentuh band atas. Strategi ini memanfaatkan prinsip penahanan Bollinger Bands untuk melacak price breakout abnormal untuk membeli rendah dan menjual tinggi.

Prinsip Strategi

  1. Menghitung SMA band tengah sebagai rata-rata bergerak sederhana dari harga penutupan terbaru.

  2. Menghitung standar deviasi StdDev untuk mencerminkan kisaran fluktuasi harga.

  3. Tambahkan pergeseran standar atas ke SMA band tengah untuk mendapatkan band atas.

  4. Kurangi pergeseran standar yang lebih rendah dari SMA untuk mendapatkan band yang lebih rendah.

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

  6. Tutup posisi ketika harga menyentuh band atas, karena harga dianggap tidak normal.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah memanfaatkan sifat statistik Bollinger Bands untuk secara efektif melacak fluktuasi pasar yang abnormal dan menangkap tren.

  1. Bollinger Bands band atas dan bawah dapat secara otomatis beradaptasi dengan volatilitas pasar.

  2. Sinyal keluar lebih dapat diandalkan untuk masuk.

  3. Kembali ke berarti adalah wajar untuk mengambil keuntungan.

  4. Ruang pengaturan parameter yang besar untuk menyesuaikan dengan pasar yang berbeda.

  5. Dapat menangkap tren jangka menengah hingga jangka panjang dan juga digunakan untuk jangka pendek.

Analisis Risiko

Risiko potensial dari strategi ini terutama:

  1. Kinerja buruk Bollinger Bands di pasar rentang terikat, menghindari entri yang salah.

  2. Sinyal breakout mungkin palsu, perlu penilaian yang bijaksana.

  3. Keuntungan mengambil posisi terlalu ideal, dapat dioptimalkan untuk tindakan harga yang sebenarnya.

  4. Pengaturan parameter yang tidak tepat dapat menyebabkan perdagangan berlebihan atau konservatifisme yang berlebihan.

  5. Periode backtest harus cukup panjang untuk menghindari penyesuaian kurva.

Langkah-langkah manajemen risiko yang sesuai:

  1. Tambahkan indikator volume perdagangan ke sinyal filter.

  2. Mengoptimalkan parameter dan data pengujian dari pasar yang berbeda.

  3. Tambahkan stop loss yang tertinggal, tingkat keuntungan yang bergoyang-goyang.

  4. Uji divergensi sinyal, hindari mengejar puncak dan menjual terendah.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Cobalah kombinasi yang berbeda dari parameter Bollinger Bands untuk menemukan yang optimal.

  2. Tambahkan MA, MACD dll untuk menyaring sinyal pecah.

  3. Terapkan algoritma pembelajaran mesin untuk mengoptimalkan parameter Bollinger.

  4. Pertimbangkan kekuatan terjun dan sesuaikan ukuran posisi.

  5. Backtest periode yang lebih lama untuk menguji stabilitas.

  6. Tambahkan mekanisme stop loss untuk mengendalikan risiko.

Ringkasan

Secara keseluruhan, strategi Bollinger Bands adalah strategi trend yang dapat diandalkan secara keseluruhan. Ini dapat secara efektif menangkap fluktuasi harga yang abnormal. Tetapi kita juga harus memperhatikan penyimpangannya dari harga aktual dan terus mengoptimalkan parameter. Jika digunakan untuk perdagangan langsung, manajemen risiko yang ketat adalah suatu keharusan untuk mengendalikan kerugian per 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 banyak