English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Algoritmos que empregam limite móvel para fazer dinheiro

Algoritmos que empregam limite móvel para fazer dinheiro

MetaTrader 5Sistemas de negociação | 21 janeiro 2014, 14:00
1 916 0
Гребенев Вячеслав
Гребенев Вячеслав

Introdução

Um dos algoritmos que apresenta uma entrada aleatória e uma saída cronometrada já foi analisado no artigo A estratégia Forex de "tudo ou nada". Esse algoritmo não leva em consideração os eventos de mercado e a direção em que se deve entrar no mercado. Apenas a volatilidade do mercado, que é mais ou menos constante, e importante para este algoritmo. Basicamente, o algoritmo não resultou em nenhum lucro ou perda, mas provou ser muito útil para jogar na loteria.

O principal aspecto que devemos tirar do artigo é que a duração de uma negociação não pode ser definida como menos de uma hora ou mais de uma semana. Os valores inferiores a uma hora resultaram em uma perda muito rápida devido ao spread enquanto que os valores superiores a uma semana prolongaram a loteria por anos.

Vamos iniciar o nosso estudo dos algoritmos com o par de moeda familiar EURUSD e uma saída utilizando limite móvel.

1. Algoritmo com entrada aleatória e saída utilizando limite móvel

  1. Entre no mercado em uma direção aleatória;
  2. Estabeleça o limite móvel igual a TS;
  3. Espere até que o limite móvel seja disparado;
  4. Volte ao ponto 1 ou pare a negociação.

Você pode esperar obter algum lucro utilizando esse algoritmo, pois a situação de mercado é monitorada pelo limite móvel. Claramente, se o movimento do preço for uma volta aleatória, este algoritmo não deve obter nada. Mas o movimento real de preço está longe de ser caótico e há esperança de obter algum lucro.

Em vez de tentar adivinhar como será o desempenho do algoritmo, vamos desenvolver e testar um EA. Muito já foi dito sobre as formas de configurar um limite móvel em um programa. Não vamos passar de nível algorítmico a programação neste artigo, ou nunca chegaríamos ao fim. O EA será desenvolvido para estudo, por tanto, vamos utilizar 100.000 USD de depósito máximo e 0,1 de lote mínimo. Isto permitirá vermos mais ação antes de uma parada.

Vamos acordar aqui que o limite móvel será igual a TS e todos os outros limites deste artigo serão expressos como uma porcentagem do tamanho médio de corpo dos últimos candlesticks (alto-baixo) do gráfico atual. O período de tempo que vamos utilizar para exibir o gráfico atual é D1. Você pode utilizar qualquer outro número de candlesticks, não necessariamente cinco, visto que isso não terá qualquer efeito significativo no raciocínio. É importante que, tendo escolhido essa escala de medida, não dependemos da volatilidade atual ou da moeda ou par de moedas escolhido.

Para executar o teste, defina TS=100% em D1. Tendo configurado o valor de TS, a duração de uma negociação será de aproximadamente um dia. Como mencionado acima, não se pode estabelecer uma duração de negociação menor e um valor menor de TS devido à perda rápida causada pelo spread. A configuração de valores maiores prolongará o tempo de execução do algoritmo.


Figura 1. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=100

Figura 1. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=100

A Figura 1 sugere que o algoritmo traz lucro e agora que o EA foi desenvolvido, podemos finalizar o artigo aqui, o que geralmente é o caso.

Entretanto, após ler artigos desse tipo, há três perguntas que nos deixam com um sentimento profundo de insatisfação:

  1. O lucro demonstrado é resultado do ajuste dos parâmetros aos dados históricos?
  2. Por que foi escolhido o par de moedas EURUSD? O que acontecerá se outros pares de moedas forem utilizados?
  3. Por que justamente esta parte dos dados históricos foi selecionada? Além disso, o algoritmo apresenta uma entrada aleatória, e o lucro obtido poderia muito bem ser de natureza meramente aleatória.

Vamos responder essas perguntas uma a uma.

