Donchian Breakout-Handelsstrategie


Erstellungsdatum: 2024-04-29 14:56:35 zuletzt geändert: 2024-04-29 14:56:35
Kopie: 0 Klicks: 375
1
konzentrieren Sie sich auf
1214
Anhänger

Donchian Breakout-Handelsstrategie

Überblick

Die Donchian-Breakout-Handelsstrategie ist ein Handelssystem, das auf den Donchian-Channel-Indikatoren basiert. Die Hauptidee der Strategie ist es, Markttrends durch die Durchbrüche der Donchian-Channel-Ober- und Unterbahn zu erfassen und mit einem festen Risiko-Gewinn-Ratio (RR) zu stoppen.

Strategieprinzip

  1. Berechnung des Donchian-Kanals: Berechnen Sie den Höchst- und Mindestpreis innerhalb des festgelegten Donchian-Kanal-Zyklus ((Standard 20)), als die Oberbahn und Unterbahn des Donchian-Kanals, und berechnen Sie den Mittelpunkt der Oberbahn und Unterbahn als die Mittelbahn des Donchian-Kanals.
  2. Beurteilen, ob ein neues Hoch/Neues Tief entsteht: Vergleichen Sie im Kreislauf die aktuellen Donchian-Kanal-Ober- und Unterbahnen mit den Obergängen und Unterbahnen der vorangegangenen Perioden, um zu beurteilen, ob ein neues Hoch oder ein neues Tief entsteht. Wenn ein neues Hoch entsteht, wird der Donchian-Oberbahnblau angezeigt; wenn ein neues Tief entsteht, wird der Donchian-Unterbahnblau angezeigt.
  3. Breakout-Positionen: Wenn der Preis bei der Schließung die blaue Donchian-Oberbahn durchbricht, wird eine Mehrkopfposition eröffnet, wenn die blaue Donchian-Unterbahn durchbricht, wird eine Leerkopfposition eröffnet. Das heißt, der Durchbruch ist nur gültig, wenn ein neues Hoch / ein neues Tief geschaffen wurde.
  4. Stopp-Loss: Bei der Eröffnung der Position wird der Eröffnungspreis und der aktuelle Donchian-Channelschnittpreis aufgezeichnet und der Kursunterschied zwischen beiden berechnet. Die Stop-Loss-Position wird in den Donchian-Channelschnitt eingestellt, die Stop-Position wird nach dem eingestellten Risiko-Gewinn-Verhältnis (default 5x) berechnet und der Kursunterschied wird berechnet.
  5. Plateau: Plateau, wenn der Preis den Stop-Loss-Preis erreicht.

Strategische Vorteile

  1. Donchian-Breakout-Strategien, bei denen die Börse in Richtung der Markttrends handelt, indem sie Positionen in Richtung der oberen/unteren Bahn durchbricht.
  2. Neue Hoch/Neue Tief-Filterung: Strategie, die die Qualität des Eröffnungssignals verbessert, indem sie entscheidet, ob ein Donchian-Kanal-Zyklus Neues Hoch/Neues Tief erstellt wurde, um teilweise Geräuschsignale und falsche Durchbrüche zu filtern.
  3. Fixed Risk-Rate: Die Stop-Loss-Position für jede Transaktion basiert auf einem festen Risiko-Rate. Das Risiko ist kontrollierbar und fördert die Geldverwaltung.
  4. Einfache Parameter: Die Einstellung der Strategieparameter ist relativ einfach, hauptsächlich aufgrund der Donchian-Kanal-Zyklus und des Risiko-Gewinn-Verhältnisses. Die Optimierung und Steuerung ist relativ einfach.

Strategisches Risiko

  1. Ausmaß Verlust: Die Strategie Stop-Loss Position ist der Donchian-Kanal mittlerer Bahn, in der es bei unklaren Trends oder Schaukeln möglich ist, dass ein einzelner Handel erhebliche Verluste verursacht.
  2. Häufige Transaktionen: Wenn die Donchian-Kanal-Zyklus-Einstellungen klein sind, kann dies zu häufigen Leerpositionen führen, die die Transaktionskosten erhöhen.
  3. Trendwechsel: Eine Strategie kann mehrere Stop-Losses in Folge während einer Trendwechselperiode aufweisen.
  4. Parameter-sensibel: Strategie-Leistung ist sehr sensibel auf Parameter-Einstellungen, die nach verschiedenen Markteigenschaften und Marktzyklen optimiert werden müssen.

