Estratégia de fuga do canal de Donchian

Autora:ChaoZhang, Data: 2024-02-04 09:42:14
Tags:

img

Resumo

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.

Estratégia lógica

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.

Análise das vantagens

  • O mecanismo de dois canais estabelece duas linhas de defesa e controla efetivamente o risco
  • A combinação de canais rápidos e lentos capta de forma eficiente as tendências
  • O filtro de volatilidade reduz as operações ineficazes
  • Simultaneamente acompanha as tendências e evita o sobreajuste
  • Lógica simples e clara, fácil de entender e dominar

Análise de riscos

  • As variações violentas dos preços podem penetrar o stop loss e causar perdas pesadas
  • Configurações incorretas de parâmetros (por exemplo, períodos de canal) podem comprometer a eficiência da estratégia
  • Os custos de negociação também corroem os lucros até certo ponto
  • Os riscos de lacuna em torno de eventos significativos necessitam de atenção

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.

Orientações de otimização

  • Teste diferentes combinações de períodos do canal de Donchian
  • Otimizar o parâmetro de volatilidade para o melhor momento de entrada
  • Adicionar indicador de verificação da tendência para evitar operações contrárias à tendência
  • Selecção de stock baseada em elementos fundamentais
  • Ajustar o mecanismo de stop loss para limitar as perdas

Conclusão

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)

Mais.