O algoritmo que apresenta entrada aleatória e saída com utilização de limite móvel possui apenas um parâmetro TS, que foi selecionado com base em considerações totalmente gerais - perda devido ao spread e duração da negociação. Apesar disso, o algoritmo deve ser otimizado.

Para a otimização, vamos utilizar quase todos os dados históricos disponíveis, desde 1990 a 2012. Porque o algoritmo possui entrada aleatória, vamos selecionar 100 diferentes sequências aleatórias de entradas para cada valor de TS. Assim, eliminaremos a aleatoriedade no algoritmo e evitaremos ajustar aos dados históricos.

Figura 2. Otimização do valor de limite móvel TS para EURUSD, D1 (TS=500 ótima)

Figura 2. Otimização do valor de limite móvel TS para EURUSD, D1 (TS=500 ótima)

A otimização foi realizada no modo "Apenas preço Open", o que explica os cálculos vagos, especialmente para valores menores de TS que, apesar disso, renderizam a ideia geral corretamente.

Como pode ser visto na Figura 2, a otimização não fornece um máximo nítido. Um limite móvel menor, em que TS é igual a 50 e 100, leva a perdas. Além disso, quando o TS está entre 150 e 850, o algoritmo, na média, obtém lucros. Onde o TS está dentro do limite de 900 a 1500, o algoritmo começa a perder novamente.

Os valores de TS superiores a 1500 não devem ser considerados. Quando o TS=1500, o algoritmo executa certa de 25 negociações ao longo de 22 anos o que está no limiar do razoável. Porque não identificados um máximo nítido, vamos selecionar o centro do período lucrativo de 150 a 850, ou seja, TS=500 (130 negociações ao longo de 22 anos).

Agora vamos considerar o balanço obtido pelo algoritmo para diferentes pares de moeda. Mais uma vez, para evitar ajustes a dados históricos, não consideraremos o balanço de apenas um teste, mas o balanço médio de 100 testes com entradas aleatórias diferentes.

Figura 3. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para EURUSD, com média baseada em 100 entradas aleatórias

Figura 3. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para EURUSD, com média baseada em 100 entradas aleatórias

Figura 4. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para GBPUSD, com média baseada em 100 entradas aleatórias

Figura 4. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para GBPUSD, com média baseada em 100 entradas aleatórias

Figura 5. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para USDJPY, com média baseada em 100 entradas aleatórias

Figura 5. Balanço obtido pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para USDJPY, com média baseada em 100 entradas aleatórias

Os balanços obtidos pelo algoritmo com entrada aleatória e saída utilizando limite móvel, em que TS=500 para EURUSD, GBPUSD e USDJPY, com média baseada em 100 entradas aleatórias, foram apresentados nas Figuras 3-5. Os balanços médios estão apresentados ao longo dos eixos Y, o tempo é representado ao longo dos eixos X. Vamos primeiramente analisar os balanços médios.

O primeiro aspecto a ser destacado para todos os pares de moedas são as viradas agudas verticais para cima e as viradas para baixo longas e planas. Sugerimos chamas algoritmos que resultam em balanços desse tipo, algoritmos de "perda falsa". É claro que, se selecionarmos um período aleatório de 3 meses, é muito provável que ele não contenha uma virada aguda para cima e tudo o que veremos será uma perda graciosa, fixa e constante. Dito isto, esta perda será muito mais rápida que uma perda regular devido ao spread. Ao mesmo tempo, podemos ver que o algoritmo de perda falsa pode ganhar ou perder durante um período de 20 anos.

Segundo. O número de viradas verticais para cima varia para diferentes pares de moeda. Por exemplo, não há tantas viradas para cima no gráfico GBPUSD em comparação ao gráfico USDJPY. Além disso, as viradas para cima não são todas de natureza tão caótica em relação ao tempo. Um movimento ascendente significativo de 2009 pode ser observado em todos os três pares de moedas: EURUSD, GBPUSD e USDJPY. Os gráficos de moedas sugerem que o movimento ascendente de 2009 é resultado da crise de dezembro de 2008. As viradas para cima, dessa forma, são indicações de crises. A partir desse momento, iremos nos referir a todos os movimentos ascendentes significativos como crises.

