Die Double Donchian Channel Breakout Strategie ist eine quantitative Handelsstrategie, die auf dem Donchian Channel basiert. Diese Strategie verwendet eine Kombination aus schnellen und langsamen Donchian Channels, um einen niedrigen Risiko-Hochrendite-Breakout-Handel zu erreichen.
Diese Strategie verwendet hauptsächlich zwei Donchian-Kanäle, darunter einen langsameren Kanal mit längerer Periode und einen schnelleren Kanal mit kürzerer Periode.
Der langsame Donchian-Kanal hat eine längere Periode, die Marktlärm effektiv filtern kann und seine Ausbruchssignale zuverlässiger macht.
Der schnelle Donchian-Kanal hat eine kürzere Periode, die schnell auf kurzfristige Kursschwankungen reagieren kann.
Darüber hinaus wird eine Volatilitätsbedingung als Filter für Eintrittssignale festgelegt. Die Strategie wird nur dann ausgelöst, wenn die Kursbewegung eine vorgegebene prozentuale Schwelle überschreitet. Dies vermeidet häufige Whipsaws während von Bandbreitenkonsolidierungen.
Diese Risiken können durch Parameteroptimierung, angemessene Stop-Loss-Platzierung, Ereignisbewusstsein usw. verringert werden.
Die Double Donchian Channel Breakout-Strategie ist insgesamt eine relativ stabile und zuverlässige Trend-Folge-Strategie. Sie kombiniert die Stärken sowohl der Trend-Erfassung als auch der Risikokontrolle und eignet sich daher als Basismodul für verschiedene Aktienhandelsstrategien.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity) slowLen = input.int(50, title="Slow Donchian") fastLen = input.int(30, title="Fast Donchian") volatility = input.int(3, title="Volatility (%)") longProfitPerc = input.float(2, title="Long TP1 (%)", minval=0.0, step=0.1) * 0.01 shortProfitPerc = input.float(2, title="Short TP1 (%)", minval=0.0, step=0.1) * 0.01 TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)") ubSlow = ta.highest(close, slowLen)[1] lbSlow = ta.lowest(close, slowLen)[1] ubFast = ta.highest(close, fastLen)[1] lbFast = ta.lowest(close, fastLen)[1] plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband") plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband") plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband") plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband") fark = (ubSlow - lbSlow) / lbSlow * 100 longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) longCondition = ta.crossover(close, ubSlow) and fark > volatility if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(close, lbSlow) and fark > volatility if (shortCondition) strategy.entry("Short", strategy.short) if strategy.position_size > 0 and ta.crossunder(close, lbFast) strategy.close("Long", "Close All") if strategy.position_size < 0 and ta.crossover(close, ubFast) strategy.close("Short", "Close All") // Take Profit if strategy.position_size > 0 strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice) if strategy.position_size < 0 strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)