Strategie zur Trendverfolgung im Donchian Channel

Schriftsteller:ChaoZhang, Datum: 2023-11-06 15:52:56
Tags:

img

Übersicht

Die Donchian Channel Trend-Tracking-Strategie ist eine Trend-Tracking-Strategie, die auf dem Donchian Channel-Indikator basiert.

Strategie Logik

Die Strategie legt zunächst den Backtesting-Zeitrahmen fest und definiert anschließend die langen und kurzen Einstiegsregeln.

Bei Long-Positionen eröffnen Sie Long, wenn der Preis über das obere Band des Donchian-Kanals bricht; schließen Sie Long, wenn der Preis unter das untere Band bricht.

Für Short-Positionen wird kurz geöffnet, wenn der Preis unter den unteren Bereich des Donchian-Kanals bricht; kurz geschlossen, wenn der Preis über den oberen Bereich bricht.

Die Strategie beinhaltet auch den ATR-Indikator, um den Stop-Loss-Ausstiegsmechanismus festzulegen.

Der langfristige Stop-Loss ist der Einstiegspreis abzüglich des ATR-Stop-Loss-Wertes; der kurze Stop-Loss ist der Einstiegspreis zuzüglich des ATR-Stop-Loss-Wertes.

Die Strategie zeichnet auch die oberen und unteren Bands des Donchian-Kanals und die ATR-Stop-Loss-Linie so aus, dass sie ein vollständiges Handelssystem bilden.

Vorteile

  • Verwenden Sie den Donchian-Kanal, um die Trendrichtung zu bestimmen.

  • Der Donchian-Kanal-Glanzparameter ist einstellbar und ermöglicht die Optimierung der Parameter, um die beste Parameterkombination zu finden.

  • Der Stop-Loss-Mechanismus mit ATR kann Risiken wirksam kontrollieren.

  • Die langen und kurzen Handelsregeln sind einfach und leicht verständlich und eignen sich für Anfänger.

  • Die Code-Struktur ist klar und leicht zu verstehen und zu ändern.

Risiken

  • Der Donchian-Kanal kann bei preisbedingten Schwankungen einige Whipsaw-Geschäfte haben.

  • Eine unsachgemäße Einstellung des ATR-Stoppverlustbereichs kann zu einem zu breiten oder zu empfindlichen Stoppverlust führen.

  • Lange und kurze Positionen könnten zu konzentriert sein, so dass Positionsgrößenregelungen erforderlich sind.

  • Die Strategie muss auf Anwendbarkeit auf verschiedene Produkte mit unabhängiger Parameteroptimierung getestet werden.

  • Auch die Handelskosten müssen berücksichtigt werden, da die Parameter in kostenintensiven Umgebungen möglicherweise angepasst werden müssen.

Möglichkeiten zur Verbesserung

  • Optimieren Sie die Periodenparameter des Donchian-Kanals, um die beste Parameterkombination zu finden.

  • Versuchen Sie verschiedene ATR-Koeffizienten, um den optimalen Stop-Loss-Bereich zu finden.

  • Versuchen Sie, einen Trailing Stop Loss zusätzlich zum ATR Stop Loss einzuführen, um Gewinne zu erzielen.

  • Anpassung des Long/Short-Positionsverhältnisses anhand der Marktbedingungen.

  • Die Robustheit der Parameter an verschiedenen Produkten prüfen, um allgemeine Parameter zu finden.

  • Studie mit MACD und anderen Filtern zur Verbesserung der Stabilität.

  • Anpassungsfähigkeit der Parameter unter verschiedenen Handelskostenumgebungen prüfen.

Zusammenfassung

Zusammenfassend ist dies eine relativ einfache Trend-Tracking-Strategie, die sich auf die Anwendung des Donchian-Kanals konzentriert. Der Vorteil liegt in seiner Einfachheit und Leichtigkeit des Verstehens, was es für Lernzwecke geeignet macht, aber Parameter und Risiken müssen noch weiter optimiert werden. Mit verschiedenen Verbesserungstechniken könnten die Stabilität und Rentabilität der Strategie möglicherweise verbessert werden.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © kriswaters

//@version=4
strategy("Donchian Channels Strategy by KrisWaters", overlay=true ) 

// Date filter
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2017, title = "From Year", minval = 1900)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// Strategy Settings
canEnterLong = input(true, title="Can Enter Long Position")
canEnterShort = input(false, title="Can Enter Short Position")

showLongChannel = input(true, title="Show Donchian Long Channels")
showShortChannel = input(false , title="Show Donchian Short Channels")

useAtrAsStopRule = input(false, title="Enable ATR Stop Rule") 

// DonCcian Channel Lengths
longUpperLength = input(20, minval=1)
longLowerLength = input(10, minval=1)

shortUpperLength = input(10, minval=1)
shortLowerLength = input(20, minval=1)

// Donchian indicator calculations
longUpperValue = highest(high,longUpperLength)
longLowerValue = lowest(low,longLowerLength)

shortUpperValue = highest(high,shortUpperLength)
shortLowerValue = lowest(low,shortLowerLength)

// Plot Donchian Channels
uLong = plot(showLongChannel ? longUpperValue : na, color=color.green, offset=1)
lLong = plot(showLongChannel ? longLowerValue : na, color=color.green, offset=1)

uShort = plot(showShortChannel ? shortUpperValue : na, color=color.red, offset=1)
lShort = plot(showShortChannel ? shortLowerValue : na, color=color.red, offset=1)

// Styling
fill(uLong,lLong, color=color.green, transp=95, title="Long Arkaplan")
fill(uShort,lShort, color=color.red, transp=95, title="Short Arkaplan")

// Stop-loss value calculations
atrMultiplier = 2.0
atrValue = atr(20)
longStopValue = open - (atrMultiplier*atrValue)
shortStopValue = open + (atrMultiplier*atrValue)

// Plot stop-loss line
plot(useAtrAsStopRule ? longStopValue : na, color=color.red, linewidth=2, offset=1)
plot(useAtrAsStopRule ? shortStopValue : na, color=color.red, linewidth=2, offset=1)

// Long and Short Position Rules
if canEnterLong and na(longUpperValue) != true and na(longLowerValue) != true and window()
    strategy.entry("Long", true, stop=longUpperValue)
    strategy.exit("Long Exit", "Long", stop=useAtrAsStopRule ? max(longLowerValue,longStopValue) : longLowerValue)
    
if canEnterShort and na(shortUpperValue) != true and na(shortLowerValue) != true and window()
    strategy.entry("Short", false, stop=shortLowerValue)
    strategy.exit("Short Exit", "Short", stop=useAtrAsStopRule ? min(shortUpperValue,shortStopValue) : shortUpperValue)
    


Mehr