Dynamische Kanal-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-17 15:29:55
Tags:

img

Übersicht

Die Dynamic Channel Breakout Strategy ist eine Trendfolgestrategie. Sie verwendet den Donchian Channel Indikator, um die Breakout-Kauf- und Verkaufspreise dynamisch zu bestimmen, kombiniert den ATR-Indikator, um Stop-Loss-Punkte festzulegen, und erreicht eine vollständige Automatisierung der Handelssignalgenerierung und Stop-Loss-Ausgänge.

Grundsätze

Kanal von Donchian

Der Donchian Channel ist ein dynamischer Kanalindikator, der obere und untere Bands bildet, indem er die höchsten und niedrigsten Preise über einen bestimmten Zeitraum in der Vergangenheit berechnet. Der obere Band ist der höchste Preis in den letzten n Perioden und der untere Band ist der niedrigste Preis in den letzten n Perioden. Der Donchian Channel spiegelt den Schwankungsbereich und den potenziellen Trend des Marktes wider.

Diese Strategie setzt die Donchian Channel Periode auf 20 Tage. Wenn der Preis durch die obere Schiene bricht, wird ein Kaufsignal generiert, das anzeigt, dass der Markt einen Aufwärtstrend eingegeben hat. Wenn der Preis unter die untere Schiene fällt, wird ein Verkaufssignal generiert, das anzeigt, dass der Markt einen Abwärtstrend eingegeben hat.

ATR-Anzeiger

Der ATR-Indikator ist die Abkürzung für "Average True Range", die die durchschnittliche Schwankungsamplitude eines bestimmten Vermögenswerts in einem jüngsten Zeitraum widerspiegelt. ATR kann sich automatisch an Änderungen der Marktvolatilitätsfrequenz anpassen, um die tatsächliche Volatilität des Marktes in dem jüngsten Zeitraum genauer widerzuspiegeln.

Diese Strategie verwendet den 20-Tage-ATR-Indikator, um den Stop-Loss-Punkt zu berechnen. Je größer der ATR-Wert, desto größer ist die Marktfluktuation und desto weiter ist der eingestellte Stop-Loss-Punkt. Dies verhindert, dass der Stop-Loss-Punkt zu nahe ist und durch geringfügige Marktfluktuationen ausgeschlagen wird.

Erzeugung von Signalen

Wenn der Preis durch die mittlere Linie des Donchian Kanals nach oben bricht, wird ein Kaufsignal erzeugt. Wenn der Preis durch die mittlere Linie nach unten bricht, wird ein Verkaufssignal erzeugt. Dies zeigt an, dass der Preis begonnen hat, diesen Kanal zu durchbrechen und eine neue Runde des Trends einzugehen.

Gleichzeitig wird die Position in Kombination mit dem durch den ATR-Indikator berechneten Stop-Loss-Punkt, wenn der Verlust den Stop-Loss-Punkt erreicht, aktiv gestoppt, um Risiken zu kontrollieren.

Analyse der Vorteile

Automatische Trendverfolgung

Der Donchian Channel ist ein Trend-Tracking-Indikator. Durch die dynamische Anpassung des Kanalbereichs kann diese Strategie automatisch Veränderungen der Markttrends verfolgen und entsprechend Kauf- und Verkaufssignale generieren. Dies vermeidet die Subjektivität des manuellen Urteils und macht die Handelssignale objektiver und zuverlässiger.

Zwei-Wege-Handel

Die Strategie enthält sowohl lange als auch kurze Regeln, die den Handel in zwei Richtungen ermöglichen. Dies erweitert die Marktumgebungen, in denen die Strategie angewendet werden kann und ermöglicht die Rentabilität sowohl im Aufwärtstrend als auch im Abwärtstrend.

Risikomanagement

Der Stop-Loss-Mechanismus des ATR-Indikators kann den Verlust eines einzelnen Handels effektiv kontrollieren. Dies ist besonders wichtig für den quantitativen Handel, um sicherzustellen, dass Strategien bei Ereignissen mit hoher Wahrscheinlichkeit stabile positive Renditen erzielen.

Risikoanalyse

Gefahr der Fallenlegung

Die Donchian Channel-Strategie birgt ein gewisses Risiko, gefangen zu werden. Wenn der Preis ohne Stop-Loss umkehrt und wieder in den Kanal eintritt, können erhebliche Verluste entstehen. Der ATR-Stop-Loss-Mechanismus in dieser Strategie hilft, dieses Risiko zu mildern.

Trendumkehrrisiko

Bei Trendumkehrungen erzeugt der Donchian Channel-Indikator fehlerhafte Signale. Der Benutzer muss auf die Marktbedingungen achten, um Blindtrades zu vermeiden, wenn signifikante Trendumkehrungen auftreten. Trendbeurteilungsindikatoren können hinzugefügt werden, um ein solches Risiko zu reduzieren.

Parameteroptimierungsrisiko

Die Periodenparameter sowohl des Donchian Channel als auch des ATR Stop Loss müssen optimiert werden, da sonst übermäßige falsche Signale generiert werden können.

Optimierungsrichtlinien

Hinzufügen von Trendbeurteilung

Trendbeurteilungsindikatoren wie gleitende Durchschnitte können hinzugefügt werden, um falsche Signale an bedeutenden Trendwendepunkten zu vermeiden.

Optimierung der Parameter

Optimieren Sie Donchian Channel und ATR Parameter, um die beste Kombination zu finden.

Hinzufügen von Preismustern

Kombination anderer Hilfsindikatoren wie Kerzenmuster und Handelsvolumenänderungen zur Verbesserung der Signalgenauigkeit und Verringerung unnötiger Umkehrgeschäfte.

Schlussfolgerung

Die Dynamic Channel Breakout Strategy lokalisiert die Trendrichtung durch die oberen und unteren Bands des Donchian Channel und erzeugt Handelssignale. Der ATR-Stop-Loss-Mechanismus kontrolliert das Risiko. Diese Strategie hat einen hohen Grad an Automatisierung und ist für den quantitativen Handel geeignet. Optimierungsbereiche liegen in der Optimierung der Parameterwahl und der Kombination anderer Hilfsindikatoren zur Verbesserung der Signalgenauigkeit. Im Allgemeinen beurteilt diese Strategie Markttrends genau und hat eine starke Praktikabilität.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na

Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when=((close < dcAverage) and  cross(close,dcAverage)) or ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Mehr