Algoritmos genéticos vs. busca simples no otimizador do MetaTrader 4

Andrey Khatimlianskii | 18 fevereiro, 2016


1. O que são algoritmos genéticos?

A plataforma MetaTrader 4 agora oferece algoritmos genéticos para a otimização das entradas dos Expert Advisors. Eles reduzem significativamente o tempo de otimização sem causar qualquer invalidação significativa dos testes. O seu princípio de operação é descrito no artigo chamado Algoritmos genéticos: Matemática em maiores detalhes.

Este artigo trata da otimização das entradas dos EAs através do uso de algoritmos genéticos em comparação com os resultados obtidos pelo uso da busca direta e completa por valores de parâmetro.

2. O Expert Advisor

Para realizar os meus experimentos, eu alterei ligeiramente o EA chamado CrossMACD que você deve conhecer do artigo chamado Gerenciamento de pedidos - É simples:

  • Adicionei StopLoss e TakeProfit às posições colocadas.
  • Adicionei Trailing Stop.
  • Usei o parâmetro OpenLuft para filtrar sinais: Agora o sinal chegará caso a linha zero seja cruzada a uma certa quantidade de pontos (com a precisão de até uma casa decimal).
  • Adicionei o parâmetro CloseLuft no intuito de filtrar de modo semelhante os sinais de fechamento.
  • Coloquei, em variáveis externas, os períodos das médias móveis lenta e rápida, usadas para cálculos de MACD.

Agora ele é um Expert Advisor praticamente completo. Será conveniente otimizá-lo e utilizá-lo em transações. Você pode fazer o download do EA CrossMACD_DeLuxe.mq4 ao seu PC e testá-lo de forma independente.

3. Otimização

Agora nós podemos começar a otimizar o EA. Três testes serão conduzidos, com quantidades diferentes de buscas de otimização. Isso nos ajudará a comparar os lucros obtidos através do uso de algoritmos genéticos em várias situações.

Após cada teste, eu irei remover o cache do verificador para que os testes subsequentes não utilizem combinações já encontradas. Isso só é necessário para tornar o experimento mais preciso. Normalmente, o cache automático de resultados simplesmente melhora a otimização repetida.

De modo a comparar os resultados, a otimização com o uso de algoritmos genéticos será feita duas vezes: uma primeira vez para encontrar o lucro máximo (Lucro), e uma segunda vez para encontrar o fator de lucro mais alto (Fator de lucro). Em seguida, os três melhores resultados de ambos métodos de otimização serão apresentados na tabela do relatório resumido, organizados pelas colunas indicadas.

A otimização é puramente experimental. Este artigo não tem como objetivo encontrar entradas que realmente trariam os maiores lucros.

Teste 1

  • símbolo do gráfico – EURUSD;
  • cronograma do gráfico – Н1;
  • período de teste – 2 anos;
  • modelagem – "Apenas preços abertos";
  • entradas nas quais foram feitas buscas:

Nome da variável

Valor de início

Passo

Valor final

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

5.

50

CloseLuft

0

5.

50

Número de buscas

234256

Devemos notar que, quando algoritmos genéticos forem utilizados, o tempo previsto de otimização é aproximadamente igual ao da otimização através do uso de entradas diretas de busca. A diferença é que um algoritmo genético exclui continuamente combinações que seriam indubitavelmente mal sucedidas e, dessa forma, reduz em várias vezes a quantidade de testes necessários (talvez várias dezenas, centenas ou milhares de vezes). É por isso que você não deveria focar no tempo previsto de otimização ao usar algoritmos genéticos. O tempo de otimização real sempre será mais curto:

Busca direta

Algoritmo genético

Como você pode ver, a otimização através do uso de algoritmos genéticos levou menos de quatro minutos, ao invés das cinco horas e meia esperadas.



O diagrama de otimização com algoritmos genéticos também difere daquele com busca direta. Como más combinações já foram excluídas, os testes subsequentes são conduzidos com combinações de entradas que são mais lucrativas por padrão. É por isso que o diagrama de balanço ascende:




Vamos considerar os resultados de ambos métodos de otimização em maiores detalhes.

Tabela de resultados:


Busca direta

Algoritmo genético

Tempo total de otimização

4 h 13 min 28 s

3 min 50 s


SL

TP

TS

Open Luft

Close Luft

Lucro

SL

TP

TS

Open Luft

Close Luft

Lucro

1

70

140

0

20

30

1248,08

70

140

0

20

30

1248,08

2

70

140

0

20

35

1220,06

70

140

0

20

35

1220,06

3

70

150

0

20

30

1176,54

70

150

0

20

30

1176,54


SL

TP

TS

Open Luft

Close Luft

Fator de lucro

SL

TP

TS

Open Luft

Close Luft

Fator de lucro

1

100

50

