Estratégia de negociação de divergência e acompanhamento de tendências do indicador Donchian multiperíodo

DC MA Trend momentum volatility SIGNAL
Data de criação: 2025-02-21 10:38:06 última modificação: 2025-02-21 10:38:06
cópia: 0 Cliques: 448
2
focar em
319
Seguidores

Estratégia de negociação de divergência e acompanhamento de tendências do indicador Donchian multiperíodo Estratégia de negociação de divergência e acompanhamento de tendências do indicador Donchian multiperíodo

Visão geral

A estratégia baseia-se em indicadores de canais de Tangxian de múltiplos períodos para construir um sistema de acompanhamento de tendências. Ao analisar as rupturas de canais de Tangxian em diferentes períodos de tempo, a combinação de tendências principais e tendências locais forma um gráfico de tendências de faixa de tendência visualmente intuitivo. A estratégia usa mudanças de cores profundas para mostrar a força e a fraqueza da tendência, com a linha verde representando uma tendência ascendente e a linha vermelha representando uma tendência descendente.

Princípio da estratégia

O núcleo da estratégia é o julgamento de tendências com base nos indicadores do Canal Donchian. O Canal Donchian é composto por canais de preços mais altos e canais de preços mais baixos, que são julgados pela comparação do preço atual com a relação de localização do canal.

  1. Determinação de tendências principais: usando o canal de 20 ciclos de Dongguan, quando os preços quebram a trajetória ascendente formam uma tendência ascendente e quebram a trajetória descendente formam uma tendência descendente
  2. Determinação de tendências locais: no quadro de tendências principais, o uso de um ciclo mais curto de Tangjian Channel para determinar a direção das tendências locais
  3. Gráfico de tendências em bandas: combinações de 10 ciclos diferentes de canais de Tangjian formam as faixas de tendências, com cores claras e escuras que refletem a intensidade da tendência
  4. Sinais de negociação: a tendência principal é para cima, a tendência principal é para baixo, a tendência inversa é para baixo

Vantagens estratégicas

  1. Julgar tendências objetivamente: julgar tendências baseadas em rupturas de preços, evitando os desvios causados por julgamentos subjetivos
  2. Confirmação de múltiplos ciclos: aumenta a precisão do julgamento de tendências através da sobreposição de diferentes tendências de ciclos
  3. Efeitos visuais intuitivos: mudanças de cor na faixa de tendência mostram o estado do mercado de forma intuitiva
  4. Regras de negociação claras: sinais de entrada e saída claros para implementação programada
  5. Adaptabilidade: Parâmetros podem ser ajustados para otimizar o desempenho da estratégia de acordo com as características da variedade de transação

Risco estratégico

  1. Risco de reversão de tendência: pode haver uma maior retração no ponto de reversão da tendência
  2. Mercado de choque não é válido: oscilação horizontal pode gerar sinais falsos
  3. Sensibilidade de parâmetros: diferentes configurações de parâmetros podem afetar significativamente a eficácia da estratégia
  4. Efeitos de deslizamento: transações frequentes podem ser afetadas por deslizamentos
  5. Risco sistêmico: surpresas no mercado podem causar grandes perdas

Direção de otimização da estratégia

  1. Aumentar o filtro de força de tendência: introdução de indicadores de força de tendência como o ADX, filtrando sinais de tendência fraca
  2. Optimizar a configuração de stop loss: ajuste a posição de stop loss com base no ATR dinâmico para melhorar a capacidade de controle de risco
  3. Adição de confirmação de volume de transação: análise de volume de transação combinada para verificar a eficácia da tendência
  4. Introdução de adaptação de volatilidade: Parâmetros de ajuste dinâmico de acordo com a volatilidade do mercado
  5. Melhorar a gestão de posições: ajustar dinamicamente o porte das posições com base na intensidade da tendência

Resumir

A estratégia utiliza a aplicação inovadora de múltiplos ciclos de corredores de tangjian para construir um sistema de negociação de tendências de seguimento de tendências com destaque visual e lógica clara. A principal vantagem da estratégia é visualizar o complexo processo de análise de tendências, facilitando o entendimento intuitivo do movimento do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-06-12 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Donchian Trend Ribbon Strategy", shorttitle="DonchianTrendRibbonStrat", overlay=true, precision=0)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Parameters
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dlen = input.int(defval=20, title="Donchian Channel Period", minval=10)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Helper function to determine color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f_color(mainTrend, localTrend) =>
    // mainTrend = 1 => uptrend, -1 => downtrend
    // localTrend = 1 => local uptrend, -1 => local downtrend
    // Return color based on whether local trend aligns with the main trend
    color c = na
    if mainTrend == 1
        c := localTrend == 1 ? color.new(color.lime, 0) : color.new(color.lime, 60)
    else if mainTrend == -1
        c := localTrend == -1 ? color.new(color.red, 0) : color.new(color.red, 60)
    else
        c := na
    c

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannel - determines main trend (1 or -1)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannel(len) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannelalt - determines local trend and returns color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannelalt(len, maintrend) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])
    f_color(maintrend, tr)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Calculate main trend
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maintrend = dchannel(dlen)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Plotting the Donchian Trend Ribbon
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
plot( 5,  color=dchannelalt(dlen - 0, maintrend),  style=plot.style_columns, histbase= 0)
plot(10, color=dchannelalt(dlen - 1, maintrend),   style=plot.style_columns, histbase= 5)
plot(15, color=dchannelalt(dlen - 2, maintrend),   style=plot.style_columns, histbase=10)
plot(20, color=dchannelalt(dlen - 3, maintrend),   style=plot.style_columns, histbase=15)
plot(25, color=dchannelalt(dlen - 4, maintrend),   style=plot.style_columns, histbase=20)
plot(30, color=dchannelalt(dlen - 5, maintrend),   style=plot.style_columns, histbase=25)
plot(35, color=dchannelalt(dlen - 6, maintrend),   style=plot.style_columns, histbase=30)
plot(40, color=dchannelalt(dlen - 7, maintrend),   style=plot.style_columns, histbase=35)
plot(45, color=dchannelalt(dlen - 8, maintrend),   style=plot.style_columns, histbase=40)
plot(50, color=dchannelalt(dlen - 9, maintrend),   style=plot.style_columns, histbase=45)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Trading Logic (STRATEGY)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool goLong  = (maintrend == 1)
bool goShort = (maintrend == -1)

// Entry signals
if goLong
    strategy.entry("Long", strategy.long)

if goShort
    strategy.entry("Short", strategy.short)

// Close positions when trend changes
if strategy.position_size > 0 and goShort
    strategy.close("Long")

if strategy.position_size < 0 and goLong
    strategy.close("Short")