Discussão do artigo "Reimaginando Estratégias Clássicas (Parte 13): Minimizando o Atraso em Cruzamentos de Médias Móveis"

 

Novo artigo Reimaginando Estratégias Clássicas (Parte 13): Minimizando o Atraso em Cruzamentos de Médias Móveis foi publicado:

Os cruzamentos de médias móveis são amplamente conhecidos pelos traders em nossa comunidade, e ainda assim o núcleo da estratégia mudou muito pouco desde sua criação. Nesta discussão, apresentaremos um leve ajuste à estratégia original, que busca minimizar o atraso presente na estratégia de negociação. Todos os fãs da estratégia original podem considerar revisar a estratégia de acordo com os insights que discutiremos hoje. Ao usar 2 médias móveis com o mesmo período, reduzimos consideravelmente o atraso na estratégia de negociação, sem violar os princípios fundamentais da estratégia.

Para apreciarmos a relevância de nossa discussão de hoje, primeiro estabeleceremos um benchmark criado pela estratégia tradicional de cruzamento. Em seguida, compararemos o desempenho legado com o que podemos alcançar usando nossa versão reimaginada da estratégia.

Selecionei o par EURUSD para nossa discussão de hoje. O EURUSD é o par de moedas mais negociado do mundo. É significativamente mais volátil do que a maioria dos pares de moedas e geralmente não é uma boa escolha para estratégias simples baseadas em cruzamentos. Como já discutimos anteriormente, focaremos no período diário. Faremos o backtest de nossa estratégia em aproximadamente 4 anos de dados históricos, de 1º de janeiro de 2020 até 24 de dezembro de 2024; o período do backtest está destacado abaixo na Fig. 1.

Fig 1: Visualizando nosso período de backtest de 4 anos do EURUSD em nosso terminal MetaTrader 5 usando o período Mensal

Embora estratégias tradicionais de cruzamento sejam intuitivas e fundamentadas em princípios razoavelmente sólidos, essas estratégias frequentemente exigem otimizações intermináveis para garantir eficácia. Além disso, os “períodos certos” para usar nos indicadores lento e rápido não são imediatamente óbvios e podem mudar drasticamente. 


Autor: Gamuchirai Zororo Ndawana

 
Obrigado pelo código e pelas ideias, gostei da forma como você estruturou o código. Você me apresentou o tipo de dados Vector, que eu nunca tinha usado antes.
  vector atr_mean;
      atr_mean.CopyIndicatorBuffer(atr_handler,0,0,90); atr_mean.Mean())
 
linfo2 #:
Obrigado pelo código e pelas ideias, gostei da forma como você estruturou o código. Você me apresentou o tipo de dados Vector, que eu nunca tinha usado antes.
Obrigado, Niel, meu objetivo é combinar simplicidade com rigor técnico. É bom saber que isso está valendo a pena.

E, sim, a classe de vetor é um divisor de águas, pois ela realmente oferece mais funcionalidades do que as que usamos no dia a dia.

Estou realmente ansioso para aprender a usar a classe Matrix, pois ela nos permite criar modelos lineares em apenas uma chamada de função.
 
Muito obrigado por essa maravilhosa forma de estruturação de código. Como iniciante, este artigo levou meu aprendizado longe. Mais graxa em seu cotovelo. Deus o abençoe por mim. Muito obrigado.