Estratégia de cruzamento de média móvel dupla - EMA9/20

Autora:ChaoZhang, Data: 2024-03-08 15:22:50
Tags:

img

Estratégia geral

A estratégia de cruzamento de média móvel dupla - EMA9/20 é uma estratégia quantitativa de negociação baseada no cruzamento de duas médias móveis exponenciais (EMA). Esta estratégia usa a EMA de 9 dias e a EMA de 20 dias como sinais de negociação, gerando sinais de compra ou venda quando as duas médias móveis se cruzam. Além disso, a estratégia emprega o cruzamento entre o preço e a EMA de 9 dias como um sinal auxiliar, bem como uma parada de trail para gerenciar o risco de negociação.

Princípios de estratégia

O princípio central desta estratégia é capturar as tendências do mercado utilizando o cruzamento de duas médias móveis com períodos diferentes. Quando a média móvel de curto prazo (9-day EMA) cruza acima da média móvel de longo prazo (20-day EMA), ela indica uma potencial tendência ascendente no mercado e a estratégia gera um sinal de compra. Por outro lado, quando a média móvel de curto prazo cruza abaixo da média móvel de longo prazo, ela sugere uma potencial tendência descendente e a estratégia gera um sinal de venda.

Além dos sinais de cruzamento da média móvel, a estratégia também incorpora o cruzamento entre o preço e a média móvel de curto prazo (EMA de 9 dias) como um sinal auxiliar.

Para controlar o risco, a estratégia emprega um mecanismo de stop de rastreamento. Uma vez que uma negociação entra em um estado lucrativo, o stop de rastreamento ajusta continuamente a posição de stop-loss de acordo com os movimentos de preço até que o preço quebre o nível de stop-loss na direção oposta, bloqueando assim os lucros, limitando as perdas potenciais.

Vantagens da estratégia

  1. Simplicidade: a estratégia baseia-se no princípio clássico dos crossovers médios móveis, tornando-a fácil de compreender e implementar.

  2. Seguimento de tendências: Utilizando o cruzamento de duas médias móveis com períodos diferentes, a estratégia pode capturar efetivamente as principais tendências do mercado.

  3. A introdução do mecanismo de stop-loss permite o fechamento oportuno de posições quando a tendência se inverte, controlando o risco de queda.

  4. Flexibilidade dos parâmetros: Os parâmetros da estratégia (como períodos de média móvel, pontos de stop-loss, etc.) podem ser otimizados e ajustados de acordo com diferentes mercados e instrumentos para se adaptarem a várias condições de mercado.

Riscos estratégicos

  1. Frequência de negociação: uma vez que a estratégia emprega tanto sinais de cruzamento de média móvel como de cruzamento de preços, pode levar a uma maior frequência de negociação, aumentando assim os custos de negociação.

  2. Mercados agitados: em mercados agitados ou limitados ao intervalo, a estratégia pode gerar mais sinais falsos, resultando em menor lucratividade.

  3. Sensibilidade dos parâmetros: o desempenho da estratégia pode ser sensível à seleção dos parâmetros e diferentes parâmetros podem produzir resultados significativamente diferentes.

Orientações de otimização

  1. Filtragem de sinais: para além dos sinais de cruzamento da média móvel e do cruzamento dos preços, introduzir outros indicadores técnicos (como o RSI, o MACD, etc.) como condições de filtragem para reduzir os falsos sinais.

  2. Parâmetros dinâmicos: ajustar dinamicamente os parâmetros da estratégia (como períodos de média móvel, pontos de stop-loss, etc.) com base em fatores como a volatilidade do mercado e a força da tendência para se adaptar aos diferentes estados do mercado.

  3. Dimensão da posição: ajustar dinamicamente a dimensão da posição com base nas tendências do mercado e na força do sinal, aumentando a dimensão da posição quando a força da tendência é elevada e reduzindo a dimensão da posição quando as tendências não são claras ou os sinais são mais fracos.

  4. Adaptação multi-instrumental: alargar a estratégia a múltiplos instrumentos e mercados e, através da diversificação e da análise de correlações, reduzir o risco global e melhorar a estabilidade dos rendimentos.

Resumo

A estratégia de cruzamento de média móvel dupla - EMA9/20 é uma estratégia de negociação quantitativa simples e prática que capta as tendências do mercado através do cruzamento de duas médias móveis com períodos diferentes e cruzamento de preços, enquanto usa trailing stops para controlar o risco. A estratégia tem uma lógica clara, é fácil de entender e implementar, tornando-a adequada para iniciantes aprenderem e usarem. No entanto, a estratégia também tem algumas limitações, como mau desempenho em mercados agitados e sensibilidade à seleção de parâmetros. Portanto, na aplicação prática, é necessário otimizar e melhorar a estratégia de acordo com as características específicas do mercado e do instrumento, como a introdução de filtragem de sinal, ajuste dinâmico de parâmetros, dimensionamento de posição e outros métodos para melhorar a lucratividade e a estabilidade da estratégia de negociação.


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
strategy(title = "EMAs 9 / 20",
		 shorttitle = '9/20 EMAs', 
		 initial_capital = 1000,
		 overlay = true, 
		 default_qty_type = strategy.fixed,
		 commission_type = strategy.commission.cash_per_contract,
		 commission_value = 0.35,
		 default_qty_value = 1)


int trailOffset = 10
int trailPoints = 15


series float oEma9 = ta.ema(ohlc4, 9)
series float oEma20 = ta.ema(ohlc4, 20)

series bool closeCrossoverEma9 = ta.crossover(close, oEma9)
series bool closeCrossunderEma9 = ta.crossover(close, oEma9)

series bool nineCrossover20 = ta.crossover(oEma9, oEma20)
series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20)

//Entry Exits

if nineCrossover20
    strategy.entry("Long 9Cross20", strategy.long, 2)
else if closeCrossoverEma9
    strategy.entry("Long 9CrossClose", strategy.long, 2)
    strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossunder20
    strategy.close("Long 9Cross20")
    
    

if nineCrossunder20
    strategy.entry("Short 9Cross20", strategy.short, 2)
else if closeCrossunderEma9
    strategy.entry("Short 9CrossClose", strategy.short, 2)
    strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset)
else if nineCrossover20
    strategy.close("Short 9Cross20")
    


Mais.