English Русский 中文 Español Deutsch 日本語
Criando um EA gradador multiplataforma (Parte II): grade dentro de uma faixa na direção da tendência

Criando um EA gradador multiplataforma (Parte II): grade dentro de uma faixa na direção da tendência

MetaTrader 5Negociação | 1 agosto 2019, 13:36
1 530 0
Roman Klymenko
Roman Klymenko

Introdução

No artigo anterior, abordamos como criar um gradador simples para trabalhar tanto no MetaTrader 4 como no MetaTrader 5. Uma característica de nosso gradador foi que após a colocação da grade, ele não adicionava novas ordens até que a grade atual fosse fechada com lucro ou perda total máxima.

Como mostraram os testes, nosso gradador tem sido lucrativo desde 2018. No entanto, de 2014 a 2018, houve uma perda constante do depósito. Por esse motivo, é muito perigoso pô-lo a funcionar numa conta real. Neste artigo, tentaremos implementar um EA gradador usando um outro princípio, baseado numa nova ideia de negociação.

Desenvolvamos um sistema de negociação

A ideia principal do EA da primeira parte deste artigo estava baseada na esperança de que o preço se movesse com mais frequência numa determinada direção. Assim, mesmo se abríssemos várias ordens na direção errada, novas ordens abertas na direção certa poderiam compensar suas perdas. Dessa maneira, mais cedo ou mais tarde, alcançaríamos o lucro desejado para todas as ordens abertas. Para alcançar a concretização dessa ideia, colocamos uma grade de N ordens em Long sobre o preço atual e uma grade com o mesmo número de ordens em Sell sob o preço atual.

O teste posterior mostrou que quando o preço, primeiro, golpeou a ordem acima, depois, caiu e bateu na ordem abaixo, novamente sobeu, bateu na segunda e alcançou a terceira ordem acima, em seguida, outra vez caiu e bateu nas ordens, ativando, dessa maneira, todas ou quase todas as ordens em Long e em Short. Em traços gerais, esse tipo de situações acontecem com bastante frequência como para reduzir o lucro possível a nada. Por esse motivo, construir um sistema de negociação baseado nisso não é a melhor maneira de ganhar dinheiro.

Porém, considerando que essas situações são bastante frequentes e que muitas vezes o preço no mercado de moedas entra em determinada faixa, por que não usar precisamente isso em nosso benefício? Quer dizer, vamos continuar a colocar a grade em Long acima do preço atual e a grade em Sell abaixo dele. Mas, ao fazer isso, nosso EA terá duas mudanças importantes.

Em primeiro lugar, em vez de colocar take-profit em toda a cadeia de posições, faremos isso em cada posição. Além disso, também criaremos configurações, a fim de colocar stop-loss para cada ordem individual. No entanto, como os testes mostraram que o uso de stop-loss não ajuda a lucrar, não vamos usá-lo.

Em segundo lugar, se o preço atual se afastar do anterior, suplementaremos constantemente a grade colocada antes com novas ordens limitadas. Além disso, serão removidas as ordens limitadas das quais o preço se afastar muito longe. Em outras palavras, se o preço se afastar - para cima - 1 incremento da grade, adicionaremos uma nova ordem limitada em Long acima do preço no final da grade atual, acrescentaremos outra ordem limitada em Short abaixo do preço atual e, depois, excluiremos a última das ordens limitadas em Short abaixo do preço atual. Assim, nossa grade acompanhará o preço do ativo.

O que isso nos dará? Durante uma tendência, vamos obter take-profit de ordens na direção da tendência. Se começar uma correção, vamos receber take-profit na direção da correção. Assim, se, num timeframe grande, o preço se mover dentro de uma faixa, poderemos coletar lucros sem importar em que sentido o preço se movimentar.

Parece bom. Tetemos verificar o que podemos fazer na prática.

Criemos uma versão clássica do EA

Ao contrário do primeiro artigo, neste artigo não consideraremos o código fonte do EA. Tanto o código fonte do EA quanto o EA compilado para MetaTrader 4 e para MetaTrader 5 serão anexados ao artigo. Se desejar, você pode ver como é implementado tudo. No entanto, neste artigo vamos abordar a construção do algoritmo, o raciocínio e, claro, os testes.

Distância entre as ordens da grade

Comecemos com a distância entre as ordens limitadas da grade. Todas as ordens limitadas devem ser colocadas à mesma distância umas das outras. Isso não será um problema se colocarmos toda a grade de uma vez só e não a editarmos quando o preço mudar. No entanto, nós temos uma grade flutuante, por assim dizer. E, adicionalmente, antes de colocar uma nova ordem limitada, precisamos determinar de alguma forma se já existe uma em determinado incremento da grade.

