A estratégia de ruptura do canal de Donchian é uma ação de preço e tendência após a estratégia de negociação de ruptura.
A lógica central desta estratégia é a seguinte:
Utilize as funções Ta.highest e Ta.lowest para calcular o máximo máximo e o mínimo mínimo durante um determinado período (por exemplo, 60 bares) para construir as bandas superior e inferior do Canal de Donchian.
Quando os preços quebram acima da faixa superior, isso indica que uma tendência de alta pode estar começando, então vá longo na próxima barra aberta após a quebra da faixa superior.
Uma vez que os preços caem abaixo da faixa superior ou sobem acima da faixa inferior, isso indica uma inversão de tendência, por isso aplanem as posições longas ou curtas existentes.
Para controlar os riscos, definir o stop loss ao preço de entrada menos/mais um tick mínimo após iniciar posições longas/cortas.
Este tipo de estratégia de ruptura de canal é simples e direta, tendo em conta tanto a ação do preço quanto a tendência, fácil de executar e estável.
Esta estratégia tem várias vantagens:
A lógica é clara, simples e de fácil compreensão, com uma elevada execução.
Usando o canal de Donchian para determinar a direção da tendência pode efetivamente filtrar o ruído e identificar sinais confiáveis de ruptura.
A definição razoável de stop loss após a entrada pode controlar bem a perda de uma única transação.
Não importa a condição do mercado, a estratégia pode negociar junto com a tendência uma vez que ocorre uma ruptura válida e captar potenciais grandes movimentos.
Muito poucos parâmetros, não propensos a sobreajustes, com grande espaço de ajuste e alta plasticidade.
Há também alguns riscos com esta estratégia:
Como uma tendência que segue uma estratégia, não pode apanhar movimentos de reversão.
O stop loss demasiado próximo pode ser interrompido por oscilações de preços a curto prazo.
A configuração incorreta do comprimento do canal aumenta a probabilidade de falha.
Algumas contra-medidas:
Incorporar outros indicadores para identificar potenciais reversões, evitar seguir cegamente as tendências.
Use uma parada de tração razoável para bloquear os lucros em vez de ficar com a perda inicial de parada dura.
Teste diferentes valores de parâmetros para encontrar a combinação ideal.
Há espaço para uma maior otimização:
Tente uma estratégia dupla de ruptura do canal Donchian, uma para entrada e outra para stop loss/profit taking.
Só fazer negociações após o breakout exceder uma certa quantidade de ticks para filtrar algumas falhas.
Adicione um filtro de volume ou volatilidade para evitar maus negócios quando os preços oscilam violentamente.
Tente diferentes estratégias de retenção como seguir a tendência ou reverter a média em combinação para melhores resultados.
Adicionar módulos de gestão de risco para limitar a perda diária máxima, a retirada máxima, etc.
Em resumo, a Estratégia de Breakout do Canal de Donchian é uma estratégia muito prática de tendência de curto prazo. Identifica mudanças potenciais de tendência através da ação do preço e utiliza breakouts de canal para entrar em negócios. A lógica é simples e fácil de executar e pode alcançar resultados decentes em vários mercados. Com otimizações adicionais como ajuste de parâmetros, mecanismos de stop loss, identificação de reversão, etc., pode-se esperar um aumento significativo do desempenho.
/*backtest start: 2023-11-03 00:00:00 end: 2023-12-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Step 1. Define strategy settings strategy(title="Price action and breakout Channel Forexrn", overlay=true, pyramiding=0, initial_capital=100000, commission_type=strategy.commission.cash_per_order, commission_value=4, slippage=2) dochLen = input.int(60, title="Price action and breackout Channel Forexrn") // Position sizing inputs usePosSize = input.bool(true, title="Use Position Sizing?") atrLen = input.int(10, title="ATR Length") atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25) maxRisk = input.float(2, title="Max Position Risk %", step=.25, minval=0.25, maxval=15) maxExposure = input.float(10, title="Max Position Exposure %", step=1, minval=1, maxval=100) marginPerc = input.int(10, title="Margin %", minval=1, maxval=100) // Step 2. Calculate strategy values upperband = ta.highest(high, dochLen)[1] lowerband = ta.lowest(low, dochLen)[1] // Calculate position size riskEquity = (maxRisk * 0.01) * strategy.equity riskTrade = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue maxPos = ((maxExposure * 0.01) * strategy.equity) / ((marginPerc * 0.01) * (close * syminfo.pointvalue)) posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1 // Step 3. Output strategy data plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband") plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband") // Step 4. Determine trading conditions tradeWindow = true tradeAllowed = tradeWindow and bar_index > dochLen // Step 5. Submit entry orders if tradeAllowed if strategy.position_size < 1 strategy.entry("EL", strategy.long, qty=posSize, stop=upperband + syminfo.mintick) if strategy.position_size > -1 strategy.entry("ES", strategy.short, qty=posSize, stop=lowerband - syminfo.mintick) // Step 6. Submit exit orders if not tradeWindow strategy.close_all()