As crises mostradas nos gráficos de balanço médio podem refletir eventos históricos reais mas também podem ocorrer por si só, ou seja, podem ser falsas. Essas crises também poderiam ser observadas em uma volta aleatória idealmente caótica. Entretanto, todas elas seriam falsas. As crises nunca estariam em sincronia uma com as outras em voltas aleatórias caóticas. O número de crises identificado na curva de balanço médio determina se o movimento real de preço tem ou não natureza de crise.

Terceiro. Após examinar os balanços e o desempenho do algoritmo utilizando moedas diferentes, nós gradualmente começamos a compreender a operação do algoritmo. Enquanto o mercado está calmo, o movimento de preço é similar a uma volta aleatória caótica e o algoritmo, na média, perde devido ao spread. Períodos de perdas consistentes se alternam com crises falsas - movimentos ascendentes - que resultam, em média, a perda devido ao spread.

Porque as negociações do algoritmo são de duração muito longa, em que o período de negociação pode ser cerca de dois meses, as perdas são muito lentas e podem ser negligenciadas. Ante à aproximação de uma crise real, o movimento de preço para de ser caótico. Ele se torna previsível e dirigido por tendência, ou seja, propício ao desenvolvimento de tendências. O maior desenvolvimento da crise pode levar a um movimento de avalanche de preços, o que é totalmente diferente de uma volta aleatória caótica.

O algoritmo se comporta da seguinte forma nas crises: após prever a direção da tendência, o algoritmo aguarda o pico da crise, estabelecendo o limite móvel mais perto dele e então dispara uma vez que o pico foi alcançado. Se o algoritmo realizou uma previsão errada a respeito da direção da tendência, o limite móvel inicia no começo da tendência e o algoritmo reverte a posição com uma probabilidade de 50/50. Assim, o algoritmo maneja com sucesso certa de três quartos de todas as crises reais, o que é basicamente como ele faz dinheiro.

Como pode ser visto, para ter lucro, o algoritmo precisa de movimentos de tendência de crise. Dentre os pares exibidos acima, ele se relaciona totalmente ao movimento de preço em EURUSD. Enquanto que o movimento de preço em GBPUSD não apresenta tendências e é livre de crises. Porque existe essa diferença no comportamento de preço? Tudo que sei da análise fundamental é que as batalhas de negócio sempre são travadas entre a Europa e Estados Unidos, embora o RU e os EUA tenham uma relação muito amigável. Podemos ver o valor dessa amizade nos gráficos de balanço médio desenhados com o uso do algoritmo.

O comportamento de preço também pode ser determinado por reguladores financeiros. A crise de 2008 foi suprimida por injeções financeiras refletidas por picos nos gráficos de balanço médio de quase todos os pares de moeda. Nós temos bastante conhecimento sobre a crise de 2008 com base nos noticiários da época. Os Estados Unidos realizaram duas etapas de flexibilização quantitativa desde então. Onde, quando, em qual direção e como o dinheiro foi injetado, por alguma razão, como é usual, não foi relatado.

O balanço médio em EURUSD sugere crises no início de 2010 e no meio de 2010. Essas poderiam ser etapas de flexibilização quantitativa? Os reguladores tentam intervir silenciosamente sem informar o mercado. Não é sempre fácil identificar uma crise no gráfico de preços a olho nu - os aumentos ou baixas de preço nem sempre indicam crises. O balanço médio do movimento de preço serve como um indicador para ajudar a revelar crises. Quais das crises exibidas são falsas e quais são verdadeiras é um assunto complicado distinto.