É simplesmente impossível verificar se existe uma ordem limitada segundo o mesmo preço, uma vez que uma ordem pode não ter exatamente o mesmo preço, por exemplo, alguns pontos mais ou menos. Se não levamos isso em conta, o EA pode posicionar centenas de ordens limitadas a preços relativamente iguais, trazendo prejuízo.

Para evitar esse problema, não especificaremos a distância entre ordens limitadas em pontos. Em vez disso, a distância entre os incrementos da grade será indicada pelo número de casas decimais do preço. O parâmetro Casas decimais para ordens limitadas será responsável por isso.

Caso o valor seja positivo, esse parâmetro indica o número de casas decimais em que serão posicionadas as ordens da grade. Por exemplo, um valor de 2 significa que a grade será colocada a cada 1/100 incrementos do preço. Por exemplo, se o preço atual for 1,1234, a grade em Long será colocada nos preços 1,13; 1,14; 1,15; ... e a grade em Short será colocada nos preços 1,11;1,10; 1,09; .... Quer dizer, em instrumentos de 4 e 5 algarismos (maioria de pares de moedas), a distância entre as ordens da grade será igual a 100 pontos.

Quando o preço é o mesmo e o número de casas decimais é 3, a grade será na terceira casa decimal:

  • em Long: 1,124; 1,125; 1,126; 1,127; …;
  • em Short: 1,122; 1,121; 1,120; 1,119; ….

Assim, a distância entre ordens é de 10 pontos. Se o valor do parâmetro foi igual 0, a grade será colocada com um incremento de 1. Por exemplo, nos preços 111, 112, 113, 114.

Valores negativos também são suportados por esse parâmetro. Eles deslocam o dígito para a esquerda do ponto. Ou seja, com um valor de -1, a grade será exibida em incrementos de 10, enquanto com um valor de -2, em incrementos de 100.

Essa variação permite não apenas simplificar o fato de verificar se uma ordem limitada está colocada no incremento necessário na grade, mas também permite considerar os níveis formados pelos preços arredondados na negociação. Afinal de contas, na verdade, colocamos ordens limitadas em preços arredondados.

Entre os parâmetros do EA, há outro parâmetro que afeta os incrementos da grade, nomeadamente o "Deslocamento, pontos". Ele permite que o incremento de um preço arredondado seja movido para o número de pontos especificado. Por exemplo, com 2 casas decimais e deslocamento 1, a grade não será colocada nos preços 1,12; 1,13; 1,14, mas, sim, nos preços 1,121; 1,131; 1,141, e se for uma ordem em Long, será posicionada abaixo do preço atual e nos preços 1,119; 1,129; 1,139, e já se for uma ordem em Short, será colocada abaixo do preço atual. Assim, preços arredondados podem nos proteger, se acontecer algo indesejado e o preço não atingir a ordem limitada antes de ir no sentido oposto.

Quando ao "Deslocamento, pontos", o teste mostrou que seu uso nem sempre tem resultado positivo.

Parâmetros básicos do EA.

Além dos dois parâmetros discutidos acima, o EA tem muitos outros:

Parâmetros do Expert Advisor

Entre esses parâmetros, os mais importantes para trabalhar com o EA são os seguintes:

  • "Tamanho do lote". Esse parâmetro é indispensável. Ele determina o volume do lote usado ao colocar cada ordem limitada.
  • " "Número máximo de ordens numa direção". Esse parâmetro determina o número de ordens limitadas na grade em um lado do preço. Quer dizer, toda a grade consistirá no dobro do valor desse parâmetro. Assim que o preço se move para uma das direções da grade, transferindo ordens limitadas para posições abertas, o EA abrirá novas ordens limitadas (e fechará as que estão agora muito longe do preço) para que seu número total em cada lado do preço corresponda a esse parâmetro. Em outras palavras, novas ordens limitadas serão colocadas quando surgir uma nova barra no timeframe em que está sendo executado o EA.
  • "Take-Profit para ordens". Determina o take-profit para cada ordem limitada individual e é indicado nos incrementos de grade do EA. Ou seja, por exemplo, o valor 2 deste parâmetro indica que a posição será fechada quando o preço passar em sua direção as próximas duas ordens limitadas da grade. Se o parâmetro Casas decimais para ordens limitadas for igual a 3, o take-profit real será definido a uma distância de 0,002 do preço atual (20 pontos de lucro).
  • "Stop-loss para ordens". Determina o stop-loss para cada ordem limitada individual, também nos incrementos de grade do EA. Como mostraram os testes, não é eficiente colocar stop-loss de qualquer tamanho nesse tipo de EA gradador, portanto não vamos usá-los.

Vale a pena falar separadamente sobre o take-profit para ordens individuais. O valor ideal para este parâmetro depende principalmente da natureza do movimento do preço do instrumento selecionado. Mas quase sempre está no intervalo de 1 a 5. Além disso, os valores próximos a 1 e os valores próximos a 5 têm vantagens.

