English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
preview
Analisando as razões pelas quais alguns EAs fracassam

Analisando as razões pelas quais alguns EAs fracassam

MetaTrader 5Experts | 22 junho 2022, 09:49
775 0
Richard Poster
Richard Poster

Introdução

Os robôs de negociação ou EAs podem funcionar bem durante meses ou, inclusive, vários anos, mas sempre há períodos em que o desempenho se deteriora. Assim, os Expert Advisors raramente mostram lucros estáveis por um longo período de tempo, p. ex. dez anos. E visto que o histórico do EA tem períodos de desempenho desfavoráveis, pode-se esperar que ele tenha uma boa performance no futuro?

A esse respeito, surgem duas perguntas: o que muda nessas séries temporais que influencia tanto o trabalho do robô de negociação? Existe um indicador técnico que possa prever os períodos de sucesso e fracasso do EA? Não haveria nenhum valor para esse tipo de indicador!


Cruzamento de média móvel

Utilizamos dados sobre moedas para um período de 15 minutos distribuídos ao longo de dezesseis anos e a estratégia de teste cruzamento de médias móveis (Moving Average Crossover, MAC) para nossa análise. A estratégia MAC abrirá negociações com base em sinais de médias móveis simples (SMA): um sinal de compra ocorre quando uma SMA rápida cruza uma lenta de cima e um sinal de venda ocorre quando uma SMA rápida cruza uma lenta de baixo. A estratégia MAC deve servir como uma boa base de teste para nossa análise. Os principais parâmetros da estratégia MAC são períodos de SMA rápida e lenta. Em nossa análise, o período de SMA rápida será de 1 a 4, e o período de SMA lenta será de 10 a 150. Os valores serão fixados durante todo o período de testes.

A figura 1 mostra o desempenho do sistema de cruzamento SMA (SMA Crossover) aplicado no EURUSD a partir de janeiro de 2006 até dezembro de 2021. Com parâmetros de período otimizados SMA 2 (rápida) e 80 (lenta), o EA mostra lucros em alguns períodos e resultados negativos em outros. O período de janeiro de 2008 a junho de 2013 acabou sendo um período de crescimento constante dos lucros. A figura 2 mostra o mesmo sistema de cruzamento SMA aplicado no GBPUSD e com o mesmo intervalo. Os valores do período otimizado são 1 para a SMA rápida 80 para a SMA lenta. O gráfico do GBPUSD mostra apenas curtos períodos de lucros.

Fig_1_EURUSD_SMACross

 Fig. 1. Lucro da SMA Cross aplicada no EURUSD (0,1 lotes)


     

Fig_2_GBPUSD_SMACross

  Fig. 2. Lucro da SMA Cross aplicada no GBPUSD (0,1 lotes)

Se olharmos para a mudança no comportamento ao longo do tempo nas Fig. 1 e 2, podemos analisar o comportamento dos indicadores técnicos convencionais e determinar se existe uma relação entre o desempenho dos indicadores técnicos ao longo do tempo e a mudança na rentabilidade da estratégia de cruzamento de média móvel. 


O comportamento dos indicadores técnicos tradicionais

Podemos estudar vários indicadores técnicos padrão e ver se eles se comportam de forma diferente durante períodos de resultados positivos e negativos. Fig. 3 mostra o indicador mensal da faixa de média verdadeira (ATR) durante um período de dezesseis anos para o EURUSD. O indicador ATR mede a volatilidade do par de moedas. Existe alguma dependência de tempo em seu comportamento, mas não coincide com as mudanças na rentabilidade na fig. 1. Curiosamente, a fig. 3 mostra extrema volatilidade devido às crises econômicas no final de 2008 e depois no início de 2020. A partir disto, podemos concluir que o uso de limites de variação de preço absoluto para a lógica do sinal não é adequado e que um valor ATR suavizado deve ser incluído. Outro indicador técnico frequentemente utilizado é o Bollinger Bands. O indicador é influenciado tanto pela volatilidade quanto pela força da tendência. Surpreendentemente, seu comportamento a longo prazo em um período de tempo mensal, mostrado na Figura 4, é quase exatamente o mesmo que o do indicador ATR. Como o ATR, o comportamento do Bollinger Bands não coincide com períodos de resultados positivos e negativos sobre os dados EURUSD na fig. 1. Resultados semelhantes foram obtidos com base nos dados do GBPUSD. A volatilidade a longo prazo não explica o comportamento descrito nas fig. 1 e 2.


Fig_3_ATRvsMth

Fig. 3. ATR do EURUSD, média mensal

FIg_4_BBSpreadVsMth

Fig. 4. Bollinger Band do EURUSD, média mensal


A função de autocorrelação como um indicador

Ao contrário dos indicadores ATR e Bollinger, a função de autocorrelação (ACF) não depende da volatilidade. ACF é uma ferramenta útil para encontrar padrões em dados. Ela mede a correlação dos elementos da série temporal com elementos dentro da mesma série, mas com um atraso pelo valor de deslocamento. Se os dados apresentarem alguma tendência com pequeno atraso, o ACF terá valores positivos. Em nossa análise, o elemento de série temporal Yi é definido como (preço de fechamento - preço de abertura) da barra i.

