Estratégia de fuga do canal de Donchian

Autora:ChaoZhang, Data: 2024-02-21 11:38:48
Tags:

img

Resumo

A estratégia de ruptura do canal duplo de Donchian é uma estratégia de negociação de ruptura baseada nos canais de Donchian. Ele usa canais de Donchian rápidos e lentos para construir sinais de negociação longos e curtos. Quando o preço atravessa o canal lento, abra posições longas ou curtas. Quando o preço atravessa o canal rápido, feche as posições.

Princípio da estratégia

A estratégia de ruptura do canal duplo de Donchian baseia-se em dois parâmetros:Período do Canal Donchiano LentoePeríodo do Canal Donchiano RápidoA estratégia calcula primeiro as bandas superior e inferior dos dois canais de Donchian.

  • O período do canal Donchiano lento por defeito é de 50 bares, refletindo tendências de longo prazo.
  • O período do canal de Donchian rápido por defeito é de 30 bares, refletindo mudanças de tendência de curto prazo.

O sinal de entrada longo é umruptura acima da faixa superiorcomvolatilidade superior ao limiarO sinal de entrada curto é umDesagregação abaixo da faixa inferiorcomvolatilidade superior ao limiar.

O sinal de saída de stop loss longo é umDesagregação abaixo da faixa inferiorO sinal de saída de stop loss curto é umruptura acima da faixa superior.

A estratégia estabelece igualmentetirar lucroA taxa de lucro por defeito é de 2%, ou seja, a posição de lucro metade quando o movimento do preço atinge 2%.

Análise das vantagens

A estratégia de ruptura do canal duplo de Donchian tem as seguintes vantagens:

  1. O design de canal duplo pode capturar sinais de tendência de prazos mais longos e mais curtos, permitindo entradas mais precisas.

  2. A condição de volatilidade evita a troca frequente em mercados de intervalo.

  3. As configurações abrangentes de take profit e stop loss bloqueiam lucros parciais e reduzem perdas.

  4. Uma lógica estratégica simples e clara, fácil de compreender e implementar.

  5. Parâmetros personalizáveis adequados a diferentes produtos e preferências comerciais.

Análise de riscos

A estratégia de fuga do canal duplo de Donchian também tem alguns riscos:

  1. O design de canal duplo é sensível e pode gerar sinais falsos.

  2. Em mercados voláteis, o stop loss pode ser ativado com muita frequência.

  3. Considerar a intervenção dinâmica ou manual para o preço ideal de lucro.

  4. O desempenho comercial real pode diferir das expectativas do backtest.

Orientações de otimização

A estratégia de ruptura do canal duplo de Donchian pode ser otimizada em vários aspectos:

  1. Teste mais combinações de períodos para encontrar parâmetros ideais.

  2. Tente diferentes medidas de volatilidade como ATR para encontrar a métrica mais estável.

  3. Definir um limite no número de entradas para evitar perdas no final das tendências.

  4. Tente dinâmico obter lucro para maior lucro de comércio único.

  5. Incorporar outros indicadores para filtrar as entradas e melhorar a precisão, por exemplo, volume.

  6. Otimizar os modelos de gestão de fundos, como o dimensionamento de posições fracionárias fixas, para um melhor controlo dos riscos.

Conclusão

Em conclusão, a Estratégia de Breakout de Canal Dual Donchian é uma excelente estratégia de tendência. Combina a identificação de tendências e as capacidades de proteção contra reversão. Com otimização de parâmetros e refinamento de regras, pode ser lucrativa na maioria dos produtos e condições de mercado. A estratégia é simples e prática, vale a pena aprender e aplicar para traders quantitativos.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
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)

// Donchian Channels
slowLen = input.int(50, title="Slow Donchian", group = "Conditions")
fastLen = input.int(30, title="Fast Donchian", group = "Conditions")

// Volatility Calculated as a percentage
volatility = input.int(3, title="Volatility (%)", group = "Conditions")

// Long positions
long = input.bool(true, "Long Position On/Off", group = "Strategy")
longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// Short positions
short = input.bool(true, "Short Position On/Off", group = "Strategy")
shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// First take profit point for positions
TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy")

// Slow Donchian Calculated
ubSlow = ta.highest(high, slowLen)[1]
lbSlow = ta.lowest(low, slowLen)[1]

// Fast Donchian Calculated
ubFast = ta.highest(high, fastLen)[1]
lbFast = ta.lowest(low, fastLen)[1]

// Plot Donchian Channel for entries
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")

// This calculation, the strategy does not open position in the horizontal market.
fark = (ubSlow - lbSlow) / lbSlow * 100

// Take profit levels
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Code long trading conditions
longCondition = ta.crossover(close, ubSlow) and fark > volatility
if longCondition and long == true
    strategy.entry("Long", strategy.long)

// Code short trading conditions
shortCondition = ta.crossunder(close, lbSlow) and fark > volatility
if shortCondition and short == true
    strategy.entry("Short", strategy.short)

// Determine long trading conditions
if strategy.position_size > 0 and ta.crossunder(close, lbFast) 
    strategy.close_all("Close All")

// Determine short trading conditions
if strategy.position_size < 0 and ta.crossover(close, ubFast)
    strategy.close_all("Close All")

// Take Profit Long
if strategy.position_size > 0
    strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice)

// Take Profit Short
if strategy.position_size < 0
    strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)

Mais.