Estratégia de acompanhamento de tendência de média móvel dupla


Data de criação: 2024-03-22 13:56:44 última modificação: 2024-03-22 13:56:44
cópia: 1 Cliques: 501
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de média móvel dupla

Descrição

A estratégia usa a interseção de duas médias móveis para avaliar a mudança de tendência do mercado e realizar operações de compra e venda de acordo com a tendência. Faça mais quando atravessa a média de curto prazo na média de longo prazo e faça um espaço abaixo da média de curto prazo quando atravessa a média de longo prazo para seguir a direção da tendência.

Princípio da Estratégia

O núcleo da estratégia é composto por duas médias móveis: uma média rápida (o ciclo padrão é de 32) e uma média lenta (o ciclo padrão também é de 32 e pode ser ajustado por meio de parâmetros). Quando o preço de fechamento atravessa/baixa o canal formado por essas duas médias, o que representa uma reversão de tendência, a estratégia gera um sinal de compra e venda:

  • Faça mais quando você atravessa a linha média lenta em uma linha média rápida
  • Quando a linha média rápida atravessa a linha média lenta, faça espaço
  • Quando você já possui uma opção, atravesse a linha média rápida abaixo da linha média lenta, equilibre a opção e feche
  • Quando você já tem o bilhete, atravesse a linha média rápida, a linha média lenta, o espaço e faça mais

Através desta forma de equilíbrio, a estratégia pode acompanhar a tendência, mantendo mais opções em uma tendência ascendente, mantendo opções vazias em uma tendência descendente, até que a tendência apareça um sinal de inversão.

Análise de vantagens

  1. Seguimento de tendências: a estratégia é capaz de capturar e seguir as principais tendências do mercado através de uma análise de tendências em linha reta.
  2. Simples e fácil de usar: a lógica da estratégia é clara, apenas duas linhas médias são usadas, a configuração de parâmetros é simples e fácil de entender e dominar.
  3. Ampla aplicabilidade: a estratégia é amplamente aplicável a variedades e ciclos, podendo ser usada em vários mercados.
  4. Stop Losses em Tempo: Quando a tendência se reverte, a estratégia permite quebrar as posições em tempo e controlar os prejuízos.

Análise de Riscos

  1. A estratégia de negociação mais frequente, quando o mercado está em uma tendência de choque, pode levar a um sinal de cruzamento mais frequente, resultando em mais perdas.
  2. Insuficiência de resposta a situações de emergência: face a situações extremas (como uma subida ou queda rápida), a estratégia pode não reagir o suficiente, resultando em maiores perdas.
  3. Parâmetros de otimização são difíceis: a otimização de parâmetros de linha média requer uma grande quantidade de dados históricos e testes de retorno, e os parâmetros têm uma orientação limitada sobre o efeito futuro.

Para os riscos acima, pode-se considerar a adição de filtros adequados, como ATR ou filtros de amplitude real média, para reduzir o excesso de negociação em mercados de turbulência; estabeleça um stop loss razoável, controle de perdas únicas; otimize continuamente os parâmetros para se adaptar ao mercado. Mas as limitações da própria estratégia são difíceis de evitar completamente.

Direção de otimização Optimization Direction

  1. Confirmação de tendências: Após a geração de sinais de negociação, alguns indicadores de confirmação de tendências, como MACD, DMI, etc., podem ser adicionados para filtrar ainda mais os sinais.
  2. Paradas dinâmicas: A configuração de paradas dinâmicas com base em indicadores como o ATR, em vez de paradas de porcentagem ou preço fixo, permite um melhor controle do risco.
  3. Gerenciamento de posições: De acordo com a intensidade da tendência, a volatilidade e outros indicadores, ajuste dinâmico do tamanho da posição, aumentando a posição quando a tendência é forte e diminuindo a posição quando a tendência é fraca.
  4. Multiclínea de múltiplos períodos: Considere um sistema de linha média de múltiplos níveis, como linha diária + 4 horas, filtrando e confirmando-se mutuamente, aumentando a precisão da captação de tendências.
  5. Parâmetros de adaptação: introdução de métodos de otimização de parâmetros de adaptação, como algoritmos genéticos, para que os parâmetros de estratégia possam se adaptar a diferentes condições de mercado.

A otimização acima pode melhorar a capacidade da estratégia de lidar com mercados complexos, mas é preciso ter em conta que a otimização excessiva pode levar ao encaixe da curva, causando um mau desempenho no futuro.

Resumo

A estratégia de acompanhamento de tendências de dupla linha de equilíbrio captura tendências através de cruzamentos de equilíbrio, tem características de facilidade de uso e ampla aplicabilidade. No entanto, o seu desempenho é fraco em mercados turbulentos, a resposta insuficiente a situações extremas e a dificuldade de otimização de parâmetros. A estratégia pode ser otimizada através da introdução de mais indicadores de filtragem, stop loss dinâmico, gerenciamento de posição, combinação de múltiplos ciclos e adaptação de parâmetros.

Código-fonte da estratégia
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')