Doppelter gleitender Durchschnitt - Bollinger-Bänder-Trendfolgestrategie


Erstellungsdatum: 2023-12-22 14:54:20 zuletzt geändert: 2023-12-22 14:54:20
Kopie: 1 Klicks: 619
1
konzentrieren Sie sich auf
1621
Anhänger

Doppelter gleitender Durchschnitt - Bollinger-Bänder-Trendfolgestrategie

Überblick

Die Strategie ist eine quantitative Handelsstrategie, die eine Kombination aus Bollinger Bands und Gleichen verwendet, um Trends zu beurteilen und einzugehen. Sie kombiniert die Trenderkennungsfähigkeit der Bollinger Bands mit dem Ripple-Effekt des Moving Averages, um die Richtung der Markttrends effektiv zu erkennen und in trendspezifischen Bewegungen einzugehen.

Strategieprinzip

  1. Die Berechnung von Höchst- und Tiefstpreisen im Brin-Band-Kanal zur Bestimmung der Markttrends

    • Highest- und Lowest-Rechenkanal auf und ab
    • Die mittlere Achse des Kanals ist der Durchschnitt der höchsten und niedrigsten Preise
    • Beurteilung der Position des Preises auf dem Kanal, um die Richtung der Tendenz zu bestimmen
  2. Berechnung der Größe der Sonnenstrahlen, Beurteilung von Stopp- und Umkehrsignalen

    • Die absoluten Werte des Schlusskurses minus des Eröffnungskurses
    • Berechnung des Mittelwerts der Sonnenstrahl-Einheiten in N-Zyklen, Vergleich mit der aktuellen Sonnenstrahl-Einheiten-Größe, Verlust und Umkehrung zu beurteilen
  3. Nach Bestätigung der Trendrichtung, Eintritt in Richtung der Passage

    • Eintritt in den unteren Bahnstreifen während des Aufwärtstrends
    • Bei Abwärtstrend liegt der Hohlkopf in der Nähe der Oberbahn.
  4. Die Verwendung von Moving Averages zur Filterung und zur Vermeidung von Falschsignalen

    • Berechnen Sie den Moving Average für den Schlusskurs für N-Zyklen
    • Die Handelssignale werden nur dann gesendet, wenn der Preis über dem Durchschnitt liegt.

Strategische Vorteile

  1. Die Beurteilung von Trends in Verbindung mit dem Brin-Band-Kanal und dem Moving Average ist systematisch und stark.

Die Brin-Band kann die Preiskanäle und die Trendrichtung klar bestimmen, der Moving Average kann die Wellen filtern, die Kombination von beiden kann Trends effektiv identifizieren, die Auswirkungen von Marktausfällen vermeiden und die Stabilität des Systems gewährleisten.

  1. Nutzung der Größe der Sonnenstrahl-Einheit zur Risikostoppung und -kontrolle

Durch die Berechnung der mittleren Größe der Sonnenstrahl-Einheiten in einem bestimmten Zeitraum und die Vergleiche mit der Größe der aktuellen Periode kann eine Trendwende klar ermittelt und eine Stop-Loss-Position eingelegt werden, um das Risiko der Strategie effektiv zu kontrollieren.

  1. Quantifizierte Einstiegs- und Stop-Loss-Regeln sind klar

Die Strategie beinhaltet das Eintritt unter den Bedingungen der Kombination von Moving Averages und Durchgangsrichtung und die Verwendung der Größenordnung der Sonneneinstellungen für den Stop-Loss, so dass die Eintritts- und Stop-Loss-Regeln des gesamten Systems sehr klar und systematisch sind.

Risikoanalyse

  1. Potenzielle Verlustrisiken bei Erschütterungen

In einem konjunkturellen Umfeld kann es sein, dass der Preis mehrmals auf die Abwärtsspur trifft, was zu wiederholten kleinen Verlusten führt. Die Positionsgröße sollte reduziert werden, um die Einzelschäden zu verringern.

  1. Die Gefahr, dass ein Stopp zu nahe kommt, führt dazu, dass eine zu große Schwankung ausgeschaltet wird.

In einem starken Trend kann eine kurzfristige Preisrückführung dazu führen, dass die Stop-Loss-Regel ausgeschaltet wird, wobei die Stop-Loss-Marge entsprechend gelockert werden sollte, um dem Trend zu folgen.

  1. Wahrscheinlichkeit, dass ein falscher Parameter zu einem Fehlsignal führt

Die Parameter für Moving Averages und Brinbands sind falsch eingestellt, was zu einer Fehlinterpretation des Signals führen kann. Die Parameter sollten entsprechend optimiert werden, damit das Signal stabil und zuverlässig ist.

Richtung der Strategieoptimierung

  1. Optimierung von Moving Average-Periodenparametern

Die Anpassung der Moving Average-Parameter reduziert die Geschmeidigkeit und ermöglicht eine schnellere Erkennung von Trendänderungen.

  1. Test der Wirkung verschiedener Stop-Loss-Regeln

Versuchen Sie mit verschiedenen Stop-Loss-Regeln, wie Tracking-Stops, ATR-Stops und so weiter, um die beste Stop-Loss-Methode zu finden.

  1. Erweiterung der Unterstützung von Modellen für maschinelles Lernen

Das Modell wurde auf der Grundlage einer großen Anzahl von historischen Daten trainiert, um Trends zu beurteilen und Handelssignale zu senden.

Zusammenfassen

Die Strategie berücksichtigt Trendbeurteilung und Risikokontrolle, nutzt Brin-Band-Kanäle und Moving Averages zur Trenderkennung und verwendet die Größe der Sonnenschein-Einheit zum Stoppen. Die Strategie ist systematisch, die quantitativen Regeln sind klar und können die Risiken effektiv kontrollieren, um überschüssige Gewinne zu erzielen. Die nachträgliche Verbesserung durch Parameteroptimierung und Kombination von Machine Learning macht die Strategie stabiler und zuverlässiger.

Strategiequellcode
/*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)