Die Dual Donchian Channel Breakout Strategie ist eine Breakout-Handelsstrategie, die auf Donchian-Kanälen basiert. Sie verwendet schnelle und langsame Donchian-Kanäle, um lange und kurze Handelssignale zu konstruieren. Wenn der Preis durch den langsamen Kanal bricht, öffnen Sie lange oder kurze Positionen. Wenn der Preis durch den schnellen Kanal bricht, schließen Sie Positionen. Die Strategie legt auch Gewinn- und Stop-Loss-Bedingungen fest.
Die Strategie für einen doppelten Donchian-Kanal-Ausbruch basiert auf zwei Parametern:Langsamer Donchian-KanalzeitraumundSchnelle Donchian-KanalzeitDie Strategie berechnet zunächst die oberen und unteren Bands der beiden Donchian-Kanäle.
Das lange Eingangssignal ist einAusbruch über dem oberen BandmitVolatilität über dem SchwellenwertDas kurze Eingangssignal ist einAufschlüsselung unterhalb des unteren BandesmitVolatilität über dem Schwellenwert.
Das lange Stop-Loss-Ausgangssignal ist einAufschlüsselung unterhalb des unteren BandesDas kurze Stop-Loss-Ausgangssignal ist einAusbruch über dem oberen Band.
Die Strategie legt außerdemGewinn machenDie Standard-Gewinnquote beträgt 2%, d. h. die halbe Position, wenn die Kursbewegung 2% erreicht.
Die Strategie des doppelten Donchian-Kanal-Ausbruchs weist folgende Vorteile auf:
Das Dual-Channel-Design kann Trendsignale sowohl aus längeren als auch aus kürzeren Zeitrahmen erfassen und so genauere Einträge ermöglichen.
Die Volatilitätsbedingung verhindert den häufigen Handel auf den Märkten mit Bandbreite.
Umfassende Gewinn- und Stop-Loss-Einstellungen verriegeln teilweise Gewinne und verringern Verluste.
Einfache und klare Strategie-Logik, leicht zu verstehen und umzusetzen.
Anpassungsfähige Parameter passen zu unterschiedlichen Produkten und Handelspräferenzen.
Die Dual Donchian Channel Breakout Strategie birgt auch einige Risiken:
Das Dual-Channel-Design ist empfindlich und kann falsche Signale erzeugen.
In volatilen Märkten kann ein Stop Loss zu häufig ausgelöst werden.
Ein festes Prozentsatz Gewinnspanne maximiert den Gewinn nicht.
Die tatsächliche Handelsleistung kann von den Erwartungen des Backtest abweichen, erfordert jedoch eine gründliche Validierung und erforderlichenfalls Anpassungen der Parameter.
Die Dual Donchian Channel Breakout Strategie kann in mehreren Aspekten optimiert werden:
Testen Sie mehr Periodenkombinationen, um optimale Parameter zu finden.
Versuchen Sie verschiedene Volatilitätsmaße wie ATR, um die stabilste Metrik zu finden.
Setzen Sie eine Begrenzung für die Anzahl der Einträge, um Verluste am Ende des Trends zu vermeiden.
Probieren Sie dynamischen Gewinn für einen höheren Einzelhandelsgewinn.
Einbeziehung anderer Indikatoren zur Filterung von Einträgen und zur Verbesserung der Genauigkeit, z. B. Volumen.
Optimieren Sie Geldmanagementmodelle wie die Festfractional Position Größe für eine bessere Risikokontrolle.
Zusammenfassend ist die Dual Donchian Channel Breakout Strategy eine ausgezeichnete Trendfolgestrategie. Sie kombiniert sowohl Trendidentifizierung als auch Umkehrschutzfunktionen. Mit Parameteroptimierung und Regelverfeinerung kann sie in den meisten Produkten und Marktbedingungen profitabel sein. Die Strategie ist einfach und praktisch, lohnt sich zu lernen und für quantitative Trader anzuwenden.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) // Donchian Channels slowLen = input.int(50, title="Slow Donchian", group = "Conditions") fastLen = input.int(30, title="Fast Donchian", group = "Conditions") // Volatility Calculated as a percentage volatility = input.int(3, title="Volatility (%)", group = "Conditions") // Long positions long = input.bool(true, "Long Position On/Off", group = "Strategy") longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // Short positions short = input.bool(true, "Short Position On/Off", group = "Strategy") shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01 // First take profit point for positions TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy") // Slow Donchian Calculated ubSlow = ta.highest(high, slowLen)[1] lbSlow = ta.lowest(low, slowLen)[1] // Fast Donchian Calculated ubFast = ta.highest(high, fastLen)[1] lbFast = ta.lowest(low, fastLen)[1] // Plot Donchian Channel for entries plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") // This calculation, the strategy does not open position in the horizontal market. fark = (ubSlow - lbSlow) / lbSlow * 100 // Take profit levels longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Code long trading conditions longCondition = ta.crossover(close, ubSlow) and fark > volatility if longCondition and long == true strategy.entry("Long", strategy.long) // Code short trading conditions shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if shortCondition and short == true strategy.entry("Short", strategy.short) // Determine long trading conditions if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close_all("Close All") // Determine short trading conditions if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close_all("Close All") // Take Profit Long if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) // Take Profit Short if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)