O recurso está a ser carregado... Carregamento...

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

Autora:ChaoZhang, Data: 2024-12-13 10:21:14
Tags:ATROrganização comum de mercadoSMAMA

img

Resumo

Esta estratégia é um sistema de negociação de tendência baseado no Variable Index Dynamic Average (VIDYA), combinado com bandas ATR para melhorar a identificação de tendências e as capacidades de gerenciamento de riscos.

Princípios de estratégia

O princípio central consiste em utilizar as características dinâmicas do VIDYA para a identificação de tendências.

  1. Utiliza o oscilador de momento de Chande (CMO) para o cálculo do momento de preço
  2. Calcula o fator alfa adaptativo com base no momento
  3. Constrói bandas de volatilidade dinâmica utilizando o ATR
  4. Gera sinais longos na banda superior e sinais curtos na banda inferior
  5. Emprega uma lógica de inversão de posição - novos sinais fecham posições existentes e abrem novas

Vantagens da estratégia

  1. Forte adaptação dinâmica: VIDYA ajusta automaticamente os parâmetros com base na volatilidade do mercado
  2. Controlo de risco abrangente: utiliza faixas dinâmicas ATR para adaptação de stop-loss
  3. Signais claros: emprega uma lógica de inversão de tendência com sinais comerciais distintos
  4. Excelente visualização: Distingue tendências ascendentes e descendentes através de codificação de cores
  5. Parâmetros flexíveis: os parâmetros principais podem ser otimizados para diferentes características do mercado

Riscos estratégicos

  1. Risco de mercado perturbado: propenso a sinais falsos em mercados variados
  2. Efeito do deslizamento: as operações bidirecionais em cada sinal aumentam a exposição ao deslizamento
  3. Risco de gestão de fundos: o dimensionamento das posições fixas pode conduzir a perdas significativas em mercados voláteis
  4. Sensibilidade dos parâmetros: o desempenho da estratégia depende fortemente dos parâmetros VIDYA e ATR
  5. Dependência do ambiente de mercado: apresenta bons resultados em mercados em tendência, mas pode ter dificuldades em outros

Orientações de otimização

  1. Adicionar filtros de tendência: Implementar uma avaliação de tendência de longo prazo para filtrar sinais em mercados variados
  2. Melhorar a gestão das posições: introduzir um dimensionamento dinâmico das posições com base na volatilidade do mercado
  3. Melhorar a lógica de entrada: adicionar confirmação de indicadores técnicos para melhorar a confiabilidade do sinal
  4. Refinar o Mecanismo Stop-Loss: considerar paradas de trailing ou paradas dinâmicas baseadas na volatilidade
  5. Incluir filtros de tempo: ajustar parâmetros de estratégia com base em diferentes características do período de tempo

Resumo

Esta estratégia alcança rastreamento de tendências dinâmicas e controle de risco combinando VIDYA e ATR. Sua força principal reside em se adaptar à volatilidade do mercado, mantendo as capacidades de seguir tendências e capturando oportunidades de reversão. Embora possa enfrentar riscos em certas condições de mercado, a estratégia mantém valor prático através de otimização adequada de parâmetros e medidas de gerenciamento de risco. Os investidores devem se concentrar no controle de risco, configurações apropriadas de parâmetros e ajustes de estratégia oportunos com base nas condições de mercado na negociação ao vivo.


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

Relacionados

Mais.