Quanto menor é o valor, a posição aberta é fechada mais rápido e com menos lucro. Isso tem duas vantagens:

  • mesmo numa faixa pequena, as posições serão abertas e fechadas com um lucro em cada movimento de preço, independentemente da direção;
  • como o tamanho do take-profit é pequeno, o preço durante as correções deixará menos ordens abertas na direção oposta ao movimento atual, assim a carga no depósito será menor.

Um take-profit grande também dá uma vantagem:

  • se a tendências do preço for prolongada, o lucro total será maior, quando usado um take-profit grande.

Assim, ao usar take-profit pequenos, o rebaixamento máximo do depósito será menor. Mas, ao mesmo tempo, o possível lucro será muito menor.

Fechamento de todas as posições. Além do take-profit para ordens individuais da grade, você pode usar outros parâmetros que permitem fechar todas as posições abertas quando determinados eventos ocorrerem. Todos esses parâmetros são reunidos no grupo " Fechamento de todas as posições":

  • "Se houver lucro, $". Fechar todas as posições abertas se o lucro total atingir o valor especificado em dólares.
  • Fechar todas as posições abertas se o lucro líquido for mais do que ao abrir a grade, na quantia especificada de dólares. Se você geralmente usa o fechamento de todas as posições, essa opção é preferível.
  • "Fechar tudo se o preço for mais do que". Esse parâmetro é protetor e permite que você feche todas as posições abertas se o preço sair - para cima - do intervalo em que você está negociando. Deve especificar o preço acima do qual todas as posições abertas devem ser fechadas.
  • "Fechar tudo se o preço for menos do que". Esse parâmetro é protetor e permite que você feche todas as posições abertas se o preço sair - para baixo - do intervalo em que você está negociando.

Em teoria, a ideia de fechar todas as posições ao sair do intervalo pode parecer tentadora. Mas, na prática, isso causa a perda de todos os lucros ganhos antes. Como veremos mais adiante no artigo, a questão sobre o que fazer quando o preço sai do intervalo e começa uma forte tendência é a pedra angular dessa estratégia de negociação.

Os parâmetros restantes. Até agora, consideramos apenas uma pequena parte dos parâmetros que estão no EA. Alguns parâmetros adicionais serão discutidos posteriormente no artigo. Mas existem alguns deles que não aplicaremos. Eles estão marcados com (-) em seu nome. Há uma ideia por trás de cada um deles, mas na prática seu uso não leva a nada de bom. Entretanto, apesar do fato de não usarmos esses parâmetros, consideraremos as ideias em si mesmas. Talvez elas sejam úteis para você ou você descobrirá como torná-las melhores.

Instrumentos de teste

Antes de mergulhar nos testes, vamos considerar novamente a ideia que está incorporada no EA e como ela é implementada.

Não é segredo que não é fácil prever o movimento de preços - da maioria dos ativos - com precisão bastante confiável. O preço pode subir primeiro, interrompendo o máximo local, depois descer, interrompendo o mínimo local. Depois, tudo pode mudar drasticamente, e o preço sobe novamente, interrompendo ou quase terminando no máximo local. E mesmo se o preço manter uma direção durante muito tempo, raramente tal movimento ocorrerá sem correções. Vamos tentar jogar sob estas condições, coletando lucros em qualquer direção que o preço vai.

Para fazer isso, vamos colocar ordens limitadas acima e abaixo do preço atual. As ordens serão colocadas à mesma distância uma da outra. Acima do preço, colocaremos ordens em Long, assumindo que, se o preço subir, ele continuará subindo. Assim, sob o preço serão colocadas ordens em Short.

O número de ordens na grade é definido pelo parâmetro "Número máximo de ordens numa direção". No entanto, na verdade, esse número não é particularmente relevante, porque quando uma nova barra surge no timeframe em que o EA trabalha, adicionaremos novas ordens à grade se o preço tiver atingido alguma das ordens atuais, transformando-a numa posição aberta.

Assim, o parâmetro "Número de ordens limitadas numa direção" pode ser relevante apenas com movimentos de preço muito rápidos e fortes, quando o preço rompe todas as ordens da grade durante uma barra do timeframe em que o EA trabalha, e, em seguida, continua na mesma direção.

Timeframe. A propósito do timeframe. Como mostraram os testes, o EA se mostra melhor no timeframe M5. Portanto, vamos realizar todos os testes nele.

Selecionamos o mercado. Agora, sobre o mercado em que vamos trabalhar. Já a partir da ideia que está no EA, fica claro que os mercados laterais são os mais adequados para o seu funcionamento, isto é, o mesmo mercado Forex. Além disso, é bom que, no timeframe semanal ou mensal, seja bem visível o intervalo dentro do qual está o preço atualmente.

Por exemplo, veja o gráfico do instrumento AUDCAD:

