Donchian Channel Breakout Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-04 14:16:33
Tags:

img

Übersicht

Die Donchian Channel Breakout Strategie ist eine Kursbewegung und -trend nach einer Breakout-Handelsstrategie. Sie verwendet die oberen und unteren Bands des Donchian Channel, um potenzielle Breakout-Punkte zu identifizieren und nimmt lange oder kurze Positionen ein, wenn die Preise aus dem Kanal ausbrechen.

Strategie Logik

Die Kernlogik dieser Strategie lautet:

  1. Verwenden Sie die Funktionen Ta.highest und Ta.lowest, um den höchsten Höchststand und den niedrigsten Tiefstand über einen bestimmten Zeitraum (z. B. 60 Baren) zu berechnen, um die oberen und unteren Bänder des Donchian-Kanals zu konstruieren.

  2. Wenn die Preise über den oberen Band brechen, zeigt dies an, dass ein Aufwärtstrend beginnen kann, also gehen Sie bei den nächsten Barren lang, die nach dem Breakout des oberen Bands geöffnet sind.

  3. Sobald die Preise wieder unter den oberen Bereich fallen oder wieder über den unteren Bereich steigen, zeigt dies eine Trendumkehr an, so dass die bestehenden Long- oder Short-Positionen abgeflacht werden.

  4. Um Risiken zu kontrollieren, setzen Sie den Stop-Loss nach der Einführung von Long/Short-Positionen auf den Einstiegspreis minus/plus einen Mindest-Tick.

Diese Art von Kanal-Breakout-Strategie ist einfach und unkompliziert, wobei sowohl die Kursbewegung als auch die Trendbeobachtung berücksichtigt werden, leicht auszuführen und stabil.

Vorteile

Diese Strategie hat mehrere Vorteile:

  1. Die Logik ist klar, einfach und leicht verständlich, mit hoher Ausführbarkeit.

  2. Die Verwendung des Donchian-Kanals zur Bestimmung der Trendrichtung kann das Rauschen effektiv filtern und zuverlässige Ausbruchssignale erkennen.

  3. Eine angemessene Stop-Loss-Einstellung nach dem Eintritt kann den Einzelhandelsverlust gut kontrollieren.

  4. Unabhängig von den Marktbedingungen kann die Strategie mit dem Trend handeln, sobald ein gültiger Ausbruch stattfindet und potenzielle große Bewegungen erfasst.

  5. Sehr wenige Parameter, nicht anfällig für Überanpassung, mit großem Stimmraum und hoher Plastizität.

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Als Trend-Nachfolge-Strategie kann sie keine Umkehrbewegungen erfassen.

  2. Ein zu nahes Stop Loss kann durch kurzfristige Kursschwankungen ausgeschaltet werden.

  3. Eine falsche Kanallänge erhöht die Wahrscheinlichkeit eines falschen Ausbruchs.

Einige Gegenmaßnahmen:

  1. Verwenden Sie andere Indikatoren, um mögliche Umkehrungen zu erkennen, und vermeiden Sie es, Trends blind zu folgen.

  2. Verwenden Sie einen vernünftigen Trailing Stop, um Gewinne zu erzielen, anstatt sich an den anfänglichen Hard Stop-Verlust zu halten.

  3. Versuche verschiedene Parameterwerte, um eine optimale Kombination zu finden.

Optimierungsrichtlinien

Es gibt Raum für weitere Optimierungen:

  1. Probieren Sie eine doppelte Donchian-Kanal-Break-out-Strategie aus, eine für den Einstieg und eine für den Stop-Loss/Profit-Taking.

  2. Nur Trades nach dem Ausbruch überschreiten eine bestimmte Anzahl von Ticks, um einige falsche Breaks zu filtern.

  3. Fügen Sie einen Volumen- oder Volatilitätsfilter hinzu, um schlechte Trades zu vermeiden, wenn die Preise heftig schwanken.

  4. Versuchen Sie verschiedene Haltestrategien wie Trendfolgen oder mittlere Umkehr in Kombination für bessere Ergebnisse.

  5. Zusätzliche Risikomanagement-Module zur Begrenzung des maximalen Tagesverlusts, des maximalen Drawdowns usw.

Schlussfolgerung

Zusammenfassend ist die Donchian Channel Breakout Strategy eine sehr praktische kurzfristige Trendfolgestrategie. Sie identifiziert potenzielle Trendänderungen durch Preisbewegung und nutzt Kanalbreakouts, um Trades einzugehen. Die Logik ist einfach und einfach auszuführen und kann in verschiedenen Märkten anständige Ergebnisse erzielen. Mit weiteren Optimierungen wie Parameter-Tuning, Stop-Loss-Mechanismen, Umkehridentifizierung usw. kann eine signifikante Leistungssteigerung erwartet werden.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Step 1. Define strategy settings
strategy(title="Price action and breakout Channel Forexrn", overlay=true,
     pyramiding=0, initial_capital=100000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

dochLen = input.int(60, title="Price action and breackout Channel Forexrn")

// Position sizing inputs
usePosSize    = input.bool(true, title="Use Position Sizing?")
atrLen        = input.int(10, title="ATR Length")
atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25)

maxRisk = input.float(2, title="Max Position Risk %", step=.25, 
     minval=0.25, maxval=15)
maxExposure = input.float(10, title="Max Position Exposure %", step=1, 
     minval=1, maxval=100)
marginPerc = input.int(10, title="Margin %", minval=1, maxval=100)

// Step 2. Calculate strategy values
upperband = ta.highest(high, dochLen)[1]
lowerband = ta.lowest(low, dochLen)[1]

// Calculate position size
riskEquity = (maxRisk * 0.01) * strategy.equity
riskTrade  = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue

maxPos = ((maxExposure * 0.01) * strategy.equity) /
     ((marginPerc * 0.01) * (close * syminfo.pointvalue))

posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1

// Step 3. Output strategy data
plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband")
plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband")

// Step 4. Determine trading conditions
tradeWindow  = true

tradeAllowed = tradeWindow and bar_index > dochLen

// Step 5. Submit entry orders
if tradeAllowed
    if strategy.position_size < 1
        strategy.entry("EL", strategy.long, qty=posSize,
             stop=upperband + syminfo.mintick)

    if strategy.position_size > -1
        strategy.entry("ES", strategy.short, qty=posSize,
             stop=lowerband - syminfo.mintick)

// Step 6. Submit exit orders
if not tradeWindow
    strategy.close_all()

Mehr