A estratégia de corrida de tendência do canal de Donchian é uma estratégia de tendência. Ele usa o canal de Donchian para identificar a direção da tendência do mercado e entra no mercado quando um sinal de tendência é gerado para capturar o maior número possível do movimento da tendência. Enquanto isso, ele incorpora média móvel de longo período para filtrar falsos sinais.
A estratégia é baseada principalmente no canal de Donchian. O canal de Donchian consiste de uma banda superior, uma banda inferior e uma banda média. A banda superior é a maior alta nos últimos n dias, a banda inferior é a menor baixa nos últimos n dias, e a banda média é a média das bandas superior e inferior. Um sinal de compra é gerado quando o preço quebra acima da banda superior. Um sinal de venda é gerado quando o preço quebra abaixo da banda inferior.
A estratégia primeiro calcula o canal de Donchian de 20 dias, incluindo a faixa superior, a faixa inferior e a faixa média. Em seguida, verifica se o preço quebra as faixas do canal. Se o preço de fechamento quebra acima da média móvel de 200 dias E o preço de fechamento quebra acima da faixa superior, um sinal longo é gerado. Se o preço de fechamento quebra abaixo da média móvel de 200 dias E o preço de fechamento quebra abaixo da faixa inferior, um sinal curto é gerado.
Após entrar em posições longas, o stop loss é definido na faixa inferior.
A estratégia apresenta as seguintes vantagens:
O canal Donchian torna a identificação da tendência clara.
A combinação com a média móvel de longo período ajuda a filtrar sinais falsos de forma eficaz.
A definição de stop loss nas bandas de canais permite uma saída rápida e um controlo eficaz do risco.
A lógica estratégica é simples e clara, fácil de compreender e implementar.
A estratégia apresenta também alguns riscos:
Risco de inversão de tendência Uma inversão súbita de tendência pode causar grandes perdas.
Risco de otimização de parâmetros: os parâmetros do canal Donchian precisam de testes e otimização constantes, caso contrário, podem afetar o desempenho da estratégia.
Risco excessivo de frequência de negociação.
A estratégia pode ser otimizada nos seguintes aspectos:
Adicionar mais indicadores para filtragem de sinais, por exemplo padrões de velas, indicadores de volatilidade, etc., para evitar falsos sinais.
Optimização de parâmetros: otimizar parâmetros como o comprimento do canal para encontrar a combinação ideal de parâmetros.
Adotar um método de stop loss adaptativo de acordo com a volatilidade do mercado e as necessidades de controlo do risco.
Classificar os sinais e adotar diferentes níveis de stop loss para diferenciar os sinais fortes e fracos.
Em geral, a Estratégia de Condução de Tendência do Canal Donchian é uma estratégia de tendência relativamente simples e prática. Ela pode identificar efetivamente as direções de tendência do mercado e capturar a maioria dos movimentos da tendência. Enquanto isso, a média móvel de longo período e as bandas de stop loss do canal ajudam a controlar os riscos. A estratégia tem grande espaço para otimização em aspectos como ajuste de parâmetros, filtragem de sinal e métodos de stop loss, etc., a fim de alcançar um melhor desempenho.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © pratyush_trades //@version=4 strategy("Donchian Channel Strategy", overlay=true) length = input(20) longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"]) shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"]) hh = highest(high, length) ll = lowest(low, length) up = plot(hh, 'Upper Band', color = color.green) dw = plot(ll, 'Lower Band', color = color.red) mid = (hh + ll) / 2 midPlot = plot(mid, 'Basis', color = color.orange) fill(up, midPlot, color=color.green, transp = 95) fill(dw, midPlot, color=color.red, transp = 95) if (close>ema(close,200)) if (not na(close[length])) strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh) if (close<ema(close,200)) if (not na(close[length])) strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll) if (strategy.position_size>0) strategy.exit(id="Longs Exit",stop=ll) if (strategy.position_size<0) strategy.exit(id="Shorts Exit",stop=hh)