Para uma série temporal de N elementos Yi , i = 1...N, o ACF é definido como:

ACF_EquationV2

A função de autocorrelação para uma série de dados de preço é muito diferente da autocorrelação de uma série de mudanças de preço de barra para barra. Por exemplo, para a série {1,2,3..14}, o ACF é 0,786. Para uma série de diferenças entre elementos sucessivos desta matriz, o ACF será próximo de zero (supondo que os valores tenham pouco ruído para que não haja divisão por zero).

O código abaixo mostra o cálculo do ACF:

 double GetAtCorrVal(double &ClsOpn[],int CorrPer, int LagPer,int joff ) {
   double corr;
   double AIn[],BIn[];
   double XMean,XNum,XDen;
   int jj;
   ArrayResize(AIn,CorrPer);
   ArrayResize(BIn,CorrPer);
   XMean = 0.;
   XNum = 0.;
   XDen = 0.;
   corr = 0.;
   if(CorrPer<2)
    {
     Print("No AutoCorr Processing Allowed ");
     return(corr);
    }
   // mean
   for(jj=0;jj<CorrPer;jj++)
    {
     XMean +=ClsOpn[jj+joff];
    }
   XMean = XMean/CorrPer;
  // variances
   for(jj=0;jj<CorrPer;jj++)
    {
     if(jj<(CorrPer-LagPer))
       XNum  += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+LagPer+joff]-XMean);
     XDen += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+joff]-XMean);
    }  
    if(XDen==0.)
     {
      corr = 0.;
     }
    else
    corr = XNum/XDen;
   return(corr);
  }
//----------------------------------------------------------------

  

A fig. 5 mostra a média mensal do ACF durante um período de 16 anos para os dados do EURUSD com um período de suavização de seis meses. Na fig. 1, o período de 2008 até o final de 2012 é lucrativo. A fig. 5 também mostra um valor ACF ligeiramente mais alto nesta faixa, sugerindo uma possível relação entre os retornos da estratégia MAC e o valor ACF.


Fig_5_EURUSD_ACFvsMth

Fig. 5. Função de autocorrelação, EURUSD, média mensal


Quanto aos dados do GBUISD, a fig. 6 mostra uma relação fraca entre a rentabilidade (fig. 2) e o valor do ACF.

Fig_6_GBPUSD_ACFvsMth


 Fig. 6. Função de autocorrelação, GBPUSD, média mensal

A função de autocorrelação pode ser usada como indicador (AutoCorr.mq5), mas a fig. 7 mostra que não é muito adequado para determinar a tendência.


Fig_7_EURUSD_ACFIindicator

Fig. 7. Indicador ACF, atraso igual a 1

Comportamento do ACF no tempo e estratégia cruzamento de SMA

Podemos obter mais informações analisando o comportamento do ACF imediatamente antes do ponto de cruzamento de SMA (Trigger ACF), bem como imediatamente após o ponto de cruzamento quando o negócio ainda está aberto (Trade ACF). Estes dois tipos de ACF (Trade ACF e Trigger ACF) têm propriedades diferentes. As figuras 8 e 9 mostram o ACF (ACF após a abertura) para dados do EURUSD e do GBPUSD. No testador de estratégia, podemos traçar valores ACF para negócios lucrativos e perdedores separadamente, em função do tempo. Ambos os gráficos mostram que o ACF de negócios lucrativos e perdedores divergem. A seção lucrativa Janeiro 2008-Junho 2013 na figura 1 (EURUSD) coincide aproximadamente com a seção da figura 8, que mostra uma diferença muito grande entre o ACF lucrativo e o ACF perdedor. Desde janeiro de 2018, já existe uma divergência muito pequena entre os valores ACF de negócios rentáveis e perdedores. Na figura 1, isto corresponde a um período de lucro estável e lateral.


Fig_8_EURUSD_TradeACF

  Fig. 8. ACF do EURUSD ativada pelo cruzamento de SMA


Fig_9_GBPUSD_TradeACF

Fig. 9. ACF do GBPUSD ativada pelo cruzamento de SMA

As fig. 10 e 11 mostram o gráfico Trigger ACF para dados do EURUSD e do GBPUSD. O objetivo desses dois gráficos é explorar se o valor Trigger ACF pode ser usado como um filtro em um EA para aumentar a lucratividade da estratégia de cruzamento de SMA. Em comparação com os dados do ACF aplicado nos negócios, há menos discrepância entre o lucro e a perda para os dados do Trigger ACF. Ou seja, o ACF pode não ser muito útil como filtro de sinal. No entanto, o valor do ACF permanece praticamente inalterado ao longo do tempo, indicando que um limite do ACF fixo pode ser usado como filtro de sinal de disparo. As curvas de lucro/perda se cruzam em grande medida, o que significa que existem seções em que os negócios não serão lucrativos.


Fig_10_EURUSD_TriggerCF

 FIg. 10. Trigger ACF aplicado no EURUSD com base no cruzamento de SMA


