A estratégia Double Donchian Channel Breakout é uma estratégia quantitativa de negociação baseada no canal Donchian. Esta estratégia usa uma combinação de canais Donchian rápidos e lentos para alcançar uma negociação de breakout de baixo risco e alto retorno.
Esta estratégia utiliza principalmente dois canais de Donchian, incluindo um canal mais lento com um período mais longo e um canal mais rápido com um período mais curto.
O canal de Donchian lento tem um período mais longo que pode efetivamente filtrar o ruído do mercado, tornando seus sinais de ruptura mais confiáveis.
O canal rápido de Donchian tem um período mais curto que pode responder rapidamente a flutuações de preços de curto prazo.
Além disso, uma condição de volatilidade é definida como um filtro para os sinais de entrada. A estratégia só desencadeará a entrada quando o movimento do preço exceder um limite porcentual predeterminado. Isso evita frequentes flutuações durante as consolidações de faixa.
Estes riscos podem ser reduzidos através da otimização dos parâmetros, da colocação razoável de stop loss, da conscientização sobre os eventos, etc.
A estratégia Double Donchian Channel Breakout é, em geral, uma estratégia de tendência relativamente estável e confiável. Combina os pontos fortes da captura de tendência e do controle de risco, tornando-a adequada como um módulo básico em várias estratégias de negociação de ações.
/*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)