
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.
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.
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.
/*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 )