Gráfico mensal AUDCAD

Durante os 5 últimos anos, e mesmo durante 10 anos, ele está no intervalo. E, teoricamente, a estratégia de negociação desenvolvida por nós deve ser ideal para o instrumento AUDCAD e semelhantes. Vamos verificar isso.

Assim, vamos testar o EA nos seguintes símbolos: EURUSD, AUDUSD, AUDCAD. Além disso, para todos os instrumentos, vamos testar o incremento de 10 pontos (3 casas decimais). Pode-se, claro, tentar negociar num intervalo de 100 pontos (2 casas decimais), o que, na verdade, será negociação a longo prazo com uma grande quantidade de transações anuais.

Período de teste.

Nesse artigo, não estamos interessados em períodos inferiores a 1 ano. Para os testes, vamos nos guiar por um período de 4: de 2015 a 2019. E, consequentemente, vamos procurar as configurações mais lucrativas para esse período específico. Diga-se desde já que o EA não passa os testes em períodos superiores a 10 anos ou passa com um pequeno lucro e pequenos níveis take-profit. Portanto, usá-lo na forma de "colocar e esquecer por uma dúzia de anos" não vai funcionar.

Testemos EURUSD, incremento 10 pontos (3 casas decimais)

Vamos começar a testar verificando a ideia básica da estratégia de negociação. Todos os parâmetros são definidos por padrão. Incluindo, os parâmetros que já consideramos:

  • não é colocado stop-loss;
  • não é executado o fechamento de todas as posições sobre condição.

A otimização será realizada segundo take-profit para uma única ordem, assim como segundo o parâmetro "Deslocamento, pontos". Método de otimização, OHLC em M1. Depois disso, o resultado final será testado segundo o método "Todos os ticks". Relatórios de todos os testes estão anexados ao artigo.

Em geral, o take-profit 2 e o deslocamento de 1 ponto mostraram os melhores resultados:

Primeiro teste em EURUSD

Os resultados de teste mais importantes para nós:

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 EURUSD
 23 522
 20 641
 0.88
 1.39
 40 536

De fato, apesar de termos lucrado, os resultados não são os melhores. Um parâmetro fator de recuperação igual a 0,88 mostra isso com mais clareza.

De fato, o fator de recuperação mostra a relação entre o lucro e o rebaixamento máximo (lucro dividido pelo rebaixamento máximo). Se seu valor for menor que 1, significa que ganhamos menos do que o rebaixamento permitido pelo EA.

Provavelmente, a maioria de nós estaria satisfeita com pelo menos 100% do depósito por ano. Como estamos testando em um período de 4 anos, estaríamos satisfeitos com um fator de recuperação de mais de 4. Bem, vamos tentar melhorar nosso sistema de negociação.

Sem colocar as ordens mais próximas.

Como foi dito no artigo acima, o EA usa uma grade flutuante que segue o movimento do preço. Se o preço subir, o EA coloca uma ordem limitada adicional abaixo do preço atual.

E se a mais próxima desse tipo de ordens for atingida com muita frequência durante as correções e não se fechar segundo o take-profit? Tentemos proibir a colocação ordens adicionais muito perto do preço. Para isso, ao EA foi adicionado o parâmetro booleano " Sem colocar as ordens mais próximas". Vejamos o que acontece por causa da sua ativação:

Segundo teste do instrumento EURUSD, 3 casas decimais

A olho nu, as diferenças não são particularmente perceptíveis. Talvez nos resultados do teste possamos ver mudanças:

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 EURUSD
 12 987
 15 302
 1.18
 1.64
 21 350

Nós reduzimos o número de trades em quase 2 vezes. Se você queria ganhar graças ao bônus da corretora, essa não é a melhor notícia. O lucro também diminuiu. Mas, ao mesmo tempo, quase reduzimos pela metade o rebaixamento máximo. E conseguimos um fator de recuperação de mais de 1.

Dessa mesma maneira, esse parâmetro funciona em outros instrumentos quando há três casas decimais (distância de 10 pontos entre ordens da grade). Ele permite reduzir o número de trades devido ao fato de que pequenas correções no movimento dos preços não atingem nossa grade. Se nesse momento o preço está numa tendência, isso é muito bom. Mas se estivermos num movimento lateral e se no futuro o preço ainda retornar à ordem aberta anteriormente, o uso desse parâmetro causará uma diminuição no lucro possível.

Entrada no sentido do movimento da barra.

Continuamos melhorando nosso EA. Praticamente todos os gurus do trading nos aconselham a negociar apenas na direção de uma tendência local. Como determinar essa tendência? É simples, se na barra anterior o preço subir, só será necessário negociar em Long e vice versa.

Geralmente, é aconselhado observar tendências locais em gráficos diários. Ou seja, se ontem o preço cresceu, negociamos em Long. Se o preço caiu, negociamos em Short. Tentemos usar esse conselho. Só que, além da tendência diária, testaremos outros timeframes.

