Estratégia de ruptura de dupla média móvel com atraso

Autora:ChaoZhang, Data: 2024-04-01 11:58:55
Tags:

img

Resumo

A Dual Moving Average Lagging Breakout Strategy é uma estratégia de negociação de análise técnica comumente usada. Esta estratégia combina duas médias móveis simples (SMAs) com períodos diferentes e o indicador Average True Range (ATR), com o objetivo de capturar pontos de virada nas tendências do mercado e alcançar negociações de baixo risco e alto retorno. Sua ideia central é utilizar a natureza atrasada das médias móveis e da volatilidade do mercado, gerando sinais de negociação quando os preços atravessam as médias móveis e a volatilidade está dentro de um intervalo controlável.

Princípio da estratégia

Os principais princípios desta estratégia são os seguintes:

  1. Calcular duas médias móveis simples com períodos diferentes, com períodos de incumprimento de 14 e 50.
  2. Calcular o indicador ATR para medir a volatilidade do mercado, com um período por defeito de 14 anos.
  3. Traçar as faixas superior e inferior do ATR como faixas de referência para as flutuações de preços. A faixa superior é obtida adicionando o ATR multiplicado por um fator (padrão 1.5) ao preço mais alto e a faixa inferior é obtida subtraindo o ATR multiplicado pelo fator do preço mais baixo.
  4. Quando o preço de fechamento cruza acima da média móvel de curto prazo e a média móvel de curto prazo está acima da média móvel de longo prazo, um sinal longo é gerado e uma seta ascendente é desenhada abaixo do candelabro.
  5. Quando o preço de fechamento cruza abaixo da média móvel de curto prazo e a média móvel de curto prazo está abaixo da média móvel de longo prazo, um sinal curto é gerado e uma seta descendente é desenhada acima do candelabro.
  6. Defina os níveis de stop-loss e take-profit. O nível de stop-loss é o preço mais baixo menos o ATR multiplicado pelo fator, e o nível de take-profit é o preço de entrada mais (preço de entrada - nível de stop-loss) multiplicado por 2.

A partir dos princípios acima referidos, pode-se concluir que esta estratégia combina o julgamento da tendência do sistema de médias móveis e a medição da volatilidade do indicador ATR, concentrando-se no seguimento da tendência e controlando o risco de utilização, tornando-se assim uma estratégia de seguimento da tendência.

Análise das vantagens

A estratégia de ruptura com atraso da média móvel dupla tem as seguintes vantagens:

  1. Rastreamento de tendências: julga a direção da tendência através do sistema de média móvel, captura as principais tendências do mercado e segue o mercado.
  2. Controlo de riscos: utiliza o indicador ATR para medir a volatilidade do mercado e estabelece níveis razoáveis de stop-loss para manter os drawdowns dentro de um intervalo aceitável.
  3. Parâmetros flexíveis: Parâmetros como os períodos de média móvel, o período ATR e o multiplicador podem ser otimizados e ajustados de acordo com diferentes mercados e instrumentos, proporcionando um certo grau de universalidade.
  4. Simples e diretos: os sinais de negociação são simples e claros, adequados para investidores de diferentes níveis.

Análise de riscos

Embora esta estratégia tenha certas vantagens, apresenta ainda os seguintes riscos:

  1. Negociação frequente: quando o mercado é altamente volátil e a tendência não é clara, esta estratégia pode gerar sinais de negociação frequentes, aumentando os custos de negociação.
  2. Lag: O sistema de médias móveis tem inerentemente um certo atraso e pode haver alguma redução no início dos pontos de virada do mercado.
  3. Optimização de parâmetros: as diferentes definições de parâmetros têm um impacto significativo no desempenho da estratégia, exigindo a otimização de parâmetros para diferentes mercados e instrumentos, aumentando a dificuldade de implementação.

