Uma tendência seguindo a estratégia de rompimento de canal dinâmico


Data de criação: 2024-01-17 15:29:55 última modificação: 2024-01-17 15:29:55
cópia: 1 Cliques: 671
1
focar em
1617
Seguidores

Uma tendência seguindo a estratégia de rompimento de canal dinâmico

Visão geral

A estratégia de ruptura de canal dinâmico é uma estratégia de acompanhamento de tendências. A estratégia usa o indicador de canal Donchian para determinar dinamicamente os preços de compra e venda de ruptura, em combinação com o indicador ATR de volatilidade para definir o ponto de parada, para a geração de sinais de negociação e a automação completa do ponto de parada.

Princípio da estratégia

Passagem de Donchian

O canal de Donchian é um indicador de canal dinâmico, formando um trajeto ascendente e descendente através do cálculo de preços máximos e mínimos nos últimos períodos. O trajeto ascendente é o preço mais alto nos últimos n períodos e o trajeto descendente é o preço mais baixo nos últimos n períodos. O canal de Donchian reflete a amplitude de flutuação do mercado e as tendências potenciais.

A estratégia estabelece um ciclo de 20 dias no canal Donchian. Quando o preço quebra a trajetória, um sinal de compra é gerado, indicando que o mercado entrou em uma tendência ascendente; Quando o preço desce a trajetória, um sinal de venda é gerado, indicando que o mercado entrou em uma tendência descendente.

Indicador ATR

O ATR é uma abreviação de Average True Range, que reflete a amplitude média de flutuação de um determinado ativo no período mais recente. O ATR pode se adaptar automaticamente às mudanças na frequência de flutuação do mercado, refletindo com mais precisão a amplitude real do mercado no período mais recente.

A estratégia usa o indicador ATR de 20 dias para calcular o ponto de parada. Quanto maior o valor do ATR, maior a flutuação do mercado e mais longe do ponto de parada definido. Isso evita que o ponto de parada fique muito perto e seja atingido por pequenas flutuações do mercado.

Sinais estratégicos

Quando o preço acima atravessa a linha média do canal Donchian, gera um sinal de compra; quando o preço abaixo atravessa a linha média do canal Donchian, gera um sinal de venda. Isso indica que o preço começa a romper o canal e entrar em uma nova rodada de tendência.

Ao mesmo tempo, em combinação com o ponto de parada calculado pelo indicador ATR, quando a perda atinge o ponto de parada, a perda de parada ativa é retirada da posição, controlando o risco.

Análise de vantagens

Seguimento automático de tendências

O canal Donchian é um indicador de acompanhamento de tendências. A estratégia permite acompanhar automaticamente as mudanças nas tendências do mercado, ajustando dinamicamente o alcance do canal, gerando sinais de compra e venda. Isso evita a subjetividade do julgamento artificial e torna a produção de sinais de negociação mais objetiva e confiável.

Transações bilaterais

A estratégia contém as regras de fazer mais e fazer menos, permitindo negociações bilaterais. Isso expande o ambiente de mercado em que a estratégia é aplicada, permitindo lucrar tanto na alta quanto na baixa do mercado.

Controle de Risco

O mecanismo de stop loss combinado com o indicador ATR permite controlar efetivamente os prejuízos de uma única transação. Isso é especialmente importante para a negociação quantitativa, garantindo que a estratégia obtenha um retorno positivo estável em eventos de alta probabilidade.

Análise de Riscos

Correr riscos

A estratégia do canal Donchian apresenta um certo risco de cobertura. Quando o preço se reverte e entra novamente no canal, um grande prejuízo pode ser causado se não houver perda. Esta estratégia reduz esse risco através do mecanismo de parada de perda do indicador ATR.

Risco de reversão de tendência

O indicador de canal de Donchian pode gerar um sinal de erro quando a tendência se inverte. Os usuários precisam estar atentos à situação do mercado e evitar ficar de olho no momento em que a tendência se inverte.

Riscos de otimização de parâmetros

Os parâmetros do ciclo de parada do canal Donchian e do ATR precisam ser testados para otimização, caso contrário, haverá um excesso de sinais de erro. Esta estratégia usa parâmetros de experiência, e os parâmetros do disco real precisam ser otimizados com base em dados históricos.

Direção de otimização

Julgamento de tendências

Indicadores de tendência, como as médias móveis, podem ser adicionados para evitar sinais errados em pontos de reversão de tendência significativos.

Optimização de parâmetros

Otimização dos parâmetros do canal Donchian e ATR para encontrar a melhor combinação de parâmetros. A redução apropriada do ciclo do canal permite capturar a reversão da tendência mais rapidamente.

Combinado com a forma de preço

Em combinação com outros indicadores de julgamento auxiliares, como a forma da linha K, a mudança no volume de transação, etc., pode-se melhorar a precisão do sinal e reduzir o desnecessário reverso de transação.

Resumir

A estratégia de ruptura do canal dinâmico localiza a direção da tendência através do trajeto ascendente e descendente do canal Donchian e gera um sinal de negociação. A estratégia é altamente automatizada e adequada para negociação quantitativa. O espaço de otimização reside na otimização da seleção de parâmetros e na melhoria da precisão do sinal em combinação com outros indicadores auxiliares.

Código-fonte da estratégia
/*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)