Assim, para configurar a negociação no sentido do movimento da barra, vamos utilizar parâmetros do EA a partir do grupo "Na direção da barra":

  • "Usar entrada segundo a barra". Defina como true, para ativar esse recurso.
  • "Tipo de registro de barra". Eu tentei não entrar contra a barra ou entrar com um take-profit mínimo. A opção com take-profit mínimo foi sempre pior, o valor padrão deste parâmetro é Não entrar e não é recomendado alterá-lo.
  • "Número da barra". Em alguns sistemas de negociação, é aconselhável determinar a tendência local não apenas pela barra anterior, mas também pela atual. Ou seja, se o preço subiu ontem e o barra de hoje está em alta, entramos apenas em Long. Verifiquemos essa opção. Este parâmetro tem os seguintes valores: barra 1 (verificar apenas a barra anterior), barra 0 (verificar apenas a barra atual), barras 0 e 1 (e as barras anterior e atual devem ir num sentido só). Os resultados dos testes mostraram que os resultados da opção barra 1 sempre são os melhores. Assim, é recomendável não alterar o valor desse parâmetro.
  • "Timeframe". Permite selecionar o timeframe, em que serão verificadas as barras.

Depois de testar a entrada segundo a barra em diferentes timeframes, descobriu-se que o timeframe mensal funciona melhor para o EURUSD:

Teste de entrada segundo a barra em EURUSD

Resultados de teste na forma de tabela:

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 EURUSD
 13 044
 19 227
 1.48
 1.8
 23 445

Em geral, a entrada baseada em barras melhora os resultados em todos os instrumentos. No entanto, a entrada segundo a barra no timeframe mensal é uma exceção. Na maioria das vezes, o ideal é realmente o timeframe diário. Neste caso, como nós simultaneamente expomos a grade somente em uma direção, no uso do parâmetro "Sem colocar as ordens mais próximas" nenhum significado especial.

Negociação no intervalo. Conforme indicado no título do artigo, este EA se destina a negociação num intervalo. Consequentemente, se o preço no gráfico semanal ou no mensal estiver num determinado intervalo, os resultados de sua negociação devem ser melhores. Verificamos esta hipótese, colocando o intervalo para negociação. Para fazer isso, precisamos dos parâmetros "Não abrir Long se o preço for menos do que", "Não abrir Long se o preço for mais do que", "Não abrir Short se o preço for menos do que" e "Não abrir Short se o preço for mais do que".

A olho nu, colocamos o valor 1.17849 para os parâmetros "Não abrir Long se o preço for mais do que" e "Não abrir Short se o preço for mais do que" . Já para os dois parâmetros restantes, o valor de 1.09314:

Negociação no intervalo segundo o EURUSD

A olho nu, pode-se ver que nossos resultados melhoraram:

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 EURUSD
 2 412
 10 964
 4.55
 6.16
 6 974

Fechar todas as posições se o capital líquido aumentar.

No início do artigo, foi descrito o grupo de parâmetros "Fechamento de todas as posições". Entre eles, esteve o parâmetro "Se o capital líquido aumentar em, $". Logicamente, esse parâmetro deve melhorar nossos resultados. Afinal, ele pode ser usado para fechar todas as posições não lucrativas abertas no momento. E, por assim dizer, começar a negociar a partir do zero. Para fazer isso, basta esperar até que o preço entre no intervalo e o capital líquido de nossa conta aumente no valor especificado. E como os gurus do trading garantem, o preço se move 70% do seu tempo dentro do intervalo.

Na prática, o uso desse parâmetro nem sempre leva a melhores resultados. Aparentemente, porque ao usá-lo, fechamos com prejuízo aquelas transações que no futuro poderiam trazer lucro durante reversão de preços.

No entanto, no nosso caso, o parâmetro "Ao aumentar o capital líquido em, $" realmente permite melhores resultados. O valor de US $ 2000 mostrou o melhor:

Testando o fechamento de todas as posições com um aumento no capital líquido em EURUSD

E os resultados do teste em si:
Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 EURUSD
 3 200
 18 532
 5.79
 3.8
 6 954

Este é o último teste para o EURUSD, por isso, vamos resumir. Apesar de tudo, conseguimos alcançar rentabilidade de quase 150% ao ano. Além disso, usamos um lote fixo. Ou seja, se aumentarmos o lote ao aumentar o saldo da conta, será possível obter um lucro muito maior.