Vamos fazer alguns comentários sobre a estabilidade dos movimentos de preço. Por exemplo, o balanço em GBPUSD está decrescendo constantemente por 22 anos enquanto que o balanço em EURUSD demonstra um crescimento constante. O movimento em USDJPY apresenta muito pouca estabilidade. A estabilidade do movimento de preço é muito importante, visto que é a única garantia da lucratividade futura do algoritmo. Não exibe qualquer outra garantia de lucratividade de algoritmo em análise técnica.

Dessa forma, descobrimos como e quais movimentos de preço são usados pelo algoritmo para obter lucro. Já é hora de falar sobre lucro. Para fins de estudo, o tamanho de lote usado acima foi 0,1. Este tamanho de lote não é ótimo em termos de lucro. Vamos calcular o tamanho de lote ótimo. O lucro cresce proporcionalmente ao tamanho do lote. O risco de uma parada também é proporcional ao tamanho do lote. Para o balanço EURUSD balance, observou-se a redução máxima de 200 USD em 1991.

Se o tamanho do lote fosse 25 em vez de 0,1, a redução poderia atingir 50.000 USD, ou 50%. Em outras palavras, se o tamanho do lote fosse 25, certamente não seríamos capazes de evitar a parada. Assim, o tamanho de lote ótimo está entre o limite de 0,1 e 25. Se quiser, sinta-se livre para fazer o cálculo do tamanho do lote. Nós simplesmente iremos usar a média entre 0,1 e 25 e obter uma estimativa de 10. Assim, o tamanho de lote ótimo é 10.

O algoritmo obteve 1400 USD com a utilização do tamanho de lote 0,1 (veja o balanço em EURUSD). Se o lote fosse 10, o algoritmo obteria um lucro de 140.000 USD. O depósito foi de 100.000 USD. Consequentemente, ao longo de 22 anos, o nosso lucro seria de 140%, ou cerca de 6% ao ano. A partir de uma perspectiva realista, isso não é muito, mas é mais que os juros oferecidos por muitos bancos em relação a depósitos em moedas estrangeiras.


Variações de algoritmo

O algoritmo apresentado acima apresentava uma entrada aleatória e saída utilizando limite móvel. Uma entrada aleatória era necessária para a obtenção de balanços médios livres de ajustes a dados históricos. Isso foi de grande ajuda ao se tentar analisar e compreender como o limite móvel funciona. Mas o algoritmo não apresentou seu melhor desempenho ao lidar com uma crise e com a natureza dos movimentos de preço direcionados por tendências.

Como foi possível perceber acima, o algoritmo apenas foi capaz de lidar com três quartos das crises. O desenvolvimento de um algoritmo capaz de lidar com o comportamento de preços direcionado por tendências é uma das tarefas gerais de análise técnica que não iremos abordar desta vez. No momento, simplesmente tentaremos aperfeiçoar o algoritmo com uma entrada aleatória.

Uma das ideias mais simples é um algoritmo com entrada inversa. Foi possível perceber acima que, no momento de uma entrada mal sucedida e o disparo do limite móvel, o algoritmo foi capaz de prever a direção da tendência com uma probabilidade de 50/50. Vamos parar de prever e entrar na direção oposta da negociação anterior.

2. Algoritmo com entrada reversa e saída utilizando limite móvel

  1. Entre no mercado na direção oposta da negociação anterior. Primeiramente, entramos, por exemplo, na direção de compra.
  2. Estabeleça o limite móvel igual a TS.
  3. Espere até que o limite móvel seja disparado.
  4. Volte ao ponto 1 ou pare a negociação.

O desenvolvimento de um EA com base no algoritmo é uma tarefa de rotina. Sem nos preocuparmos com a otimização do valor TS, selecionamos o valor ótimo previamente identificado (500). (Se você desejar realizar a otimização, ainda assim obterá TS=500). O depósito é, assim como antes, 100.000 USD, o tamanho do lote é 0,1 e o período de tempo é D1.

Figura 6. Balanço obtido pelo algoritmo com entrada reversa (primeira entrada - comprar)

Figura 6. Balanço obtido pelo algoritmo com entrada reversa (primeira entrada - comprar)

Figura 6. Balanço obtido pelo algoritmo com entrada reversa (primeira entrada - vender)

Figura 6. Balanço obtido pelo algoritmo com entrada reversa (primeira entrada - vender)

As Figuras 5-6 exibem os balanços obtidos pelo algoritmo com entrada reversa. Podemos perceber que a direção da primeira entrada apenas é relevante até a primeira crise. Após a primeira crise, os balanços se tornam paralelos.

Como anteriormente, este é um algoritmo de perda falsa que faz dinheiro durante as crises, especialmente a crise de 2008. Os valores de redução exibidos pelos algoritmos com entrada aleatória e reversa são praticamente iguais, entretanto o lucro obtido com a utilização de algoritmos de entrada reversa é 9.000 USD em contraste com os 1400 USD obtidos anteriormente. Consequentemente, a lucratividade não é mais 6%, e sim 6*9000/1400=38% ao ano. E 38% ao ano, a partir de uma perspectiva realista, não é nada mal.

O algoritmo que apresenta uma saída utilizando limite móvel pode ser melhorado ainda mais em diferentes direções. Você pode usar entradas diferentes para prever a direção da tendência ou utilizar a natureza periódica das crises ou habilitar/desabilitar os algoritmos com base em análise fundamental. E você pode fazer muito mais. Deixaremos isso como presente especial para os entusiastas.

A parte mais difícil desses algoritmos não é o desenvolvimento ou mesmo a otimização correta de um EA, mas sim a obtenção de um comportamento de preço de longo prazo estável (ou seja, o balanço médio) do ponto de vista algorítmico. E a estabilidade do preço será generosamente recompensada em lucro. A obtenção do comportamento de preço em termos de um algoritmo determinado irá requerer a modificação dos parâmetros do algoritmo, que é outro procedimento distinto complicado.

Finalmente, não posso deixar de tirar vantagem do comportamento constante de perda dos preços GBPUSD exibidos na figura acima. A medida mais básica que podemos tomar é negociar na direção oposta às negociações do algoritmo de entrada aleatória e saída com limite móvel. Entretanto, isso não será tão bom. Uma solução melhor seria usar tomada móvel ou lucro móvel - não temos certeza de qual a melhor maneira de denominar isso.

A tomada móvel é, fundamentalmente, muito similar ao limite móvel, mas em vez do nível de stop loss, o algoritmo rastreia constantemente o nível take profit. Se o preço atual deslocou-se para longe do nível de take profit em um valor maior que o TP, o nível de take profit é movido em direção ao preço. O nível de Stop Loss permanece não configurado, ou seja, no nível de parada.

Para evitar repetir o algoritmo de entrada aleatória, imediatamente configuraremos o algoritmo que apresenta uma entrada reversa e saída utilizando tomada móvel.

3. Algoritmo com entrada reversa e saída utilizando tomada móvel

  1. Entre na direção oposta da negociação anterior.
  2. Estabeleça a tomada móvel igual a TP.
  3. Espere até que a tomada móvel seja disparada.
  4. Volte ao ponto 1.

Estamos trabalhando com GBPUSD, D1, o depósito é 100.000 USD, o tamanho de lote para fins de estudo é 0,1, TP=500.

Figura 7. Balanço obtido pelo algoritmo com entrada reversa e saída utilizando tomada móvel. GBPUSD, D1

Figura 7. Balanço obtido pelo algoritmo com entrada reversa e saída utilizando tomada móvel. GBPUSD, D1

O algoritmo funciona para movimentos de preço sem tendências e crises.

O mecanismo de operação do algoritmo é o seguinte: um movimento de preço não tendencioso costuma quebrar qualquer tendência e transformá-la em um canal horizontal. Se o Take Profit for disparado no canal horizontal, isso significa que já estamos perto da parede do canal e devemos entrar na direção oposta da negociação anterior, o que é exatamente o que fazemos.

