Donchian-Kanal mit Verluststop-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-07 16:53:10
Tags:

img

Übersicht

Dies ist eine Trend-Folge-Strategie, die auf dem Donchian Channel-Indikator basiert und mit einem dynamischen Stop-Loss auf Basis des ATR-Indikators kombiniert wird, um Gewinne zu erzielen.

Strategie Logik

Die Strategie verwendet einen 20-Perioden-Donchian-Kanal, bei dem die Kanalmitte die durchschnittliche der höchsten Höchst- und niedrigsten Tiefen ist. Es geht lang, wenn der Preis über die Kanalmitte überschreitet und kurz geht, wenn der Preis unter die Mittellinie überschreitet. Die Exit-Regel ist, wenn der Preis die dynamische Stop-Loss-Linie berührt, die als das niedrigste Tief der letzten 3 Bars minus ein Drittel des ATR-Wertes für Long-Positionen und das höchste Hoch der letzten 3 Bars plus ein Drittel des ATR-Wertes für Short-Positionen berechnet wird.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Der Donchian Channel ist wirksam bei der Identifizierung von Markttrendrichtungen und beim Auffangen von Trends.
  2. Der dynamische auf ATR basierende Trailing-Stop-Loss sichert Gewinne und kontrolliert Risiken.
  3. Die Einbeziehung des ATR-Faktors in die Stop-Loss-Berechnung berücksichtigt die Marktvolatilität und macht den Stop sinnvoller.
  4. Die Stop-Loss-Berechnungsmethode ist stabil und zuverlässig und verhindert, dass Stops zu nahe stehen und vorzeitig gestoppt werden.

Risikoanalyse

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Der Donchian-Kanal hat einen Rückstandseffekt, der kurzfristige Chancen verpassen kann.
  2. Eine unsachgemäße Einstellung der ATR-Parameter kann dazu führen, dass der Stoppverlust zu groß oder zu nahe ist.
  3. Der Trendbestimmungsmechanismus ist relativ einfach, was bei Marktkonsolidierungen mehr falsche Signale erzeugen kann.
  4. Mangelnde wirksame Beurteilung von Unterstützung/Widerstand, was zu einem unsachgemäßen Zeitpunkt des Markteintritts führt.

Optimierungsrichtlinien

Einige Optimierungsrichtlinien für diese Strategie:

  1. Hinzufügen anderer Indikatoren, um häufigen Handel zu vermeiden, wenn kein klarer Trend vorliegt.
  2. Fügen Sie Unterstützung/Widerstandsbeurteilung hinzu, um den Einstiegszeitplan zu optimieren.
  3. Testen Sie andere dynamische Stop-Loss-Berechnungsmethoden, um die Stop-Loss-Strategie weiter zu optimieren.
  4. Prüfung der Auswirkungen verschiedener Donchian-Kanal-Periodenparameter auf die Strategieleistung.
  5. Fügen Sie Filter auf die Lautstärke oder Steigerungen hinzu, um falsche Signale zu reduzieren.

Schlussfolgerung

Zusammenfassend ist dies eine einfache und praktische Trendfolgestrategie. Sie identifiziert die Trendrichtung über den Donchian Channel und sperrt Gewinne mit dynamischem Trailing Stop Loss, der Trends effektiv folgen kann.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
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(2017, "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(testEndYear,testEndMonth,testEndDay,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
//@version=1
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=black, 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< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( 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