Bollinger Band Width Scaling Strategi Filter Tren Rata-rata Bergerak Ganda

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

img

Strategi ini menghasilkan sinyal perdagangan berdasarkan Bollinger Bands dan rata-rata bergerak ganda, dengan penyaringan tren untuk menargetkan tingkat kemenangan yang tinggi dan rasio profit-loss yang baik.

Logika Strategi

  1. Gunakan Bollinger Band atas, tengah dan bawah untuk generasi sinyal panjang/pendek.

  2. Gunakan rata-rata bergerak jangka menengah 20 periode dan jangka panjang 60 periode untuk menentukan arah tren.

  3. Mengatur posisi stop loss secara dinamis berdasarkan lebar Bollinger Band. Ketika lebar lebih dari 0,5%, stop loss di band bawah. Ketika kurang dari 0,5%, kurangi stop loss hingga setengah kisaran band bawah.

  4. Kondisi masuk: Mematahkan band bawah sebagai sinyal beli selama tren naik. Mematahkan band atas sebagai sinyal jual selama tren turun.

  5. Kondisi keluar: Mengambil keuntungan ketika menyentuh band atas atau MA pendek pada long. Mengambil keuntungan ketika menyentuh band bawah atau MA pendek pada short.

  6. Kondisi stop loss: Stop out ketika harga melanggar di bawah kisaran band dinamis bawah pada long. Stop out ketika harga melanggar di atas kisaran band dinamis atas pada short.

Keuntungan

  1. Menggunakan MAs ganda untuk menentukan tren membantu menyaring kebisingan dari pasar non-trend atau jangkauan.

  2. BB band tengah memberikan dukungan/resistensi, band atas/bawah berfungsi sebagai tingkat stop loss dinamis untuk mengendalikan risiko.

  3. Menyesuaikan stop loss range berdasarkan lebar BB mengurangi kemungkinan dihentikan sementara menjaga stop yang wajar.

  4. Berdagang ke arah tren mengarah pada tingkat kemenangan yang lebih tinggi.

Risiko

  1. Double MA dapat menghasilkan false breakout sering, kehilangan titik balik tren.

  2. BB bisa terpukul di pasar yang berbelit-belit, bisa mengurangi frekuensi perdagangan.

  3. Stop loss di dekat level support/resistance yang rentan untuk diambil.

  4. Tidak mampu memanfaatkan penarikan jangka pendek secara efektif.

Peluang Peningkatan

  1. Mengoptimalkan periode MA untuk menemukan yang paling sesuai dengan kondisi pasar.

  2. Optimalkan parameter perkalian BB untuk menyeimbangkan stop loss.

  3. Tambahkan indikator lain untuk konfirmasi multi-faktor untuk meningkatkan kualitas sinyal.

  4. Masukkan volume/momentum untuk mengkonfirmasi tren, menghindari divergensi.

  5. Optimasi manajemen uang misalnya stop loss pecahan tetap, tetap untuk mengendalikan risiko perdagangan tunggal.

  6. Penanganan kejutan harga misalnya celah besar dalam semalam.

Ringkasan

Ini adalah strategi yang kuat secara keseluruhan menggunakan MAs ganda untuk arah tren dan BB untuk dukungan / resistensi dan berhenti dinamis. Keterbatasan ada seperti sinyal tren palsu dan berhenti terlalu dekat. Optimasi lebih lanjut dapat dilakukan di seluruh sistem MA, strategi stop loss, manajemen uang dll untuk meningkatkan ketahanan di berbagai kondisi pasar. Secara keseluruhan strategi yang sangat baik untuk pemula dengan tingkat kemenangan yang tinggi, profil risiko-manfaat yang baik dan logika yang sederhana namun efektif.


/*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 banyak