Skala Lebar Bollinger Band Scaling Double Moving Average Trend Filter Strategy

Penulis:ChaoZhang, Tarikh: 2023-10-25 15:00:20
Tag:

img

Strategi ini menghasilkan isyarat perdagangan berdasarkan Bollinger Bands dan purata bergerak berganda, dengan penapisan trend untuk menyasarkan kadar kemenangan yang tinggi dan nisbah keuntungan-kerugian yang baik.

Logika Strategi

  1. Gunakan Bollinger Band atas, tengah dan bawah untuk penjanaan isyarat panjang / pendek.

  2. Menggunakan purata bergerak jangka menengah 20 tempoh dan jangka panjang 60 tempoh untuk menentukan arah trend.

  3. Sesuaikan kedudukan stop loss secara dinamik berdasarkan lebar Bollinger Band. Apabila lebar lebih besar daripada 0.5%, stop loss pada band yang lebih rendah. Apabila kurang daripada 0.5%, mengurangkan stop loss kepada separuh julat band yang lebih rendah.

  4. Syarat kemasukan: Memutus jalur bawah sebagai isyarat beli semasa aliran naik. Memutus jalur atas sebagai isyarat jual semasa aliran turun.

  5. Syarat keluar: Dapatkan keuntungan apabila menyentuh jalur atas atau MA pendek pada panjang. Dapatkan keuntungan apabila menyentuh jalur bawah atau MA pendek pada pendek.

  6. Keadaan Stop Loss: Stop out apabila harga pecah di bawah julat dinamik band bawah pada jangka panjang. Stop out apabila harga pecah di atas julat dinamik band atas pada jangka pendek.

Kelebihan

  1. Menggunakan MAs berganda untuk menentukan trend membantu menapis bunyi bising dari pasaran yang tidak trend atau terikat julat.

  2. Band tengah BB menyediakan sokongan / rintangan, jalur atas / bawah berfungsi sebagai tahap stop loss dinamik untuk mengawal risiko.

  3. Menyesuaikan julat stop loss berdasarkan lebar BB mengurangkan peluang untuk dihentikan sambil mengekalkan stop yang munasabah.

  4. Perdagangan ke arah trend membawa kepada kadar kemenangan yang lebih tinggi.

Risiko

  1. MAs berganda boleh menghasilkan pecah palsu dengan kerap, kehilangan titik perubahan trend.

  2. BBs boleh tersingkir dalam pasaran yang bergolak, boleh mengurangkan kekerapan perdagangan.

  3. Hentikan kerugian berhampiran tahap sokongan / rintangan yang cenderung untuk dikeluarkan.

  4. Tidak dapat memanfaatkan pengeluaran jangka pendek dengan berkesan.

Peluang Peningkatan

  1. Mengoptimumkan tempoh MA untuk mencari yang paling sesuai dengan keadaan pasaran.

  2. Mengoptimumkan parameter pengganda BB untuk mengimbangi stop loss yang dipukul.

  3. Tambah penunjuk lain untuk pengesahan pelbagai faktor untuk meningkatkan kualiti isyarat.

  4. Masukkan jumlah / momentum untuk mengesahkan trend, mengelakkan perbezaan.

  5. Pengoptimuman pengurusan wang e.g. stop loss pecahan tetap, tetap untuk mengawal risiko perdagangan tunggal.

  6. Pengendalian kejutan harga, contohnya jurang semalam yang besar.

Ringkasan

Ini adalah strategi yang kuat secara keseluruhan dengan menggunakan MAs berganda untuk arah trend dan BB untuk sokongan / rintangan dan berhenti dinamik. Keterbatasan wujud seperti isyarat trend palsu dan berhenti terlalu dekat. Pengoptimuman lanjut boleh dibuat di seluruh sistem MA, strategi stop loss, pengurusan wang dan lain-lain untuk meningkatkan ketahanan di pelbagai keadaan pasaran. Secara keseluruhan strategi yang sangat baik untuk pemula dengan kadar kemenangan yang tinggi, profil risiko-balasan yang baik dan logik yang mudah namun berkesan.


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

//@version=2
strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true)

len = input(20, minval=1, title="Length")
multiplier = input(4, minval=1, title="multiplier")
trendTimeFrame = input(60, minval=1, title="Trend Time Frame")
useTrendFilter = input(true, type=bool, title = "Use Trend Filter")

src = input(close, title="Source")
out = sma(src, len)
//plot(out, title="SMA", color=blue)

stdOut = stdev(close, len)
bbUpper = out + stdOut * multiplier
bbLower = out - stdOut * multiplier
bbUpper2 = out + stdOut * (multiplier / 2)
bbLower2 = out - stdOut * (multiplier / 2)
bbUpperX2 = out + stdOut * multiplier * 2
bbLowerX2 = out - stdOut * multiplier * 2
bbWidth = (bbUpper - bbLower) / out


closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close)
smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20))

//plot(smaLongTerm, color=red)

trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true
trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true

bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown
bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp


closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp 
closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown


cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp)
cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown)


if (bullish)
    strategy.entry("Buy", strategy.long, comment="Buy")

if (bearish)
    strategy.entry("Sell", strategy.short, comment="Sell")
    

strategy.close("Buy", closeBuy or cutLossBuy)
   
strategy.close("Sell", closeSell or cutLossSell)


Lebih lanjut