Strategi Pembalikan Bollinger Bands yang Dipertingkatkan

Penulis:ChaoZhang, Tarikh: 2023-09-21 11:45:37
Tag:

Ringkasan

Strategi ini menggunakan penunjuk Bollinger Bands yang dipertingkatkan untuk mengenal pasti titik pembalikan harga, pergi lama apabila harga mendekati jalur bawah, dan menutup kedudukan apabila lilin hijau muncul, bertujuan untuk menangkap pembalikan purata di jalur bawah.

Logika Strategi

  1. Mengira parameter BB standard asas, dev, BB atas dan BB bawah.

  2. Mengira SMA dan jalur penyimpangan upex2 dan dnex2 pada peratusan tertentu dari SMA.

  3. Ambil purata upex2, dnex2 dengan atas BB, bawah BB untuk mendapatkan upex3 dan dnex3.

  4. Ambil yang lebih besar daripada upex3 dan BB atas sebagai upex jalur atas baru, yang lebih kecil daripada dnex3 dan BB bawah sebagai dnex jalur bawah baru.

  5. Pergi panjang apabila harga di bawah dnex, tutup kedudukan apabila lilin hijau muncul (tutup > buka).

Analisis Kelebihan

  1. BB yang dipertingkatkan meningkatkan kepekaan BB asal untuk isyarat pembalikan sebelumnya.

  2. Menyaring whipsaws dengan corak candlestick.

  3. Ujian belakang menunjukkan keuntungan yang stabil dari 2008-2018, lengkung yang lancar, DD maksimum < 20%.

  4. Leverage yang boleh dikonfigurasikan, jam dagangan untuk kawalan risiko.

Analisis Risiko

  1. Penyesuaian parameter BB yang tidak baik boleh menyebabkan perdagangan berlebihan atau peluang yang hilang.

  2. Hanya lama, tidak dapat mendapat keuntungan daripada pembalikan trend.

  3. Penapis lilin mungkin tertunda, tidak dapat keluar tepat pada masanya.

  4. Data backtest 10 tahun tidak mencukupi untuk menguji ketahanan.

  5. Tidak dapat menyesuaikan diri dengan jurang besar atau melompat pembukaan.

Arahan pengoptimuman

  1. Uji kombinasi parameter untuk mengoptimumkan tetapan BB.

  2. Tambah penapis isyarat lain untuk meningkatkan keuntungan.

  3. Pertimbangkan perdagangan pendek apabila harga melebihi barisan atas.

  4. Tetapkan stop loss untuk mengehadkan kerugian perdagangan tunggal.

  5. Membangunkan auto tuning berdasarkan pasaran yang berubah.

  6. Mengoptimumkan peraturan kemasukan untuk jurang dan lompatan.

  7. Memperluaskan tempoh backtest untuk menguji parameter.

Ringkasan

Strategi ini mengenal pasti titik pembalikan dengan BB yang dipertingkatkan dan berjalan panjang berhampiran jalur bawah dengan penapis lilin untuk pengambilan keuntungan yang cepat. Prestasi backtest adalah baik. Tetapi hanya lama, sampel terhad, penyesuaian param diperlukan. Mungkin menghadapi penurunan apabila pasaran berubah. Langkah seterusnya adalah mengesahkan isyarat untuk meningkatkan kadar kemenangan, perdagangan pendek, ujian belakang yang lebih lama untuk ketahanan, untuk meningkatkan daya adaptasi dan kestabilan.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua,  linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)

//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)

upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2

upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open


//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[p]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if exit
    strategy.close_all()

Lebih lanjut