Estratégia dinâmica de ruptura do canal

Autora:ChaoZhang, Data: 2023-11-13 10:33:44
Tags:

img

Resumo

Esta estratégia utiliza o indicador de canal dinâmico para determinar a direção do mercado com base em rupturas de canal, com o objetivo de capturar a direcionalidade da tendência.

Estratégia lógica

A estratégia usa a função de entrada para definir a duração do período do canal para 20 dias.

A área acima da faixa superior é preenchida com verde, e a área abaixo da faixa inferior é preenchida com vermelho, formando um canal dinâmico.

A média móvel de 200 dias (EMA ((close,200)) é também representada como referência para determinar a tendência global.

A estratégia usa o EMA como referência para julgar a tendência principal. Quando o fechamento está acima da linha de 200 dias, ele indica uma tendência de alta. Quando o fechamento está abaixo, ele indica uma tendência de queda.

Em uma tendência de alta, se o fechamento do preço quebra a faixa superior, um sinal longo é gerado.

A perda de parada longa é definida na faixa inferior ou linha média com base nas regras longa/curta.

Análise das vantagens

  1. O canal dinâmico adapta-se à evolução das tendências do mercado.

  2. Os sinais de negociação são gerados com base em breakouts, seguindo o princípio da negociação de tendência.

  3. A tendência principal é determinada pela média móvel, combinada com rupturas nos canais.

  4. A posição de paragem de perdas flexível baseada nas condições de mercado.

Análise de riscos

  1. O julgamento errado da tendência principal pode desviar-se do mercado.

  2. A definição inadequada do período do canal aumenta o comércio incorreto.

  3. A perda de paragem muito próxima do canal pode aumentar a paragem.

  4. Os sinais de fuga têm algum atraso, possivelmente perdendo o melhor ponto de entrada.

Soluções:

  1. Utilize vários indicadores para avaliar a tendência principal, reduzindo os erros.

  2. Otimizar os parâmetros do período do canal para os diferentes ritmos de mercado.

  3. Ajuste a posição de stop loss para ter amortecedor suficiente.

  4. Adicione filtros aos sinais de entrada da tela.

Orientações de otimização

  1. Adicionar mais indicadores para julgar a tendência principal, melhorando a precisão.

  2. Incorporar indicadores de volume para evitar falhas.

  3. Otimizar os parâmetros do período do canal para diferentes produtos.

  4. Implementar stop loss dinâmico.

  5. Adicionar filtros para melhorar a qualidade do sinal e evitar trocas desnecessárias.

Conclusão

Esta estratégia segue o princípio de negociação de tendência em geral, usando canais dinâmicos para determinar a faixa de volatilidade e gerar sinais de rupturas. Ela pode rastrear efetivamente as mudanças de tendência e é uma estratégia de tendência confiável. Mas os principais mecanismos de julgamento de tendência e stop loss precisam de mais otimização e condições de filtragem devem ser adicionadas para melhorar a robustez. A estratégia é adequada para o rastreamento de tendências de médio a longo prazo e pode ser combinada com outras estratégias em uma carteira para cobrir riscos.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 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 Indexes", 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"])
longSL=input("Lower Low", "LONG SL", options=["Lower Low", "Basis"])
shortSL=input("Higher High", "SHORT SL", options=["Higher High", "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)
plot(ema(close,200), "ema", color=color.orange)

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=longSL=='Basis' ? mid : ll)

if (strategy.position_size<0)
    strategy.exit(id="Shorts Exit",stop=shortSL=='Basis' ? mid : hh)

Mais.