Donchian Channel Breakout Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-29
Tags:

img

Übersicht

Die Donchian Channel Breakout Strategie ist eine Trendfolgestrategie. Sie bildet einen Preiskanal, indem sie die höchsten und niedrigsten Preise über einen bestimmten Zeitraum berechnet und die Kanalgrenzen als Kauf- und Verkaufssignale verwendet.

Strategie Logik

Diese Strategie verwendet den Donchian Channel Indikator, um Preistrends zu bestimmen und Ein- und Ausstiegspunkte zu berechnen. Der Donchian Channel besteht aus einer oberen Schiene, einer unteren Schiene und einer mittleren Schiene.

Die Ein- und Ausstiegsperiode kann unabhängig voneinander konfiguriert werden. Wenn der Preis durch die untere Schiene nach oben bricht, geht er lang. Wenn der Preis durch die obere Schiene nach unten bricht, geht er kurz. Der Ausstiegspunkt ist, wenn der Preis die entsprechende Schiene wieder berührt. Die mittlere Schiene kann auch als Stop-Loss-Linie verwendet werden.

Darüber hinaus legt die Strategie auch einen Take-Profit-Punkt fest. Der Take-Profit-Preis für Long-Positionen ist der Einstiegspreis multipliziert mit (1 + Take-Profit-Prozent) und umgekehrt für Short-Positionen.

Zusammenfassend lässt sich sagen, dass diese Strategie bei der Beurteilung des Trends ausreichend Spielraum bietet, um Stops zu setzen und Gewinne zu erzielen.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Eine klare Signallogik und eine einfache/zuverlässige Signalgenerierung.
  2. Der Indikator Donchian Channel ist unempfindlich gegenüber Kursschwankungen, was dazu beiträgt, den Trend zu erfassen.
  3. Anpassungsfähige Kanalparameter für verschiedene Assets und Zeitrahmen.
  4. Die eingebauten Stop-Loss-/Take-Profit-Funktionen kontrollieren das Risiko effektiv.
  5. Hohes Gewinnpotenzial für volatile Vermögenswerte wie Kryptowährungen.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Nicht in der Lage, Risiken durch enorme Kursschwankungen trotz Stop Loss vollständig zu vermeiden.
  2. Eine unsachgemäße Einstellung der Parameter kann zu einem übermäßigen Handel und zu höheren Kosten führen.
  3. Unempfindlich gegenüber Preisschwankungen, kann einige Handelsmöglichkeiten verpassen.

Zur Verringerung der oben genannten Risiken:

  1. Positionen angemessen zu vergrößern und auf Vermögenswerte zu diversifizieren, um das Gesamtrisiko zu kontrollieren.
  2. Optimieren Sie die Parameter, um die beste Kombination zu finden, möglicherweise mithilfe von maschinellem Lernen.
  3. Zusätzliche Indikatoren zur Bestimmung der Signalzuverlässigkeit.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Dimensionen weiter optimiert werden:

  1. Testen und optimieren Sie mehr Parameterkombinationen, um die optimalen Werte zu finden.
  2. Einbeziehung von Modellen des maschinellen Lernens zur automatischen Identifizierung optimaler Parameter, z. B. durch Verstärkungslernen.
  3. Kombinieren Sie andere Indikatoren wie gleitende Durchschnitte und Volumen, um den Trend und die Signalzuverlässigkeit zu bestimmen.
  4. Entwickeln Sie fortschrittlichere Stop-Loss-Strategien, z. B. Trailing Stop-Loss, Chandelier Exit usw., um Risiken besser zu kontrollieren.
  5. Erweitern Sie die Strategie auf weitere Anlageklassen, um die beste Passform zu finden.

Schlussfolgerung

Die Donchian-Kanal-Breakout-Strategie bietet klare Signale und kontrollierbare Risiken für den Trendhandel. Sie eignet sich besonders für volatile Vermögenswerte wie Kryptowährungen mit großem Gewinnpotenzial. Es gibt auch Möglichkeiten, Parameter weiter zu optimieren und andere Indikatoren einzubeziehen, die Wege für zukünftige Verbesserungen darstellen.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
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/
// © algotradingcc
// Strategy testing and optimisation for free trading bot 

//@version=4
strategy("Donchian Channel Strategy [for free bot]", overlay=true )

//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")

//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)

SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
    TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
    
if strategy.position_size < 0
    TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)

// Long Position    
if isBuy and timeRange
    strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0) 
    
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)

// Short Position
if isSell and timeRange
    strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0) 
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()


Mehr