Strategi ini menggunakan kombinasi Bollinger Bands dan moving averages untuk identifikasi dan entri tren.
Menghitung Bollinger Channel untuk menentukan arah tren pasar
Menghitung ukuran tubuh lilin bullish untuk stop loss dan sinyal pembalikan
Masukkan perdagangan ke arah saluran setelah konfirmasi tren
Menggunakan rata-rata bergerak untuk penyaringan untuk menghindari sinyal palsu
Identifikasi tren sistematis yang menggabungkan band dan rata-rata bergerak
Band dengan jelas mengidentifikasi saluran harga dan arah tren. moving averages filter noise. kombinasi memungkinkan deteksi tren yang kuat yang kebal terhadap kejutan pasar sporadis.
Pengendalian risiko yang efektif melalui stop loss body lilin
Membandingkan tubuh lilin saat ini dengan rata-rata historis mendeteksi pembalikan tren untuk stop loss dan pengurangan posisi.
Aturan masuk kuantitatif dan stop loss yang jelas
Peraturan stop loss ukuran tubuh lilin membuat seluruh sistem masuk dan keluar jelas dan sistematis.
Potensi kerugian di pasar yang terikat rentang
Harga yang bergeser di sekitar band dapat menyebabkan kerugian kecil berulang. ukuran posisi harus dikurangi untuk membatasi dampak kerugian.
Stop loss prematur dalam tren yang kuat
Retracement jangka pendek dapat memicu stop dalam tren naik/turun yang kuat.
Sinyal yang salah dari pengaturan parameter yang buruk
Parameter rata-rata bergerak dan band yang kurang optimal dapat menyebabkan sinyal palsu. Parameter harus dioptimalkan untuk keandalan sinyal.
Mengoptimalkan periode lookback rata-rata bergerak
Sesuaikan periode untuk mengurangi perataan untuk deteksi perubahan tren yang lebih cepat.
Uji mekanisme stop loss alternatif
Evaluasi penghentian belakang, ATR berhenti dll untuk menemukan sistem yang optimal.
Mengintegrasikan model pembelajaran mesin
Latih model pada data sejarah yang luas untuk meningkatkan prediksi tren dan sinyal.
Strategi ini menyeimbangkan identifikasi tren dan pengendalian risiko menggunakan Bollinger Bands dan moving average. Pendekatan kuantitatif sistematis dengan aturan masuk / keluar yang jelas memungkinkan penangkapan imbalan yang efektif dengan risiko yang terkendali. Peningkatan lebih lanjut melalui penyesuaian parameter dan integrasi pembelajaran mesin akan meningkatkan ketahanan.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %") needct = input(false, defval = false, title = "Counter-trend entry") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") needbb = input(true, defval = true, title = "Show Bands") needbg = input(true, defval = true, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //Distance dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma hd1 = center + distsma / 2 ld1 = center - distsma / 2 //Trend trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = ema(body, 30) candle = high - low //Engulfing min = min(open, close) max = max(open, close) bar = close > open ? 1 : close < open ? -1 : 0 upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0 dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0 //Signals up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0 dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0 dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)