Breakout Channel Trendfolgestrategie


Erstellungsdatum: 2023-11-23 14:04:59 zuletzt geändert: 2023-11-23 14:04:59
Kopie: 0 Klicks: 603
1
konzentrieren Sie sich auf
1617
Anhänger

Breakout Channel Trendfolgestrategie

Überblick

Die Strategie basiert auf der Theorie des Kanalbruchs. Sie erstellt einen Kanal durch Berechnung der Höchst- und Tiefstpreise eines bestimmten Zeitraums, der ein Handelssignal erzeugt, wenn der Preis den Kanal durchbricht. Die Strategie ist für Trendbewegungen geeignet und kann die Trendrichtung der Preise erfassen, um eine Trendverfolgung durchzuführen.

Strategieprinzip

Die Strategie berechnet zunächst die Höchst- und die Tiefstpreise innerhalb eines langen Zyklus und baut die Kanal-Ober- und Unterbahn auf. Wenn der Schlusskurs die Oberbahn durchbricht, macht man einen Plus; wenn der Schlusskurs die Unterbahn durchbricht, macht man einen Minus. Die Schlusskondition ist, dass der Schlusskurs in den Kanal zurückfällt.

Die Strategie zeichnet gleichzeitig die Länge als length ab.*2 EMA-Indikator, der die Richtung des Trends bestimmt. Wenn der Preis den Kanal überschreitet und sich im Aufwärtstrend befindet, erhöht sich die Effektivität der Mehrentscheidung.

Analyse der Stärken

  • Die Strategie ist in der Lage, die Preisentwicklung zu erfassen, ist für Trendbewegungen geeignet und hat ein hohes Gewinnpotenzial.
  • Durch den Durchbruch kann die Wahrscheinlichkeit von falschen Durchbrüchen verringert und die Signalqualität verbessert werden.
  • In Kombination mit EMA-Bewertungen kann ein Rückschritt vermieden werden, um sicherzustellen, dass die Haupttrends verfolgt werden.

Risikoanalyse

  • Durchbrechungskanalstrategien sind anfällig für häufige Transaktionen bei Preisschwankungen und können zu hohen Transaktionsgebühren führen.
  • Wenn sich der Trend umkehrt, kann die Strategie nicht in der Lage sein, die Positionen rechtzeitig zu schließen, was zu größeren Verlusten führen kann.
  • Diese Strategie ist auf die Parameter-Einstellungen sensibel und verschiedene Parameter führen zu völlig unterschiedlichen Ergebnissen.

Optimierungsrichtung

  • Trends können in Kombination mit anderen Indikatoren beurteilt werden, um falsche Durchbrüche zu vermeiden.
  • Die automatische Optimierung der Parameter kann durch Machine-Learning-Algorithmen erfolgen, um die Robustheit der Parameter zu erhöhen.
  • Der Stoppverlust kann eingestellt werden, um den maximalen Rückzug zu kontrollieren.

Zusammenfassen

Die Strategie ist insgesamt eine einfache Trendverfolgungsstrategie, die auf Channel-Breakouts basiert, um Trends zu erfassen. Sie hat eine starke Trendverfolgungskapazität und kann gute Gewinne in Trendsituationen erzielen. Es besteht jedoch ein gewisses Risiko, das zur Steigerung der Stabilität weiter optimiert werden muss.

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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )