English Русский 中文 Español Deutsch 日本語
Criando um EA gradador multiplataforma: testando um EA multimoeda

Criando um EA gradador multiplataforma: testando um EA multimoeda

MetaTrader 5Sistemas de negociação | 11 agosto 2020, 10:20
2 698 0
Roman Klymenko
Roman Klymenko

Introdução

Este artigo é uma espécie de continuação do ciclo de artigos sobre EAs gradadores:

Neste artigo, não criaremos ou aprimoraremos um EA. O EA multimoeda já está criado. Sua nova versão será anexada a este artigo, juntamente com os relatórios de teste e o arquivo SET usado para tal.

O objetivo principal deste artigo é testar como um EA baseado na média ou martingale funcionará num mercado para o qual não é destinado. Será que um EA que negocia apenas em Long pode sobreviver a uma queda de 3400 para 2200 do S&P 500? Ou seja, de mais de 30%.

Regras básicas do sistema de negociação

O sistema de negociação usado pelo EA seguirá as seguintes regras.

Mercado: todas as transações serão realizadas em ações da bolsa americana. A corretora, que será testada, fornece acesso a várias dezenas das ações mais populares. Vamos selecionar algumas delas para usá-las num EA multimoeda.

Direção de entrada: todas as posições serão abertas apenas em Long.

A escolha dessa direção é óbvia se olharmos no gráfico o valor da maioria das ações durante um longo período. Especialmente se pegarmos no período de 2010 aos últimos eventos de 2020. Por exemplo, demos uma olhada no gráfico semanal de ações da Microsoft:

Ações da Microsoft, gráfico semanal

Se não levarmos em conta a queda dos preços em março, a olho nu podemos ver que o preço das ações aumenta quase constantemente.

Ponto de entrada: abriremos uma posição com base nas leituras do indicador RSI. As leituras serão interpretadas de forma diferente dependendo do ativo. Em alguns ativos, entraremos quando o valor do RSI se tornar inferior a 30. E em outros, quando o valor RSI exceder 70. O desempenho de cada método variará dependendo de onde seja aplicado.

Número de passos da média: é extremamente perigoso usar uma média com um número ilimitado de passos. Afinal, se o preço do ativo se mover numa direção por muito tempo, então, com cada nova posição aberta, suas perdas aumentarão como uma avalanche.

Por este motivo, a grade de cada instrumento consistirá em 4 posições abertas (passos) no máximo.

Ou seja, se a grade do instrumento consistir em 3 passos no máximo e o preço atingir o nível em que é necessário abrir o 4ª passo, neste nível - em vez de abrir uma nova posição - todas as posições do instrumento serão fechadas. Desse modo, negociaremos usando a média, mas, ao mesmo tempo, stop-loss.

Método de média: é possível calcular a média de uma posição existente (ou seja, abrir uma posição adicional a um preço inferior) tanto com um lote fixo quanto aumentando o lote a cada nova abertura de posição.

Se usarmos algum tipo de martingale para aumentar o lote, quando ocorrer o stop loss as perdas serão muito maiores do que o lucro que teríamos feito com o take-profit. Por esse motivo, é psicologicamente difícil usar o martingale. Quando você vê que todo o lucro feito pelo EA nas últimas duas semanas desaparece após um stop-loss é um pouco frustrante. E dá vontade de desistir completamente de stop-loss.

Por essas razões, um Expert Advisor multimoeda selecionará, em primeiro lugar, os instrumentos que mostram bons resultados quando calculados com um lote fixo.

Se for usado martingale, o lote não aumentará exponencialmente, mas se tornará maior a cada nova etapa (com base no tamanho do lote inicial).

Como exemplo, vejamos uma pequena tabela:

Tipo de média
Número de passos da cadeia
 Perdas por stop-loss
 Fixo
 2
 3
 Fixo  3
 6
 Fixo  4
 10
 Aumento com base no valor inicial do lote
 2
 4
 Aumento com base no valor inicial do lote  3
 10
 Aumento com base no valor inicial do lote  4  20

As perdas em caso de stop-loss no passo correspondente da cadeia são indicadas no número de passos. Ou seja, se o tamanho do passo for 7 pontos, as perdas com média fixa no passo 4 da cadeia serão 10*7=70 pontos.

Assim, se o volume aumentar pelo tamanho do lote inicial, não poderemos mais utilizar mais de 3 passos na cadeia. Já no 4º passo, as perdas por stop-loss se tornam muito grandes.

Tamanho da grade e tamanho de take-profit: tanto o tamanho da grade (a distância em pontos entre duas posições abertas) e o tamanho do take profit serão selecionados durante o processo de otimização. Para não perder muito quando ocorre o stop-loss, esses parâmetros serão selecionados de forma que a perda por stop-loss seja igual a 1-3 ganhos por take-profit.