No entanto, os resultados não são impressionantes. Tudo o que alcançamos é de 150% ao ano, com quase 100% de rebaixamento. A maioria dos investidores exige o rebaixamento seja de não mais do que 20% do depósito. Do meu ponto de vista, esse é um requisito estranho. Acontece que 80% do saldo vai ficar apenas parado? Se ele estiver parado, coloque-os no depósito e negocie-os pelos 20% restantes. Mas, existe esse tipo de requisito, o que significa que teremos que reduzir nosso volume de negócios em 5 vezes, a fim de manter o rebaixamento de 20%. Consequentemente, o lucro não será de 150%, mas, sim, de 30% ao ano. Os resultados estão longe de ser impressionantes.

Mas, passemos a testar outros instrumentos.

Resultados de teste. Como já mencionado, todos os relatórios de cada teste intermediário estão anexados ao artigo. Os arquivos SET do teste final também são anexados ao artigo, tanto para o símbolo EURUSD quanto para os outros considerados.

Testemos AUDUSD, incremento de 10 pontos (3 casas decimais)

Vamos começar a testar o AUDUSD também com configurações básicas:

  • não é colocado stop-loss;
  • não é executado o fechamento de todas as posições sobre condição.

A otimização foi realizada segundo take-profit para uma ordem separada, assim como segundo o parâmetro "Deslocamento, pontos". Como resultado, o take-profit 3 e o deslocamento 0 teve o melhor desempenho:

Teste básico para AUDUSD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDUSD
 21 468
 -546
 -0.03
 0.99
 18 104

Sem colocar as ordens mais próximas. Mas mesmo com os melhores parâmetros básicos, não poderíamos ter lucro. No entanto, não vamos nos desesperar e vamos tentar ativar o parâmetro "Sem colocar as ordens mais próximas":

Sem colocar as ordens mais próximas, AUDUSD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDUSD
 14 701
 14 415
 0.98
 1.54
 15 049

Entrada no sentido do movimento da barra.

Já um pouco melhor. Vamos tentar testar a entrada na barra anterior em diferentes timeframes:

Na direção da barra diária, AUDUSD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDUSD
 9 186
 8 364
 0.91
 1.56
 8 573

Negociação no intervalo

O timeframe diário mostrou o melhor resultado. No entanto, mesmo nele, o resultado se deteriorou ligeiramente. No entanto, vamos pô-lo a trabalhar, e testamos a negociação num intervalo. A olho nu, definimos os limites do intervalo em 0,79728 acima do preço atual e 0,70417 abaixo dele:

Dentro do intervalo, AUDUSD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDUSD
 6 769  11 937
 1.76
 2.35
 7 591

Fechar todas as posições se o capital líquido aumentar.

Resultados esperados melhorados. O fator de recuperação aumentou quase 2 vezes. E finalmente, vamos testar o fechamento de todas as posições com um aumento no capital líquido:

Fechar todas as posições se o capital líquido aumentar, AUDUSD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDUSD
 4 270
 8 552
 2
 1.74
 7 593

Fechar todas as posições se o capital líquido aumentar em 1 000, pode-se aumentar o fator de recuperação para 2. Para o resultado final, esse é um lucro muito pequeno. Mas talvez o AUDCAD possa nos agradar com algo...

Testemos AUDCAD, incremento de 10 pontos (3 casas decimais)

No início do artigo, o gráfico do AUDCAD foi citado como um exemplo de um movimento de preços adequado para um EA. Em seu gráfico mensal, é claramente visível o intervalo em que o preço se move. Bem, agora é hora de verificar quão lucrativa será a negociação neste instrumento.

O teste básico mostrou os melhores resultados com um take-profit de 4 e um deslocamento de 0:

Teste básico do AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 8 216
 16 149
 1.97
 1.53
 17 852

Número máximo de ordens a um preço.

Já nas configurações básicas, conseguimos um fator de recuperação de mais ou menos 2. Ou seja, o mesmo resultado que as configurações finais do instrumento AUDUSD.

Esse resultado pode ser melhorado ainda mais se for alterado o parâmetro do EA "Número de ordens a um preço", que não consideramos neste artigo. Por padrão, seu valor é 33. O que significa que o EA tem permissão para abrir até 33 posições ao mesmo preço numa direção. Na prática, isso significa um número ilimitado de posições a um preço, já que mais de 10 posições nunca foram abertas a um preço.

Como as posições são abertas ao mesmo preço? Tudo é simples, por exemplo, o preço sobe e atinge a ordem mais próxima. Depois disso, o preço cai imediatamente tanto que o EA coloca uma nova ordem limitada em cima ao mesmo preço. Depois disso, o preço novamente testa o nível, tocando a ordem colocada. e assim por diante.

Em casos anteriores, não consideramos o parâmetro "Número máximo de ordens ao mesmo preço", já que a abertura de um número ilimitado de posições ao mesmo preço permitia aumentar a rentabilidade do EA. Mas com o AUDCAD tudo é diferente. Talvez isso se deva à natureza do movimento do preço desse instrumento, mas se você não permitir a colocação de ordens limitadas nos preços em que já foram abertas posições, o resultado é melhor. Quer dizer, definimos como 1 o parâmetro " "Número máximo de ordens ao mesmo preço"

