
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
/*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)