Diese Strategie nutzt eine Kombination aus Bollinger Bands und gleitenden Durchschnitten für die Trendenkennung und den Eintritt. Sie nutzt die Trendenerkennungsfähigkeit von Bollinger Bands und den Filtereffekt von gleitenden Durchschnitten, um Markttrendrichtungen für den Eintritt in Trending Markets effektiv zu identifizieren.
Berechnung des Bollinger-Kanals zur Bestimmung der Markttrendrichtung
Berechnung der bullischen Kerzenkörpergröße für Stop-Loss- und Umkehrsignale
Eintritt in die Kanalrichtung bei Trendbestätigung
Verwendung gleitender Durchschnitte zur Filtration, um falsche Signale zu vermeiden
Systematische Trendenbestimmung unter Kombination von Bands und gleitenden Durchschnitten
Die Bands identifizieren eindeutig die Preiskanäle und die Trendrichtung. Die gleitenden Durchschnitte filtern das Rauschen.
Wirksame Risikokontrolle durch Stoppverlust des Kerzenkörpers
Der Vergleich des aktuellen Kerzenkörpers mit dem historischen Durchschnitt ermittelt eine Trendumkehrung für Stop-Loss und Positionsreduktion.
Klarer quantitativer Eintragungs- und Stop-Loss-Regeln
Strenge Anforderungen an den gleitenden Durchschnitt und die Kanalrichtung für den Einstieg. Kerzenkörpergröße Stop-Loss-Regel.
Potenzielle Verluste auf den Märkten mit Bandbreite
Die Anpassung der Positionsgröße sollte so reduziert werden, dass die Verlustwirkung begrenzt ist.
Vorzeitige Stop-Loss-Tendenzen bei starken Trends
Kurzfristige Retracements können bei starken Auf-/Abwärtstrends zu Stopps führen.
Fehlerhafte Signale durch schlechte Parameter-Tuning
Unteroptimale gleitende Durchschnitts- und Bandparameter können zu falschen Signalen führen.
Optimierung der gleitenden Durchschnittsrückblickperiode
Periode anpassen, um die Glättung zu reduzieren, um eine schnellere Erkennung von Trendänderungen zu ermöglichen.
Prüfung alternativer Stop-Loss-Mechanismen
Beurteilen Sie die Hinterhaltungen, ATR-Haltungen usw., um ein optimales System zu finden.
Einbeziehung von Modellen für maschinelles Lernen
Train-Modelle auf umfangreichen historischen Daten, um die Trend- und Signalvorhersage zu verbessern.
Diese Strategie balanciert Trendidentifikation und Risikokontrolle mit Bollinger-Bändern und gleitenden Durchschnitten. Der systematische quantitative Ansatz mit klaren Ein-/Ausgangsregeln ermöglicht eine effektive Belohnungserfassung mit kontrolliertem Risiko. Weitere Verbesserungen durch Parameter-Tuning und Maschinelles Lernen werden die Robustheit verbessern.
/*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)