Não colocar ordens se o nível já tiver posições, AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 5 896
 18 087
 3.07
 2.63  10 821

Sem colocar as ordens mais próximas.

Conseguimos aumentar o fator de recuperação em mais de 1,5 vezes. Agora, testamos a inclusão do parâmetro "Sem colocar as ordens mais próximas":

Sem colocar as ordens mais próximas, AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 5 656
 13 692
 2.42
 2.61
 8 306

Não há nada a ser feito, temos que admitir que se tornou um pouco pior. No entanto, tentemos continuar a testar considerando esse parâmetro.

Entrada no sentido do movimento da barra.

O teste de entradas apenas na direção do movimento anterior da barra deixa ver que o gráfico diário se mostra melhor:

Entrada segundo barra diária, AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 3 857
 8 848
 2.29
 2.58
 5 487

No entanto, mesmo nele, nossos resultados pioraram ainda mais.

Negociação no intervalo.

Continuamos testando, desta vez, definindo o intervalo em que o EA irá trabalhar. O preço superior do intervalo será 1.02603, enquanto o inferior, 0.93186.

Negociação no intervalo, AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 2 684
 9 692
 3.61
 3.33
 5 224

Intervalo mais uma vez não nos decepcionou e melhorou ligeiramente os resultados.

Fechar todas as posições se o capital líquido aumentar.

E a última opção de otimização do conjunto padrão:

Fechar todas as posições se o capital líquido aumentar, AUDCAD

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 2 818
 6 022
 2.14
 1.74
 5 479
Mesmo com o melhor resultado (fechamento com capital liquido de US $ 1 000), caímos para um fator de recuperação próximo aos resultados iniciais do teste.

Teste alternativo. Vamos tentar descartar os parâmetros que deterioraram o fator de recuperação e vamos realizar testes sem eles. Quer dizer, desativamos "Sem colocar as ordens mais próximas", a entrada no sentido do movimento da barra e não fechamos todas as posições quando o capital líquido aumentar:

Teste alternativo AUDCAD

Símbolo 
 Max. rebaixamento
Lucro 
 Fator de recuperação
 Rentabilidade  Trades
 AUDCAD
 5 124
 19 121
 3.73
 3.17
 10 301

O resultado foi melhor, mas não muito. Total de cerca de 100% de lucro por ano.

O que fazer ao sair do intervalo

Depois de todos os testes, conseguimos alguns resultados. Isso não quer dizer que esses são bons resultados. Mas é lucro. No entanto, esse lucro é muito enganador.

O principal aumento na rentabilidade dos EAs é devido à limitação do intervalo de sua negociação. Mas nós tomamos o intervalo do histórico, e não estamos certos de que o preço continuará nessa faixa. Nós só podemos esperar que isso aconteça. Bem, talvez uma vez corramos com sorte e o preço role de volta para dentro do intervalo. Bem, quiçá uma segunda vez corramos com sorte. E provavelmente uma terceira vez já não tenhamos sorte. E o que fazer então?

Uma opção é fechar todas as posições. Em teoria, é uma boa opção. Mas, na prática, isso significaria a perda de todos os lucros ou a perda da maior parte deles. E, infelizmente, o preço começará a mudar no dia seguinte.

De qualquer forma, com base nos testes, a melhor opção é se esconder e esperar que o preço retorne ao intervalo quer não abrir transações ou esperar que o preço busque um novo intervalo e tentar negociá-lo antes que o preço retorne.

Isso pode levar anos. No entanto, mais cedo ou mais tarde o preço retornará.

Se você não quiser esperar 5 anos ou mais, tudo o que precisa fazer é se sentar para negociar manualmente e tentar obter uma vantagem sobre o mercado, com base nas cartas que recebeu.

Outros parâmetros do EA

Anteriormente no artigo, foram considerados apenas os parâmetros do EA cujo uso pode aumentar sua lucratividade. Existe uma ideia por trás de cada parâmetro. As ideias que foram testadas durante o desenvolvimento do EA foram muito mais. Infelizmente, a maioria delas só piorou o desempenho do EA. Portanto, o código que os implementa foi totalmente excluído ou os parâmetros que controlam a ideia foram marcados com um hífen no início de seu nome.

Agora vamos considerar brevemente esses parâmetros, no entanto, como os testes mostraram, mudar seus valores não levará a nada de bom.

Tipo de ordens limitadas. Por padrão, o EA coloca ordens em Long acima do preço atual e ordens em Short, abaixo do preço atual. Essas ordens são chamadas de Buy Stop e Sell Stop. Com base nisso, o valor padrão deste parâmetro é STOP.