Fig_11_GBPUSD_TriggerACF

Fig. 11. Trigger ACF aplicado no GBPUSD com base no cruzamento de SMA


Filtro ACF para cruzamento de SMA

Apesar das pequenas diferenças entre lucros e perdas para o ACF (Fig. 10 e 11), se o requisito de limite de autocorrelação for adicionado ao «gatilho» de cruzamento de SMA, o retorno do EA melhorará significativamente em áreas de baixo retorno. As fig. 12 e 13 mostram a rentabilidade do Expert Advisor com um filtro ACF adicional, baseado em dados do EURUSD e do GBPUSD. Pode ser visto todo um período de 16 anos. Se compararmos a figuras 1 e 2 com as figuras 12 e 13, os resultados para o EURUSD e o GBPUSD melhoram significativamente com o limite de autocorrelação aplicado.


Fig_12_EURUSD_SMACrossCorr

Fig. 12. Cruzamento de SMA com filtro ACF aplicado no EURUSD

Fig_13_GBPUSD_SMACrossCorr

Fig. 13. Cruzamento de SMA com filtro ACF aplicado no GBPUSD


A fig. 14 é uma tabela que apresenta os resultados obtidos no testador de estratégia. Tanto o EURUSD quanto o GBPUSD têm uma melhora significativa. Em ambos os casos, o lucro total aumentou cerca de 50% quando o filtro foi ativado, e o lucro por negócio (PO) também aumentou significativamente.

Tipo de sinal

Número de negócios

Lucro $

(0,1 lotes)

Lucro/Prejuízo (PF)

Negócio lucrativo (PO)

Cruzamento de SMA no EURUSD

3160

5830

1.10

1,85

Cruzamento de SMA + ACF no EURUSD

1548

8511

1,33

5,50

Cruzamento de SMA no GBPUSD

3672

5352

1,07

1,46

Cruzamento de SMA + ACF no GBPUSD

3096

8317

1.13

2,69

Fig. 14. Tabela de resultados de testes com base em dados do EURUSD e do GBPUSD


Dependência do ACF em relação à SMA lenta para a estratégia de cruzamento de SMA


Também é interessante observar a dependência da função de autocorrelação média em relação à escolha do período de SMA lenta para negócios lucrativos e perdedores. Isto é mostrado na fig. 15 de acordo com EURUSD de M15. A estratégia de abertura não usa um limite de correlação. Sem levar em conta o valor do ACF, o período ideal da estratégia de média lenta para cruzamento de SMA acabou sendo 80. A fig. 15 mostra que a maior discrepância entre o ACF médio entre negócios lucrativos e perdedores ocorre durante períodos de SMA lentas entre 65 e 80. Depois, podemos usar as informações do ACF para determinar qual o período ideal de média lenta com base no valor de autocorrelação calculado no momento da abertura de negócio. 


Fig_15_AvgACVvsSlowPeriod

Fig.15. ACF médio vs período de SMA lenta sobre o EURUSD

Conclusão

A função de autocorrelação é um indicador útil que pode melhorar o desempenho de um EA. Melhora os resultados dos testes filtrando os períodos de baixo desempenho.

Em geral, os coeficientes de correlação, incluindo a função de autocorrelação, representam uma área de pesquisa bastante interessante quando se trata de melhorar o desempenho da negociação. Eles são imunes aos efeitos da volatilidade e são sensíveis aos padrões de preços, incluindo formação e reversão de tendências.



Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/3299

Arquivos anexados |
AutoCorr.mq5 (4.12 KB)
Conselhos de um programador profissional (Parte III): Registro de Logs. Conectando-se ao sistema Seq de coleta e análise de logs Conselhos de um programador profissional (Parte III): Registro de Logs. Conectando-se ao sistema Seq de coleta e análise de logs
Implementação da classe Logger para unificar e estruturar as mensagens que são impressas no log da guia Experts na caixa de ferramentas. Conexão com o sistema Seq de coleta e análise de logs. Monitoramento de mensagens de log online.
Tutorial DirectX (Parte I): Desenhando o primeiro triângulo Tutorial DirectX (Parte I): Desenhando o primeiro triângulo
Este é um artigo introdutório sobre o DirectX, que descreve as especificidades da operação com a API. Ele deve ajudar a entender a ordem em que seus componentes são inicializados. O artigo contém um exemplo de como escrever um script MQL5 que renderiza um triângulo usando o DirectX.
Como desenvolver um sistema de negociação baseado no indicador Envelopes Como desenvolver um sistema de negociação baseado no indicador Envelopes
Neste artigo, eu compartilharei com você um dos métodos de como negociar pelas bandas. Desta vez, nós consideraremos o indicador Envelopes e veremos como é fácil criar algumas estratégias baseadas no indicador Envelopes.
Usando a classe CCanvas em aplicativos MQL Usando a classe CCanvas em aplicativos MQL
Neste artigo falaremos sobre o uso da classe CCanvas em aplicações MQL, com uma descrição detalhada e exemplos, para que o usuário tenha uma compreensão básica de como usar esta ferramenta