Donchian Channel Breakout-Strategie


Erstellungsdatum: 2023-09-14 14:44:44 zuletzt geändert: 2023-09-14 14:44:44
Kopie: 0 Klicks: 766
1
konzentrieren Sie sich auf
1617
Anhänger

Strategieprinzip

Die Dongxian-Break-Strategie ist eine auf der Dongxian-Kanal basierende Trendverfolgungsstrategie. Die Strategie verwendet Höchst- und Tiefstpreise für verschiedene Perioden, um Eintritts- und Stopppunkte für Mehr- und Leerköpfe zu ermitteln.

Die Einstiegsregel der Strategie lautet: Wenn der Preis den höchsten Preis eines bestimmten Zeitraums (z. B. 20 Tage) überschreitet, machen Sie einen Plus; wenn der Preis den niedrigsten Preis eines bestimmten Zeitraums (z. B. 10 Tage) überschreitet, machen Sie einen Minus.

Die EXIT-Regel lautet: Mehrköpfige Positionen enden mit mittlerer oder unterer Bahn; Leerköpfige Positionen enden mit mittlerer oder oberer Bahn. Die mittlere Bahn ist der Durchschnittspreis des Höchst- und Mindestpreises für einen bestimmten Zeitraum (z. B. 10 Tage).

Angenommen, die Handelsvariante ist BTCUSDT, werden die Parameter wie folgt eingestellt:

  • Mehrfacher Eintritt: 20 Tage
  • Mehrköpfige Stop-Loss-Periode: 10 Tage
  • Ist die Bahn unterbrochen: Ja
  • Eintrittsdauer: 10 Tage
  • Haltezeit: 20 Tage
  • Ist die Bahn unterbrochen: Ja

Die Eintritts- und Verlustregeln lauten:

  • Wenn der Preis den 20-Tage-Höchstwert überschreitet, wird an diesem Punkt ein Überlagerung eingelegt
  • Der Multi-Position-Stop ist der Mittelpunkt zwischen dem Höchst- und dem Tiefstpreis in 10 Tagen
  • Wenn der Preis unter dem 10-Tage-Tiefpunkt fällt, wird die Position an diesem Punkt freigegeben
  • Der leere Stop-Loss-Punkt ist der Mittelpunkt zwischen dem höchsten und dem niedrigsten Preis in 20 Tagen

Durch die dynamische Anpassung der Eingabe- und Stop-Loss-Parameter kann in verschiedenen Marktzyklen optimiert werden, um bessere Gewinne in trendigen Situationen zu erzielen.

Strategische Vorteile

  • Der Trend kann durch einen Durchbruch erfasst werden, um zu erkennen, in welcher Richtung der Trend sich entwickelt.
  • Stop-Loss-Punkte in der Nähe des aktuellen Preises, um Risiken zu kontrollieren
  • Die Parameter sind flexibel anpassbar und können für unterschiedliche Zyklen optimiert werden

Strategisches Risiko

  • Breakout-Transaktionen sind leicht zu erwischen und es ist wichtig, vorsichtig zu sein, um die Effektivität eines Breakouts zu bestimmen.
  • Die Stop-Loss-Punkte sind in der Nähe des Preises und bieten eine größere Wahrscheinlichkeit für die Einstellung von Verlusten bei einem Erschütterungsschub.
  • Unkorrekt eingestellte Parameter können zu häufigen Spielen führen oder den Verlust nicht rechtzeitig stoppen

Zusammenfassen

Die Strategie verwendet einen Durchbruch, um die Richtung des Trends zu bestimmen, wobei der Stopppunkt als Mittelpunkt des Kanals oder als Auf- oder Abwärtstrend eingestellt wird, um das Risiko wirksam zu kontrollieren. Durch die Optimierung der Parameter-Einstellungen kann die Erfassung der Strategie im Trend verbessert werden.

Strategiequellcode
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Donchian Channel Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.036)

//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()