Se você atribuir um valor a esse parâmetro LIMIT, o EA usará ordens Buy Limit e Sell Limit. Ou seja, o comportamento dele mudará drasticamente, pois ele colocará as ordens Sell acima do preço e as ordens Buy acima do preço.

De fato, se antes o EA trabalhou com a tendência, quando este parâmetro for mudado, ele funcionará contra a tendência. Assim, também se pode fazer algum tipo de lucro. Mas em relação ao rebaixamento, esse lucro será muito menor.

Aumento do lote na cadeia. Por padrão, todas as ordens na grade têm o mesmo volume. Mas, com a ajuda desse parâmetro, pode-se fazer com que o volume de cada nova ordem na grade seja maior do que a anterior. O aumento pode ocorrer numa progressão aritmética ou numa geométrica.

Com base nos testes, isso pode aumentar o lucro, mas à custa de aumentar o rebaixamento máximo. Assim, o fator de recuperação será, em qualquer caso, menor do que com um lote fixo.

Uso do trailing stop. Um grupo inteiro de parâmetros permite ativar o trailing stop para cada ordem individual. Mas, infelizmente, os testes mostraram que é melhor não fazer isso.

Fim do artigo

Neste artigo, analisamos outra opção de grade. É melhor que a opção discutida no artigo anterior. Mas, ainda assim, nós tivemos uma estratégia de negociação muito arriscada, que mais cedo ou mais tarde poderia levar a uma perda do depósito.

Então, o que acontece é que é impossível criar um EA sensato na grade que negocie com riscos mínimos de perda de depósito? Vamos esperar com essas conclusões, porque temos outra maneira de organizar um EA gradador.

No próximo artigo, veremos a última versão dos EAs gradadores. Como de costume, este será um EA multiplataforma. Ele é capaz de mostrar os seguintes resultados no período de 2010 a 2019 num lote fixo:

Símbolo
 Max. rebaixamento
Lucro
 Fator de recuperação
 Trades
 USDCAD
 953
 7 328
 7.69
 3 388
 NZDUSD  1 404
 11 288
 8.04  2 795
 SBUX (de 2013 a 2019)
 140  1 890
 13.5  442

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

Arquivos anexados |
trendmeEA.ex5 (157.19 KB)
trendmeEA.mq5 (140.84 KB)
trendmeEA.ex4 (66.98 KB)
trendmeEA.mq4 (140.84 KB)
SET_files.zip (25.38 KB)
Arranquemos o lucro até o último pip Arranquemos o lucro até o último pip
Este artigo tenta combinar teoria com prática no campo da negociação algorítmica. A maior parte da conversa sobre a criação de sistemas de negociação está associada ao uso de barras históricas de preços e vários indicadores. Este é um campo bem desgastado que não tocaremos. As barras são uma entidade completamente artificial, por isso, vamos dar algo mais próximo a protoinformações - ticks.
Métodos para medir a velocidade do movimento de preços Métodos para medir a velocidade do movimento de preços
Existem diferentes abordagens para estudar e analisar o mercado, mas, há dois principais, nomeadamente a técnica e a fundamental. No primeiro caso, acontece a coleta, o processamento e o estudo de quaisquer dados numéricos e de características relacionadas ao mercado: preços, volumes e assim por diante. No segundo caso, acorre a análise de eventos e de notícias que, por sua vez, afetam direta ou indiretamente os mercados. O artigo discute métodos para medir a velocidade do movimento de preços e o estudo de estratégias de negociação com base neles.
Aprofundando na "memória" do mercado através da diferenciação e do análise de entropia Aprofundando na "memória" do mercado através da diferenciação e do análise de entropia
O campo para aplicar a diferenciação fracionária é bastante amplo. Por exemplo, os algoritmos de aprendizado de máquina geralmente recebem uma série diferenciada na entrada. O problema é que é necessário derivar novos dados de acordo com o histórico existente, para que o modelo de aprendizado de máquina possa reconhecê-los. Este artigo discute a abordagem inicial para a diferenciação das séries temporais, além disso, é fornecido um exemplo de estratégia de negociação otimizada automaticamente baseada nas séries diferenciadas obtidas.
Estimando o índice de funcionalidade, o expoente de Hurst e a possibilidade de prever séries temporais financeiras Estimando o índice de funcionalidade, o expoente de Hurst e a possibilidade de prever séries temporais financeiras
A busca e o estudo do comportamento fractal de dados financeiros implica que, por trás do comportamento aparentemente caótico de séries temporais econômicas, estão ocultos e operam mecanismos estáveis que governam a conduta coletiva dos participantes. Na bolsa de valores, essa mecânica pode levar ao surgimento de uma dinâmica de preços que determina e descreve as propriedades específicas das séries de preços. Na negociação, seria interessante ter indicadores que pudessem estimar os parâmetros de fractalidade de maneira efetiva e estável, numa escala e num intervalo de tempo que fossem uteis na prática.