Período de negociação e de teste: como podemos ver no gráfico da maioria dos instrumentos do mercado de ações, o preço cresce continuamente por um longo período. No entanto, o importante aqui é que é durante esse período é prolongado. Este sistema de negociação é projetado para um período de pelo menos 1 ano. O período ideal é de 4 anos. Se você decidir usá-lo, é melhor se concentrar em exatamente 4 anos.

Todos os testes e otimizações foram realizados com base no período de 4 anos: de janeiro de 2016 a janeiro de 2020. Adicionalmente, usaremos o período até abril de 2020 para testar o conjunto de ferramentas resultante. Ou seja, durante a queda das bolsas.

Lote usado para negociar: todos os testes e otimizações serão realizados usando um lote fixo. Cada instrumento terá um tamanho de lote próprio.

O EA multimoeda resultante será testado adicionalmente usando lote de negociação que aumenta gradualmente. Ou seja, quando o saldo dobre, o lote também dobrará, e assim por diante até que o lote seja igual a 25 iniciais.

O EA usa vários parâmetros de entrada, para aumentar o lote. Esses parâmetros indicam o tamanho de depósito que ao ser atingido deve desencadear o aumento de lote (veja a figura abaixo).

Parâmetros de entrada para aumentar o lote de trabalho

Resultado: em geral, essas são todas as regras que compõem nosso sistema de negociação. É hora de verificar instrumento por instrumento o desempenho.


Parâmetros de otimização em instrumentos individuais

Acho que não faz sentido descrever como foi realizada a otimização para cada instrumento, pois esse não é o objetivo deste artigo.

A única coisa que podemos dizer sobre a otimização é que ela foi realizada no modo Cada tick baseado em dados reais.

Os resultados da otimização foram classificados pelo fator de recuperação. Mais precisamente, se como resultado do teste for obtido lucro, será retornado o valor do fator de recuperação. Se ocorrer uma perda, em vez do fator de recuperação será exibida a porcentagem em que o saldo diminuiu (com um sinal negativo). Neste caso, se como resultado do trabalho do EA, forem feitas menos de 30 transações, será retornado 0, uma vez que este é um número de transações muito pequeno para obter estatísticas objetivas.

Não existe tal método de classificação entre as opções padrão. Esta opção está integrada no próprio EA. Para usá-la, na guia Configurações do testador de estratégia devemos escolher Critério personalizado máximo (veja a figura abaixo).

Critério personalizado máximo

O teste 'forward' também foi usado durante a otimização e o teste de instrumentos individuais. Para nosso período de 4 anos, a opção de teste 'forward' ideal é 1/4. Ou seja, os primeiros 3 anos são usados para backtesting e o último ano para forward testing.

Instrumentos selecionados para o EA multimoeda

Bem, vamos passar para os próprios resultados do teste. Ou seja, vamos olhar os gráficos de saldo desses instrumentos que eventualmente se tornaram parte de nosso EA multimoeda. Haverá 11 desses instrumentos. Em primeiro lugar, nosso Expert Advisor simplesmente não é projetado para mais instrumentos. Em segundo lugar, é muito difícil selecionar mais instrumentos cuja abertura de posições não se correlacionariam entre si.

AAPL:

AAPL, 2016-2020

BRK.B:

BRK.B, 2016-2020

PEP:

PEP, 2016-2020

WMT:

WMT, 2016-2020

CVX:

CVX, 2016-2020

EBAY:

EBAY, 2016-2020

MSFT:

MSFT, 2016-2020

DIS:

DIS, 2016-2020

JPM:

JPM, 2016-2020

JNJ:

JNJ, 2016-2020

S&P500:

S&P 500, 2016-2020

Como você deve entender, a grande queda em direção à parte inferior do gráfico em cada captura de tela não é realmente uma queda. Ela é a transição do backtesting para o forward testing. Afinal, o teste 'forward' começa não com o valor ganho após o backtest, mas, sim, com o valor inicial do depósito.

Além disso, vamos dar uma olhada na tabela de resultados de teste desses instrumentos:

 Símbolo Fator de recuperação (back/forward)
Rentabilidade (back/forward)  Max. rebaixamento (back/forward) Trades (back/forward)
 AAPL
 7.25 / 11.04
 3.93 / 37.99
 49.41 / 30.36
 134 / 58
 BRK.B  7.41 / 1.79
 3.11 / 2.01
 15.06 / 14.96
 70 / 29
 PEP  5.2 / 3.26
 2.49 / 5.42
 13.96 / 10.42
 55 / 15
 WMT  5.9 / 3.19
 2.51 / 2.56
 25.52 / 20.7
 67 / 25
 CVX  6.51 / 3.25
 3.03 / 4.26
 19.17 / 14.82
 78 / 24
 EBAY  4.57 / 1.95
 8.87 / 8.85
 20.7 / 12.96
 43 / 12
 MSFT  7.41 / 3.13
 6.69 / 5.26
 16 / 20.93
 72 / 44
 DIS  3.97 / 1.19
 2.32 / 1.84
 26.97 / 32.02
 101 / 49
 JPM  4.34 / 3.07
 1.75 / 2.81
 12.69 / 10.86
 164 / 54
 JNJ  6.24 / 1.23
 5.66 / 2.31
 28.94 / 44.36
 68 / 29
 S&P500  2.55 / 1.98
 1.65 / 1.57
 17.81 / 21.18
 85 / 91