Para fazer face aos riscos acima referidos, a estratégia pode ser otimizada e melhorada a partir dos seguintes aspectos:

  1. Introduza a filtragem de tendências: Antes de gerar sinais de negociação, primeiro determine a direção da tendência do período de tempo maior e só negocie quando a tendência estiver clara no período de tempo maior, reduzindo a frequência de negociação.
  2. Otimizar o stop-loss e o take-profit: considerar a introdução de métodos de stop-loss dinâmicos, tais como trailing stop-loss e volatility stop-loss, bem como ajustar dinamicamente os níveis de take-profit com base na volatilidade do mercado para melhorar a flexibilidade da estratégia.
  3. Optimização da combinação: combinar esta estratégia com outros indicadores técnicos ou fatores fundamentais para melhorar a robustez da estratégia.

Direcção de otimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Optimização de parâmetros adaptativos: para diferentes instrumentos e prazos, encontre automaticamente a combinação de parâmetros ideal para reduzir a carga de trabalho do ajuste manual de parâmetros.
  2. Filtragem de sinal: Após a geração de sinais de negociação, introduzir outros indicadores técnicos ou fatores fundamentais para confirmação secundária de sinais para melhorar a qualidade do sinal.
  3. Gestão de posições: ao abrir posições, ajuste dinamicamente o tamanho da posição com base em fatores como a volatilidade do mercado e o risco da conta para controlar o risco de negociação única.
  4. Trailing stop-loss: O nível inicial de stop-loss é fixo. À medida que o preço se move em uma direção favorável, considere mover o nível de stop-loss na direção favorável, bem como para reduzir o drawdown e melhorar a eficiência da utilização do capital. Métodos comuns incluem trailing stop-loss e breakout stop-loss.

As otimizações acima podem melhorar a adaptabilidade, robustez e lucratividade da estratégia, mas deve-se notar que a otimização excessiva pode levar ao ajuste da curva, resultando em desempenho ruim fora da amostra.

Resumo

A Estratégia de Breakout de Lagging de média móvel dupla é uma estratégia clássica de seguimento de tendências que determina a direção da tendência através do sistema de média móvel e controla o risco usando o indicador ATR, capturando os movimentos da tendência enquanto gerencia o risco.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="2 Moving Averages", shorttitle="2MA", overlay=true)

// Moving Averages
len = input(14, minval=1, title="Length MA1")
src = input(close, title="Source MA1")
ma1 = sma(src, len)

len2 = input(50, minval=1, title="Length MA2")
src2 = input(close, title="Source MA2")
ma2 = sma(src2, len2)

// Plotting Moving Averages
plot(ma1, color=#0b6ce5, title="MA1")
plot(ma2, color=#00ff80, linewidth=2, title="MA2")

// ATR Bands
atrLength = input(14, title="ATR Length")
atrMultiplier = input(1.5, title="ATR Multiplier")
upperBand = high + atr(atrLength) * atrMultiplier
lowerBand = low - atr(atrLength) * atrMultiplier

u =plot(upperBand, color=color.rgb(217, 220, 223, 84), title="ATR Upper Band")
l = plot(lowerBand, color=color.rgb(217, 220, 223, 84), title="ATR Lower Band")
fill(u, l, color=#471eb821, title="ATR Background")

// Conditions for plotting arrows
upArrowCondition = ma1 > ma2 and crossover(close, ma1)
downArrowCondition = ma1 < ma2 and crossunder(close, ma1)

// Plotting arrows
plotshape(upArrowCondition, style=shape.arrowup, color=color.rgb(66, 45, 255), size=size.normal, location=location.belowbar, title="Up Arrow")
plotshape(downArrowCondition, style=shape.arrowdown, color=color.red, size=size.normal, location=location.abovebar, title="Down Arrow")
// Checkbox for trade execution
showTrades = input(true, title="Hiển thị giao dịch")

// Buy Condition
if (upArrowCondition and showTrades)
    strategy.entry("Buy", strategy.long)

// Sell Condition
if (downArrowCondition and showTrades)
    strategy.entry("Sell", strategy.short)

// Stop Loss and Take Profit
stopLossBuy = low - atr(14) * atrMultiplier
takeProfitBuy = close + (close - stopLossBuy) * 2

stopLossSell = high + atr(14) * atrMultiplier
takeProfitSell = close - (stopLossSell - close) * 2

strategy.exit("Exit Buy", "Buy", stop=stopLossBuy, limit=takeProfitBuy)
strategy.exit("Exit Sell", "Sell", stop=stopLossSell, limit=takeProfitSell)



Mais.