Diese Strategie ist eine Trendverfolgungsstrategie, die auf der Grundlage der Kanal-Breakout-Theorie entwickelt wurde. Sie konstruiert einen Kanal mit dem höchsten Preis und dem niedrigsten Preis über einen bestimmten Zeitraum und erzeugt Handelssignale, wenn der Preis aus dem Kanal bricht. Diese Strategie eignet sich für Trendmärkte und kann die Trendrichtung des Preises für die Trendverfolgung erfassen.
Die Strategie berechnet zunächst den höchsten Preis und den niedrigsten Preis über einen längeren Zeitraum, um das obere Band und das untere Band des Kanals zu konstruieren. Wenn der Schlusskurs durch das obere Band bricht, wird eine Long-Position eröffnet. Wenn der Schlusskurs durch das untere Band bricht, wird eine Short-Position eröffnet. Die Position wird geschlossen, wenn der Preis wieder in den Kanal fällt.
Die Strategie zeigt auch einen EMA-Indikator mit einer Länge *2 auf, um die Trendrichtung zu bestimmen.
Zusammenfassend ist dies eine einfache Trend-Tracking-Strategie, die auf Kanal-Breakouts basiert, um Trends zu erfassen. Sie hat eine starke Trend-Tracking-Fähigkeit und kann in Trending-Märkten gute Renditen erzielen.
/*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 )