Todos os relatórios do testador de estratégia estão anexados a este artigo.

Acredita-se que o teste 'forward' permite obter resultados mais precisos e também evita que o EA seja otimizado excessivamente. Embora não concorde com esse ponto de vista, mas obedecendo a maioria, usei esse tipo de teste na otimização.

Na minha opinião, o teste 'forward' tem apenas um benefício. Ele pode ser usado para testar o EA com base em dois períodos ao mesmo tempo, usando dois pontos de entrada iniciais separados. Ou seja, ele economiza tempo.

No restante, o teste 'forward' apenas complica a interpretação dos resultados.

Por exemplo, não podemos obter o fator de recuperação geral para todo o período de teste simplesmente adicionando o fator de recuperação para o backtest com o fator para o teste 'forward'. Afinal, nessas fases, o rebaixamento máximo geralmente é diferente. E precisamos do rebaixamento máximo total para todo o período para determinar quer o volume inicial de transações quer o depósito mínimo. Ou seja, teremos que considerar o maior rebaixamento máximo como rebaixamento máximo para todo o período. Isso torna errado o fator de recuperação calculado na fase de menor rebaixamento.

Bem, se pudermos olhar para o gráfico de saldo, é simplesmente impossível reotimizar o EA, mesmo sem testes 'forward'. Se o gráfico de saldo estiver estável durante todo o período de teste, isso significa que foram selecionadas as devidas configurações. Se no início do gráfico de saldo for obtido o crescimento base e, no lado direito do gráfico, o tamanho do depósito ficar parado ou cair, será natural que essas configurações sejam inúteis.

Testando um EA multimoeda antes da queda do mercado

Qual será o resultado ao combinar os instrumentos listados num Expert Advisor? O EA resultante terá um desempenho melhor do que cada instrumento separadamente? Não hesitaremos, e olharemos imediatamente para o gráfico de saldo e os resultados do teste ao negociar com um lote fixo:

Gráfico de saldo ao negociar 11 instrumentos simultaneamente (lote fixo)

Acho que, mesmo a olho nu, podemos ver o nível de suavização do quanto o gráfico de saldo em comparação instrumentos individuais. Mas não confiemos em nossos olhos, prestemos atenção à tabela de resultados de teste.

 Fator de recuperação  Rentabilidade Lucro líquido
 Max. rebaixamento Trades
 20.56  2.94
 1 992
 96.91
 1 308

No entanto, mesmo a tabela de resultados de teste mostra todos os benefícios da diversificação.

O depósito inicial durante o teste era de $ 200. Após 4 anos, ganhamos $ 1 992. Ou seja, ao usar um lote fixo, o lucro de 4 anos acabou sendo quase 900%.

Parece muito bom. Porém, na realidade, as coisas estão um pouco piores. Até porque o depósito inicial de $ 200 é muito pequeno.

O rebaixamento máximo foi de $ 97. Mas isso não significa que, para negociar usando este sistema de negociação, é suficiente ter $ 97 como depósito. Também precisamos levar em consideração o tamanho da margem reservada para manter as posições abertas.

Após o teste, este Expert Advisor exibe na guia Diário informações sobre a margem máxima alcançada durante o teste. Em nosso caso, ela foi de $ 190. Ou seja, para uma negociação confortável, precisamos ter um depósito de pelo menos 97 + 190 = 280 dólares. Vamos arredondar para $ 300. Isso significa que o lucro de 4 anos é de quase 600%.

Lucramos durante 4 anos ao negociar com um lote fixo. Mas que acontecerá se aumentarmos o lote com cada aumento no saldo pelo tamanho do valor inicial que estava no depósito? O Expert Advisor permite aumentar o lote inicial em 25 vezes no máximo. Mas acho que esse aumento será suficiente para os testes:

Gráfico de saldo ao negociar 11 instrumentos de uma vez (lote crescente)

Como você pode ver, o gráfico não é tão bom agora. Mas, pelo menos, tem algum lucro final. De 200 (bem, 300) dólares, o depósito aumentou para 20 701 dólares. Ou seja, quase 7 000% do lucro em 4 anos!

Nesse caso, o lote máximo começa a ser aplicado com um depósito de $ 7 100. Portanto, se você não tem medo, pode aumentar ainda mais o tamanho do lote.

