Indicador de volatilidade dinâmica (VIDYA) combinado com a estratégia de reversão de tendência ATR

ATR CMO SMA MA
Data de criação: 2024-12-13 10:21:14 última modificação: 2024-12-13 10:21:14
cópia: 0 Cliques: 474
1
focar em
1617
Seguidores

Indicador de volatilidade dinâmica (VIDYA) combinado com a estratégia de reversão de tendência ATR

Visão geral

Esta estratégia é um sistema de negociação de acompanhamento de tendências baseado no indicador de volatilidade dinâmica (VIDYA), combinado com a capacidade de identificação de tendências e gerenciamento de risco da ATR. A estratégia é capaz de capturar sinais de reversão de mercado em tempo hábil, mantendo a capacidade de acompanhamento de tendências, através do ajuste dinâmico da velocidade de resposta às flutuações do mercado.

Princípio da estratégia

O núcleo da estratégia consiste em usar as características dinâmicas do indicador VIDA para identificar tendências. A VIDA ajusta dinamicamente o peso da média móvel, calculando mudanças de dinâmica, de modo a ter uma sensibilidade diferente em diferentes cenários de mercado.

  1. Utilize o Chande Dynamic Oscillator (CMO) para calcular a dinâmica dos preços
  2. Factor de adaptação alfa calculado com base na dinâmica
  3. Construção de bandas de ondas dinâmicas em combinação com o ATR
  4. A quebra do preço na trajetória ascendente gera um sinal de fazer mais, a quebra da trajetória descendente gera um sinal de fazer menos
  5. A lógica de inversão de posição é usada, ou seja, o novo sinal elimina o antigo e abre um novo posicionamento

Vantagens estratégicas

  1. Adaptabilidade dinâmica: O indicador VIDYA ajusta automaticamente os parâmetros de acordo com as flutuações do mercado, evitando o atraso das médias móveis tradicionais
  2. Controle de risco perfeito: configuração de stop loss através da flutuação dinâmica do ATR, capaz de se adaptar a diferentes circunstâncias de mercado
  3. Claridade de sinais: Aplicação de lógica de reversão de tendência, sinais de negociação claros e fáceis de executar
  4. Boa visualização: Indicações de tendências de alta e baixa através de cores
  5. Parâmetros ajustáveis: os parâmetros-chave podem ser otimizados de acordo com diferentes características do mercado

Risco estratégico

  1. Risco de mercado em choque: Os mercados em choque horizontal são propensos a produzir falsos sinais, resultando em transações frequentes
  2. Efeitos do ponto de deslizamento: Cada sinal envolve negociação bidirecional e é vulnerável ao efeito do ponto de deslizamento devido à adoção de uma estratégia de inversão
  3. Risco de gestão de fundos: a gestão de posições de proporção fixa pode levar a grandes perdas em situações de forte volatilidade
  4. Sensibilidade de parâmetros: a configuração de parâmetros do VIDYA e do ATR tem maior influência no desempenho da estratégia
  5. Dependência do cenário de mercado: Melhor desempenho em mercados com evidência de tendência, mas pode ser pior em outros cenários de mercado

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

  1. Adição de filtros de tendência: pode ser adicionado um julgamento de tendência de longo prazo para filtrar os sinais de mercado de turbulência
  2. Optimizar o gerenciamento de posições: considerar a introdução de gerenciamento de posições dinâmico, ajustando a proporção de posse de acordo com as flutuações do mercado
  3. Mudança na lógica de entrada: pode ser adicionada a confirmação de outros indicadores técnicos para melhorar a confiabilidade do sinal
  4. Melhorar o mecanismo de suspensão: considerar a adição de suspensão móvel ou suspensão dinâmica baseada na volatilidade
  5. Filtragem de tempo adicional: parâmetros de estratégia podem ser ajustados de acordo com as características do mercado em diferentes períodos de tempo

Resumir

A estratégia permite o acompanhamento dinâmico e o controle de risco das tendências do mercado através da combinação de VIDYA e ATR. Sua principal vantagem é a capacidade de se adaptar às flutuações do mercado, mantendo a capacidade de acompanhar a tendência e, ao mesmo tempo, capturar oportunidades de reversão. Embora possa enfrentar riscos em certos cenários de mercado, a estratégia ainda tem um bom valor prático com a otimização de parâmetros razoáveis e medidas de gerenciamento de risco.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PakunFX

//@version=5
strategy("VIDYA Auto-Trading(Reversal Logic)", overlay=true)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
int   vidya_length   = input.int(10, "VIDYA Length")       
int   vidya_momentum = input.int(20, "VIDYA Momentum")    
float band_distance  = input.float(2, "Distance factor for upper/lower bands", step = 0.1)  
float source         = input.source(close, "Source")    
color up_trend_color   = input(#17dfad, "+")  
color down_trend_color = input(#dd326b, "-")  
bool  shadow           = input.bool(true, "Shadow") 

// Define VIDYA (Variable Index Dynamic Average) function
vidya_calc(src, vidya_length, vidya_momentum) =>
    float momentum         = ta.change(src)
    float sum_pos_momentum = math.sum((momentum >= 0) ? momentum : 0.0, vidya_momentum)
    float sum_neg_momentum = math.sum((momentum >= 0) ? 0.0 : -momentum, vidya_momentum)
    float abs_cmo          = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum))
    float alpha            = 2 / (vidya_length + 1)
    var float vidya_value  = 0.0
    vidya_value           := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1])

    ta.sma(vidya_value, 15)

// Calculate VIDYA
float vidya_value = vidya_calc(source, vidya_length, vidya_momentum)

// Calculate upper and lower bands
float atr_value = ta.atr(200)
float upper_band = vidya_value + atr_value * band_distance
float lower_band = vidya_value - atr_value * band_distance

// Detect trend direction
bool is_trend_up = na
if ta.crossover(source, upper_band)
    is_trend_up := true
if ta.crossunder(source, lower_band)
    is_trend_up := false

// Smooth the trend line
float smoothed_value = na
if is_trend_up
    smoothed_value := lower_band
if not is_trend_up
    smoothed_value := upper_band

// Detect trend change
bool trend_cross_up = ta.crossover(source, upper_band)
bool trend_cross_down = ta.crossunder(source, lower_band)

// ENTRY & EXIT ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
// Long logic: Enter long when down arrow appears and exit when up arrow appears
if trend_cross_up
    strategy.close("Sell")  // Close short position if any
    strategy.entry("Buy", strategy.long)

if trend_cross_down
    strategy.close("Buy")  // Close long position if any
    strategy.entry("Sell", strategy.short)