Richtung der Strategieoptimierung

  1. Dynamische Stop-Losses: Anpassung der Stop-Loss-Position in Echtzeit an die Preisentwicklung, die Volatilität usw. Durch die Verwendung von ATR als Stop-Referenz wird das Risiko eines einzelnen Handels verringert.
  2. Trendfilter: Hinzufügen von Trendindikatoren wie beispielsweise Moving Averages, die nur dann eingesetzt werden, wenn die Richtung des Trends klar ist, um die Signalqualität zu verbessern.
  3. In Kombination mit anderen Indikatoren, z. B. Dynamikindikatoren wie RSI, MACD, um die Zeit für die Eröffnung einer Position zu bewerten.
  4. Positionsmanagement: Positionsgröße wird dynamisch angepasst, um das Gesamtrisiko zu kontrollieren, abhängig von der Stärke der Markttrends und der Volatilität.
  5. Anpassung der Parameter: Anpassung der Optimierung der Parameter-Einstellungen durch Methoden wie maschinelles Lernen.

Zusammenfassen

Die Donchian-Breakout-Handelsstrategie ist ein Trend-Tracking-Handelssystem, das auf klassischen Donchian-Channel-Indikatoren basiert. Die Strategie ist einfach und geeignet für trendige Märkte. Die Strategie kann jedoch in einem wackligen Markt generell und parametersensibel ausgeführt werden. Die Strategie kann durch die Einführung von dynamischen Stop-Loss-Trendfiltern, Positionsmanagement usw. weiter optimiert werden, um die Stabilität der Strategie zu verbessern.

Strategiequellcode
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 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/
// © Dillon_Grech
//---------------------------------------------//

//---------------------------------------------//
// Simple donchian channel break out strategy
// which only enters trades when price closes
// above donchian upper and creates new high 
// (long) or price closes below donchian lower
// and creates new low, relative to the donchian
// length. This is indicated by the donchian
// upper and lower color (blue). Stop loss is
// located at donchian basis and take profit
// is set at Risk Reward (RR) profit target.
//---------------------------------------------//
//@version=5
strategy("Donchian New High/Low Strategy [Dillon Grech]", overlay=true)

//---------------------------------------------//

//---------------------------------------------//
//INDICATOR 1 - Donchian New High Low Price Close
don_length = input.int(20, minval = 1)
don_lower  = ta.lowest(don_length)
don_upper  = ta.highest(don_length)
don_basis  = math.avg(don_upper, don_lower)

//loop
don_lower_upper  = true
don_higher_lower = true
for i = 0 to don_length - 1
    //Check for higher high over don_length
    if don_upper > don_upper[i]
        don_lower_upper := false
    //Check for lower low over don_length
    if don_lower < don_lower[i]
        don_higher_lower := false

//Plot
c_ora = color.orange
c_blu = color.blue
c_gra = color.gray
color_basis = c_ora
color_upper = don_lower_upper  ? c_blu : c_gra
color_lower = don_higher_lower ? c_blu : c_gra
plot(don_basis,     "Don Basis", color_basis, 2)
u = plot(don_upper, "Don Upper", color_upper, 2)
l = plot(don_lower, "Don Lower", color_lower, 2)

//Conditions
Ind_1_L = ta.crossover(close, don_upper[1]) and 
   don_lower_upper[1]
Ind_1_S = ta.crossunder(close,don_lower[1]) and 
   don_higher_lower[1]
//---------------------------------------------//

//---------------------------------------------//
//ENTRY CONDITIONS
entry_long  = strategy.position_size<=0 and
   Ind_1_L
entry_short = strategy.position_size>=0 and
   Ind_1_S

if(entry_long)
    strategy.entry("Long Entry", strategy.long)
if(entry_short)
    strategy.entry("Short Entry", strategy.short)
//---------------------------------------------/

//---------------------------------------------//
//TAKE PROFIT AND STOP LOSS CONDITIONS
profit_RR = input.float(5.0,"RR Profit Target")

//Store Price on new entry signal
entry_price = strategy.opentrades.entry_price(
   strategy.opentrades-1)

//Store Donchain Channel Basis
entry_don_basis = float(0.0)
if entry_long or entry_short
    entry_don_basis := don_basis
else
    entry_don_basis := entry_don_basis[1]

//Get stop loss distance
stop_distance = math.abs(entry_price -
   entry_don_basis)
stop_L   = entry_price - stop_distance
profit_L = entry_price + stop_distance*profit_RR
stop_S   = entry_price + stop_distance
profit_S = entry_price - stop_distance*profit_RR

//Plot TP and SL
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? profit_L : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size > 0 ? stop_L : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na : 
   strategy.position_size < 0 ? profit_S : na,
   color=color.lime, style=plot.style_linebr,
   linewidth=2)
plot(entry_long or entry_short ? na :
   strategy.position_size < 0 ? stop_S : na,
   color=color.red,  style=plot.style_linebr,
   linewidth=2)

//Exit long trades
strategy.exit(id = 'Exit Long', 
   from_entry ='Long Entry', 
   stop = stop_L, limit = profit_L)
strategy.exit(id = 'Exit Short', 
   from_entry ='Short Entry', 
   stop = stop_S, limit = profit_S)
//---------------------------------------------//