Estratégia dinâmica de ruptura do canal

Autora:ChaoZhang, Data: 2024-01-17 15:29:55
Tags:

img

Resumo

A Estratégia de Breakout do Canal Dinâmico é uma estratégia de seguimento de tendências. Ele usa o indicador do Canal Donchian para determinar dinamicamente os preços de compra e venda de breakout, combina o indicador ATR para definir pontos de stop loss e alcança a completa automação da geração de sinal comercial e saídas de stop loss.

Princípios

Canal de Donchian

O canal de Donchian é um indicador de canal dinâmico que forma bandas superiores e inferiores, calculando os preços mais altos e mais baixos durante um determinado período no passado.

Esta estratégia define o período do canal de Donchian em 20 dias. Quando o preço quebra o trilho superior, um sinal de compra é gerado, indicando que o mercado entrou em uma tendência de alta. Quando o preço cai abaixo do trilho inferior, um sinal de venda é gerado, indicando que o mercado entrou em uma tendência de queda.

Indicador ATR

O indicador ATR é a abreviatura de Average True Range, que reflete a amplitude média de flutuação de um determinado ativo durante um período recente.

Esta estratégia usa o indicador ATR de 20 dias para calcular o ponto de stop loss. Quanto maior o valor ATR, maior a flutuação do mercado, e mais distante o ponto de stop loss definido. Isso evita que o ponto de stop loss esteja muito perto e seja eliminado por pequenas flutuações do mercado.

Geração de sinal

Quando o preço atravessa a linha do meio do Canal de Donchian para cima, um sinal de compra é gerado. Quando o preço atravessa a linha do meio para baixo, um sinal de venda é gerado. Isso indica que o preço começou a atravessar este canal e entrar em uma nova rodada de tendência.

Ao mesmo tempo, combinado com o ponto de stop loss calculado pelo indicador ATR, quando a perda atingir o ponto de stop loss, a posição será activamente interrompida para controlar os riscos.

Análise das vantagens

Rastreamento automático de tendências

O canal de Donchian é um indicador de rastreamento de tendências. Ajustando dinamicamente a faixa do canal, esta estratégia pode rastrear automaticamente as mudanças nas tendências do mercado e gerar sinais de compra e venda em conformidade. Isso evita a subjetividade do julgamento manual e torna os sinais de negociação mais objetivos e confiáveis.

Negociação de dois sentidos

A estratégia contém regras longas e curtas, o que permite negociação bidirecional. Isso expande os ambientes de mercado onde a estratégia pode ser aplicada, permitindo rentabilidade em tendência ascendente e descendente.

Gestão de riscos

O mecanismo de stop loss do indicador ATR pode controlar efetivamente a perda de uma única negociação. Isso é especialmente importante para a negociação quantitativa para garantir que as estratégias obtenham retornos positivos estáveis em eventos de alta probabilidade.

Análise de riscos

Risco de armadilha

A estratégia do canal de Donchian tem algum risco de ser preso. Se o preço inverter e reentrar no canal sem uma perda de parada, podem ser incorridas perdas significativas. O mecanismo de perda de parada ATR nesta estratégia ajuda a mitigar esse risco.

Risco de inversão da tendência

Em reversões de tendência, o indicador do canal de Donchian gerará sinais errôneos. O usuário precisa prestar atenção às condições do mercado para evitar negociações às cegas quando ocorrem reversões de tendência significativas. Indicadores de julgamento de tendência podem ser adicionados para reduzir esse risco.

Risco de otimização de parâmetros

Os parâmetros do período do canal de Donchian e do ATR stop loss precisam ser otimizados, caso contrário, sinais incorretos excessivos podem ser gerados.

Orientações de otimização

Adicionar Julgamento de Tendência

Os indicadores de avaliação da tendência, tais como as médias móveis, podem ser adicionados para evitar sinais errôneos em pontos de virada significativos da tendência.

Optimização de parâmetros

Otimizar os parâmetros do canal de Donchian e do ATR para encontrar a melhor combinação.

Adicionar padrões de preço

Combinar outros indicadores de julgamento auxiliares, tais como padrões de candelabro e alterações no volume de negociação, para melhorar a precisão do sinal e reduzir transações de reversão desnecessárias.

Conclusão

A estratégia de ruptura dinâmica do canal localiza a direção da tendência através das bandas superior e inferior do canal de Donchian e gera sinais de negociação. O mecanismo de stop loss ATR controla o risco. Esta estratégia tem um alto grau de automação e é adequada para negociação quantitativa.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na

Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when=((close < dcAverage) and  cross(close,dcAverage)) or ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Mais.