A figura sugere que os valores de redução demonstrados por esse algoritmo são um pouco menores que os anteriores, enquanto que o lucro obtido ao longo de 19 anos com o uso do tamanho mínimo de lote adotado para fins de estudo é 7.000 USD. A lucratividade obtida com o uso do lote ótimo pode ser estimada em aproximadamente 30% ao ano.

Da forma usual, terminaremos este artigo com este gráfico de balanço, com movimento ascendente vigoroso. Esperamos que o par de moedas e os dados históricos escolhidos, bem como a otimização de algoritmo apresentada neste artigo, não tenham deixado você com um sentimento profundo de insatisfação.

Conclusão

O artigo apresentou três algoritmos com entradas de negociação aleatórias e reversas e saídas utilizando limite móvel. Demonstrou o comportamento de preços em EURUSD, USDJPY e GBPUSD em relação ao algoritmo de entrada aleatória e saída utilizando limite móvel.

Com base nos movimentos de estabilidade de preço exibidos, foi proposta a utilização de um algoritmo de entrada reversa e saída utilizando limite móvel, o qual obteve lucratividade estimada de 6% ao ano. De acordo com a estabilidade dos movimentos de preço e a compreensão da operação do algoritmo de entrada aleatória, foram propostos dois algoritmos de entrada reversa, os quais podem alcançar a lucratividade de 30% ao ano. Os mecanismos de operação dos algoritmos foram apresentados e os códigos dos EAs relevantes foram fornecidos.

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

MetaTrader 5: A publicação de previsões comerciais e declarações de negociação ao vivo via e-mail em blogs, redes sociais e sites dedicados MetaTrader 5: A publicação de previsões comerciais e declarações de negociação ao vivo via e-mail em blogs, redes sociais e sites dedicados
Este artigo tem como objetivo apresentar as soluções prontas para as previsões de publicação usando o MetaTrader 5. Ele cobre uma gama de ideias: a partir do uso de sites dedicados à publicação das declarações do MetaTrader, através da criação de seu próprio site com praticamente nenhuma experiência em programação web necessária e, finalmente, a integração com um serviço de microblogging e rede social que permite que muitos leitores participem e sigam as previsões. Todas as soluções apresentadas aqui são 100% gratuitas e possíveis de instalar por qualquer pessoa com um conhecimento básico de e-mail e serviços FTP. Não existem obstáculos para usar as mesmas técnicas para hospedagem profissional e serviços de previsões de negociação comercial.
Visualizar uma estratégia no Tester do MetaTrader 5 Visualizar uma estratégia no Tester do MetaTrader 5
Todos conhecemos o ditado "é melhor ver uma vez do que ouvir cem vezes". Você pode ler diversos livros sobre Paris ou Veneza, mas com base nas imagens mentais, você não teria os mesmos sentimentos do que se estivesse caminhando à noite por essas cidades fabulosas. A vantagem da visualização pode ser facilmente projetada em qualquer aspecto de nossas vidas, incluindo trabalho no mercado, por exemplo, a análise de preço em gráficos utilizando indicadores e, é evidente, a visualização de teste de estratégia. Este artigo contém descrições de todos os recursos de visualização do Strategy Tester do MetaTrader 5.
Migrando do MQL4 para o MQL5 Migrando do MQL4 para o MQL5
Este artigo é um guia rápido para as funções da linguagem MQL4, ele o ajudará a migrar seus programas do MQL4 para MQL5. Para cada função do MQL4 (exceto funções de negociação), são apresentadas a implementação do MQL5 e descrição, isso permite a redução do tempo de conversão significativamente. Para conveniência, as funções do MQL4 são divididas em grupos, similar à referência MQL4.
Crie o seu próprio robô de negociação em 6 passos! Crie o seu próprio robô de negociação em 6 passos!
Se você não sabe como as classes de negócio são construídas, e se assusta com as palavras "Programação orientada a objeto", então, este artigo é para você. Na realidade, você não precisa saber os detalhes para escrever seu próprio módulo de sinais de negociação. Apenas siga algumas regras simples. Todo o resto será feito pelo Assistente MQL5, e você terá um robô de negócio pronto para uso!