Diese Strategie basiert auf dem Standard-Donchian Channel-Indikator und wartet bis zu zwei aufeinander folgenden höheren Höchstständen (oder niedrigeren Tiefständen) standardmäßig auf eine Bestätigung, bevor es Handelssignale ausgibt, um zu vermeiden, dass Market Maker
Die Strategie bietet auch die Möglichkeit, den Dual-Confirmation-Mechanismus zu deaktivieren, so dass es sofort Handelssignale ausstellen kann, wenn neue Höchst- oder Tiefststände festgestellt werden.
Für Personen, die nicht gerne kurz gehen, besteht auch die Möglichkeit, Shortpositionen auszuschließen.
Die Strategie basiert auf den oberen und unteren Bands des Donchian Channel-Indikators. Das obere Band ist das höchste Hoch über die letzten n Bars, während das untere Band das niedrigste Tief über die letzten n Bars ist.
Das mittlere Band ist der Durchschnitt der oberen und unteren Bands und kann zur Messung der Trendrichtung verwendet werden.
Wenn der Preis über den oberen Band bricht, wird die Strategie lang, wenn keine vorhandene Long-Position besteht.
Um falsche Ausbrüche auszufiltern, ist die Option
Zu den Vorteilen dieser Strategie gehören:
Der Donchian-Kanal-Indikator ist einfach und leicht zu verstehen.
Der Doppel-Bestätigungsmechanismus filtert falsche Ausbrüche effektiv aus und vermeidet, eingeschlossen zu werden.
Die Kanal-Lookback-Periode kann an unterschiedliche Marktbedingungen angepasst werden.
Die Leerverkaufsoption berücksichtigt die Bedürfnisse verschiedener Anleger.
Der Code ist sauber und leicht verständlich für die weitere Entwicklung.
Diese Strategie birgt auch einige Risiken:
Die doppelte Bestätigung kann dazu führen, dass einige Handelsmöglichkeiten verpasst werden.
Eine unsachgemäße Einstellung des Kanalzeitraums kann zu einem zu häufigen oder spärlichen Handel führen.
Lange Haltezeiten können die Risiken nicht wirksam kontrollieren.
Weitere Risiken durch Leerverkäufe müssen beachtet werden.
Bei der Überanpassung des Backtests muss Vorsicht geboten werden.
Entsprechende Lösungen
Deaktivieren Sie die doppelte Bestätigung oder verkürzen Sie das Bestätigungsintervall.
Optimierung der Parameter und Auswahl geeigneter Kanalperioden.
Einhaltverlust/Gewinn auf eine angemessene Grenze pro Handelsverlust setzen.
Deaktivieren Sie den Leerverkauf, gehen Sie nur lang.
Strategie in verschiedenen Marktumgebungen konsequent bewerten.
Zu den Möglichkeiten der Verbesserung gehören:
Dynamische Anpassung der Positionsgröße anhand der Volatilität.
Filtern Sie falsche Ausbrüche anhand der Ausbruchstärke.
Verwenden Sie einen Trailing Stop-Mechanismus, um Trends zu verfolgen.
Kombinieren Sie andere Indikatoren, um die Trendrichtung zu bestimmen und wichtige Wendepunkte zu vermeiden.
Parameter automatisch durch maschinelles Lernen optimieren.
Diese Verbesserungen können die Stabilität und Rentabilität der Strategie weiter verbessern.
Dies ist eine einfache, aber effektive Trendstrategie, die auf dem Dual-Confirmation-Mechanismus des Donchian-Kanals basiert.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true) length = input(20, minval=1) lower = lowest(length) upper = highest(length) basis = avg(upper, lower) bool inShortPos = false bool inLongPos = false bool wait4confirmation = input(true, title="Wait for double confirmation?") bool doShort = input(true, title="Include short positions") plot(basis, "Basis", color=#FF6D00) u = plot(upper, "Upper", color=#2962FF) l = plot(lower, "Lower", color=#2962FF) fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background") //if(inShortPos == false and inLongPos == false) if(not inLongPos and upper > upper[1]) if(wait4confirmation) if(not inLongPos and upper > upper[1] and upper[1] > upper[2]) strategy.close("Short", true) strategy.entry("Buy", true) else strategy.close("Short", true) strategy.entry("Buy", true) else if(not inShortPos and lower < lower[1]) if(wait4confirmation) if(not inShortPos and lower < lower[1] and lower[1] < lower[2]) strategy.close("Buy", true) if(doShort) strategy.entry("Short", true) else strategy.close("Buy", true) if(doShort) strategy.entry("Short", true)