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.
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.
O canal dinâmico adapta-se à evolução das tendências do mercado.
Os sinais de negociação são gerados com base em breakouts, seguindo o princípio da negociação de tendência.
A tendência principal é determinada pela média móvel, combinada com rupturas nos canais.
A posição de paragem de perdas flexível baseada nas condições de mercado.
O julgamento errado da tendência principal pode desviar-se do mercado.
A definição inadequada do período do canal aumenta o comércio incorreto.
A perda de paragem muito próxima do canal pode aumentar a paragem.
Os sinais de fuga têm algum atraso, possivelmente perdendo o melhor ponto de entrada.
Soluções:
Utilize vários indicadores para avaliar a tendência principal, reduzindo os erros.
Otimizar os parâmetros do período do canal para os diferentes ritmos de mercado.
Ajuste a posição de stop loss para ter amortecedor suficiente.
Adicione filtros aos sinais de entrada da tela.
Adicionar mais indicadores para julgar a tendência principal, melhorando a precisão.
Incorporar indicadores de volume para evitar falhas.
Otimizar os parâmetros do período do canal para diferentes produtos.
Implementar stop loss dinâmico.
Adicionar filtros para melhorar a qualidade do sinal e evitar trocas desnecessárias.
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)