Bollinger-Bandbreite Skalierung Doppel gleitender Durchschnitt Trendfilterstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-25 15:00:20
Tags:

img

Diese Strategie erzeugt Handelssignale auf der Grundlage von Bollinger-Bändern und doppelten gleitenden Durchschnitten, wobei der Trend gefiltert wird, um eine hohe Gewinnrate und ein gutes Gewinn-Verlust-Verhältnis zu erreichen.

Strategie Logik

  1. Verwenden Sie die oberen, mittleren und unteren Bollinger-Bänder für die Erzeugung von langen / kurzen Signalen. Verkaufen, wenn der Preis das obere Band berührt, kaufen, wenn es das untere Band berührt.

  2. Verwenden Sie 20-Perioden-Mittelfristige und 60-Perioden-Langfristige gleitende Durchschnitte, um die Trendrichtung zu bestimmen.

  3. Dynamische Anpassung der Stop-Loss-Position basierend auf der Breite des Bollinger-Bands. Wenn die Breite größer als 0,5%, Stop-Loss im unteren Band. Wenn weniger als 0,5%, reduzieren Sie den Stop-Loss auf die Hälfte des unteren Bandbereichs.

  4. Einstiegsbedingungen: Durchbrechen des unteren Bandes als Kaufsignal während des Aufwärtstrends. Durchbrechen des oberen Bandes als Verkaufssignal während des Abwärtstrends.

  5. Ausgangskonditionen: Gewinn beim Berühren des oberen Bands oder des kurzen MA bei Longs. Gewinn beim Berühren des unteren Bands oder des kurzen MA bei Shorts.

  6. Stop-Loss-Bedingungen: Stop-Out, wenn der Preis unter den unteren dynamischen Bereich des Longs bricht. Stop-Out, wenn der Preis über den oberen dynamischen Bereich des Shorts bricht.

Vorteile

  1. Die Verwendung von doppelten Markteinführungsmethoden zur Bestimmung des Trends hilft, Lärm von Märkten zu filtern, die nicht zum Trend gehören oder in einem Bereich liegen.

  2. Die BB-Mittelbänder bieten Unterstützung/Widerstand, die oberen/unten Bande dienen als dynamische Stop-Loss-Level zur Risikokontrolle.

  3. Die Anpassung des Stop-Loss-Bereichs an die BB-Breite verringert die Wahrscheinlichkeit, dass der Stopp ausgeschaltet wird, während der Stopp angemessen gehalten wird.

  4. Der Trendhandel führt zu höheren Gewinnraten.

Risiken

  1. Doppel-MAs können häufig falsche Ausbrüche erzeugen und Trendwendepunkte verpassen.

  2. BBs können in unruhigen, nicht-trendigen Märkten geschlagen werden und die Handelsfrequenz reduzieren.

  3. Stoppverlust in der Nähe von Unterstützungs-/Widerstandsniveaus, die anfällig sind, um ausgenommen zu werden.

  4. Sie können kurzfristige Rückzüge nicht effektiv nutzen.

Möglichkeiten zur Verbesserung

  1. Optimierung der Zulassungsfristen, um die am besten geeigneten Marktbedingungen zu finden.

  2. Optimieren Sie den BB-Multiplikatorparameter, um den Stop-Loss auszugleichen.

  3. Hinzufügen anderer Indikatoren zur Mehrfaktorbestätigung zur Verbesserung der Signalqualität.

  4. Volumen/Momentum einbeziehen, um den Trend zu bestätigen und Abweichungen zu vermeiden.

  5. Optimierung des Geldmanagements, z. B. festes Bruchteil, festes Stop-Loss zur Kontrolle des Einzelhandelsrisikos.

  6. Preis-Schock-Handling, z. B. große Übernachtungslücken.

Zusammenfassung

Dies ist eine insgesamt robuste Strategie, bei der doppelte MA für die Trendrichtung und BBs für Unterstützung / Widerstand und dynamische Stops verwendet werden. Es gibt Einschränkungen wie falsche Trendsignale und zu nahe Stopps. Weitere Optimierungen können über das MA-System, die Stop-Loss-Strategie, das Geldmanagement usw. hinweg vorgenommen werden, um die Robustheit unter verschiedenen Marktbedingungen zu erhöhen. Insgesamt eine ausgezeichnete Strategie für Anfänger mit ihrer hohen Gewinnrate, einem guten Risiko-Lohn-Profil und einer einfachen, aber effektiven Logik.


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


Mehr