Testando um EA multimoeda com base num período de mercados em queda

Tudo isso é bom. Mas como proceder quanto à queda nos mercados?

Bem, chegamos ao tópico principal deste artigo. Desta vez, o período de teste será de 01.01.2016 a 01.04.2020.

Resultados do teste de EA multimoeda com as mesmas configurações que ao negociar usando lote fixo:

Gráfico de saldo ao negociar 11 instrumentos de uma vez (lote fixo)

À primeira vista, a queda é quase imperceptível. Vamos agora dar uma olhada nos resultados do teste:

 Fator de recuperação  Rentabilidade Lucro líquido
 Max. rebaixamento Trades
 13.91  2.54
 1 971
 141.69
 1 400

Claro que existe uma diferença. O fator de recuperação diminuiu em 7. O rebaixamento máximo aumentou 1,5 vezes. O lucro permaneceu praticamente inalterado. Ou seja, acabamos perdendo o que ganhamos de janeiro até o final de fevereiro. E certamente não é uma queda de 30% na saldo da conta.

Agora vamos olhar os resultados do teste com o lote que aumenta gradualmente em 25 vezes:

Gráfico de saldo ao negociar 11 instrumentos de uma vez (lote crescente)

Em princípio, mesmo neste caso, a queda não é tão significativa. O lucro é de $ 20 180, cerca de $ 600 a menos do que no início de 2020.

Resumindo

Em geral, espero ter sido capaz de provar a você que mesmo os sistemas de negociação baseados na média e no martingale não são perigosos. Claro, apenas se a sua média tiver limites. Ou seja, mesmo com média e martingale, você trabalha com stop-loss.

Fim do artigo

A título de conclusão, gostaria de chamar a atenção para o facto de se terem passado mais de 10 anos desde a última queda significativa dos mercados (2008). Ao longo desse tempo, os mercados têm crescido de forma constante. E quem sabe se os mercados continuarão a crescer dez anos após o outono de 2020? Ou seja, o momento ideal para sistemas de negociação como o descrito neste artigo.

Quanto a mim, com certeza iniciarei um robô de negociação usando este sistema numa conta real. Você também pode fazer isso, já que o próprio EA está anexado ao artigo.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/7777

Arquivos anexados |
article_files.zip (4164.36 KB)
griderKatMultiEA.ex4 (482.52 KB)
griderKatMultiEA.ex5 (615.21 KB)
griderKatMultiEA.mq4 (410.15 KB)
griderKatMultiEA.mq5 (410.15 KB)
Otimização Walk Forward Contínua (Parte 7): Vinculação da parte lógica do Otimizador Automático com a parte gráfica e o controle do mesmo no programa Otimização Walk Forward Contínua (Parte 7): Vinculação da parte lógica do Otimizador Automático com a parte gráfica e o controle do mesmo no programa
Este artigo descreve a vinculação da parte gráfica do programa do otimizador automático com a sua parte lógica. Ele considera o processo de inicialização da otimização, pelo clique de um botão até o redirecionamento da tarefa ao gerenciador de otimização.
Trabalhando com séries temporais na biblioteca DoEasy (Parte 40): indicadores com base na biblioteca - atualização de dados em tempo real Trabalhando com séries temporais na biblioteca DoEasy (Parte 40): indicadores com base na biblioteca - atualização de dados em tempo real
Neste artigo, consideraremos a criação de um indicador multiperíodo simples com base na biblioteca DoEasy. Modificaremos as classes de séries temporais para receber dados de qualquer timeframe e exibi-los no período gráfico atual.
Monitoramento de sinais de negociação multimoeda (Parte 5): Sinais compostos Monitoramento de sinais de negociação multimoeda (Parte 5): Sinais compostos
No quinto artigo relacionado à criação de um monitor de sinal de negociação, nós consideraremos os sinais compostos e implementaremos a funcionalidade necessária. Em versões anteriores, nós usamos os sinais simples, como o RSI, WPR e CCI, e também introduzimos a possibilidade de usar os indicadores personalizados.
Otimização Walk Forward contínua (parte 6): Lógica e estrutura do otimizador automático Otimização Walk Forward contínua (parte 6): Lógica e estrutura do otimizador automático
Anteriormente, nós consideramos a criação da otimização walk forward automática. Desta vez, nós prosseguiremos para a estrutura interna da ferramenta de otimização automática. O artigo será útil para todos aqueles que desejam continuar trabalhando com o projeto criado e modificá-lo, bem como para aqueles que desejam entender a lógica do programa. O artigo atual contém diagramas UML que apresentam a estrutura interna do projeto e os relacionamentos entre seus objetos. Ele também descreve o processo de início da otimização, mas não contém a descrição do processo de implementação do otimizador.