40

50

5.

4,72

0

50

40

50

5.

4,72

2

90

50

40

50

5.

4,72

90

50

40

50

5.

4,72

3

80

50

40

50

5.

4,72

80

50

40

50

0

4,72

Como você pode ver na tabela, a otimização através do uso de algoritmos genéticos é algumas dezenas de vezes mais rápida! Os resultados são praticamente os mesmos. Há vários resultados com lucro máximo de 4,72, e é por isso que diferentes combinações de entradas são registradas, mas isso não é muito importante.

Agora vamos tentar reduzir a quantidade de buscas, mas aumentar o tempo de teste. Para isso, vamos usar o modelo "todos os ticks".

Teste 2

  • símbolo do gráfico – EURUSD;
  • cronograma do gráfico – Н1;
  • período de teste – 2 anos;
  • modelagem – "todos os ticks";
  • entradas nas quais foram feitas buscas:

Nome da variável

Valor de início

Passo

Valor de fim

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

10

50

Número de buscas

11 616

Tabela de resultados:


Busca direta

Algoritmo genético

Tempo total de otimização

32 h 32 min 37 s

1 h 18 min 51 s


SL

TP

TS

Open Luft

Lucro

SL

TP

TS

Open Luft

Lucro

1

50

0

0

20

1137,89

50

0

0

20

1137,89

2

70

0

0

20

1097,87

70

0

0

20

1097,87

3

60

0

0

20

1019,95

60

0

0

20

1019,95


SL

TP

TS

Open Luft

Fator de lucro

SL

TP

TS

Open Luft

Fator de lucro

1

50

90

60

50

4,65

50

90

60

50

4,65

2

50

140

60

50

4,59

50

140

60

50

4,59

3

100

90

60

50

4,46

70

90

60

50

4,46

Em relação a esta quantidade de buscas, a taxa de otimização difere em 25 vezes, o que também não é ruim. Os resultados coincidem praticamente 100%, a única diferença está no valor de StopLoss na terceira passagem. O fator de lucro permanece máximo.

Agora vamos tentar aumentar a quantidade de buscas, e reduzir o tempo de teste. Para isso, vamos usar o modelo "pontos de controle".

Teste 3

  • símbolo do gráfico – EURUSD;
  • cronograma do gráfico – Н1;
  • período de teste – 2 anos;
  • modelagem – "pontos de controle";
  • entradas nas quais foram feitas buscas:

Nome da variável

Valor de início

Passo

Valor final

StopLoss

0

10

100

OpenLuft

0

5.

50

CloseLuft

0

5.

50

Número de buscas

1 331

Tabela de resultados:


Busca direta

Algoritmo genético

Tempo total de otimização

33 min 25 s

31 min 55 s


SL

Open Luft

Close Luft

Lucro

SL

Open Luft

Close Luft

Lucro

1

0

0

45

1078,03

0

0

45

1078,03

2

70

20

15

1063,94

70

20

15

1063,94

3

70

20

25

1020,19

70

20

25

1020,19


SL

Open Luft

Close Luft

Fator de lucro

SL

Open Luft

Close Luft

Fator de lucro

1

80

50

15

2,73

80

50

15

2,73

2

70

50

15

2,73

70

50

15

2,73

3

90

50

15

2,65

90

50

15

2,65

A situação mudou. Os períodos de otimização coincidem (um erro insignificante é admissível), e os resultados são idênticos. Isso pode ser explicado pelo fato de que a otimização consistiu em apenas 1331 buscas, e essa quantidade de passagens simplesmente não é suficiente para o uso de algoritmos genéticos. Eles não tem tempo de "ganhar velocidade". A otimização é mais rápida devido à exclusão de combinações indubitavelmente mal sucedidas, mas em uma quantidade de combinações como a supracitada, os algoritmos genéticos não são capazes de definir quais "pais" (combinações de entradas) geram más "proles". Portanto, não faz sentido usá-los.


4. Conclusões

Algoritmos genéticos são uma adição positiva ao otimizador de estratégias do MT 4. A otimização é acentuada dramaticamente caso a quantidade de buscas for grande, e os resultados coincidem com aqueles obtidos através da otimização normal.

Agora não faz sentido usar a busca completa em entradas. Algoritmos genéticos encontrarão o melhor resultado mais rapidamente e com a mesma eficiência.

5. Epílogo

Após ter escrito o artigo, eu saciei a minha curiosidade e inicializei a otimização do CrossMACD_DeLuxe em todas as entradas. A quantidade de combinações foi de mais de cem milhões (103 306 896). A otimização através do uso de algoritmos genéticos consumiu apenas 17 horas, enquanto que a otimização através do uso de buscas em todas as entradas exigiria aproximadamente 35 anos (301 223 horas).

Você pode tirar as suas próprias conclusões.