Um checklist dos riscos dos robôs antes de operar em conta real - página 3

 
TraderBrasil:

...

Acho que o caminho para desenvolvermos todos esses pontos levantados no tópico é desenvolver um EA comunitário simples e colocar todas as travas necessárias para evitar os problemas elencados no tópico. Poderíamos criar um outro tópico e fazer isso.

Ótima idéia TraderBrasil

Poderíamos retomar o projeto do EA Comunitário que já existe para implementar as idéias que surgirem!

O que vc acha? Basta alguém começar com as idéias, inclusive para melhorar o projeto! 

 
TraderBrasil:

3: Foram feitos testes de situações de latência em conta real que não são visualizadas nas simulações em contas demonstração e no backtesting

 A corretora que está trazendo o MT5 para o Brasil possui servidores no Data Centers da Alog que é do lado da BMF & Bovespa para reduzir a latência do envio de ordens e ter um ambiente estável ( sem queda de internet e falta de energia) basta contratar um cloud server público a versão com o custo mais baixo fica algo em torno de 500 reais, com isso a latência do envio de ordem ficará por volta de 5ms (milissegundo) o que já fica interessante.

Olá TraderBrasil, obrigado por compartilhar tua visão sobre o assunto.

É ótimo que a corretora tenha todas esses cuidados, e é certamente o que esperamos e consideramos fundamental, mas note que a latência é calculada desde o comando de envio da ordem no EA na máquina do trader (ou seja, o próprio sistema do trader influencia na latência) até a ordem ser finalmente executada na BM&FBovespa, devendo-se levar em conta também que o retorno da posição correta deve chegar novamente no EA na máquina do trader.

Certamente as execuções em conta demonstração e backtesting não emulam todo esse roteamento de forma realista, como comentei em posts anteriores. Além disso, não podemos esquecer os casos de algoritmos com erros no nível do servidor (seja na corretora ou na BM&FBovespa), o que pode acontecer pois nenhum sistema é perfeito, o que pode gerar perdas mesmo na melhor estrutura possível, já que irá atingir outra camada do processo.

Isso é muito comum acontecer, por exemplo, quando se implementa versões de protocolos, onde nem sempre a adaptação é exatamente a definida pela especificação original, causando erros que impactam a latência de todo processo.

TraderBrasil:

4: Existe limitação de lote encaminhado por falha ou erro do EA?

Um dos maiores problemas que pode acontecer com um EA é ele sair disparando dezenas de ordens, às vezes várias no mesmo segundo e com isso o trader ter um prejuízo gigantesco, uma das formas de evitar isso é utilizar o comando Sleep após uma ordem ser enviada para o mercado, pois o EA precisa de um tempo para verificar sua nova posição no mercado essa informação é enviada do servidor da corretora, mas existe um risco nisso que o servidor demore mais que o tempo estipulado por você no comando Sleep . Por exemplo:

trade.buy

Sleep(1000) // tempo em milissegundos 

return; 

Se o servidor da corretora demorar menos que 1 segundo para responder sua nova posição atual para a plataforma não vai acontecer nenhum envio de ordem em duplicidade, caso demore mais tempo pode acontecer dela enviar mais de uma ordem de compra se a estratégia ainda estiver dando entrada. 

O Sleep(), como o próprio nome diz, faz o programa do EA dormir por um tempo, o que para ser sincero não considero a melhor solução pois você perde o controle enquanto o programa dorme. Mas não esqueça que o EA encaminha ordens que serão executadas pela plataforma, e você não escapa desses riscos, principalmente com o MT5 tendo sido ainda muito pouco utilizado em bolsas de valores, com dados centralizados.

Já vi problemas acontecerem mesmo após uma ordem ter sido enviada com sincronismo de tempo, pois o comando é uma parte do processo, a execução do comando, que você não tem controle, é outra totalmente independente, inclusive do controle de timing do EA.

Em outras palavras, considero de alto risco quem estiver confiando, para não dizer acreditando, apenas no controle de timing do EA.

Outra forma de fazer isso é travando o envio de ordem pelo próprio código dentro do EA, mas o problema é como fazer isso de forma segura?

Acho que o caminho para desenvolvermos todos esses pontos levantados no tópico é desenvolver um EA comunitário simples e colocar todas as travas necessárias para evitar os problemas elencados no tópico. Poderíamos criar um outro tópico e fazer isso.

Como falei em outros posts, segurança é um processo e exige constante estudo e dedicação, com melhorias permanentes. A melhor solução de hoje pode não ter utilidade amanhã. Portanto não acredito que existam soluções simples. Seja como for, fico à disposição para colaborar com minhas críticas e sugestões na área em qualquer projeto ou tópico por aqui.
 

Muito boa a discussão.

Mais um, figurelli:

7. O robô consegue operar por mais de 5 dias consecutivos de forma totalmente automática sem necessitar intervenções manuais?


Abraços
 

Pessoal, aproveito para colocar mais um item:

16. Existe proteção contra quedas ou indisponibilidade do servidor MT5 na corretora?

Esse check é relacionado à seguinte demanda abaixo, que tem acontecido eventualmente no servidor MetaBrazil, mas que pode ocorrer em servidores das corretoras no futuro.

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Estou com um problema no MT5 de atraso na cotação de vários dias...

73N53N, 2014.04.28 17:20

Estou com esse problema desde sexta-feira, 10:35. Não achei a opção perfil/atendimento. Mais alguém com problema. Será que o servidor está fora do ar ou em manutenção?


 
ElmoDeMoraes:

Muito boa a discussão.

Mais um, figurelli:

7. O robô consegue operar por mais de 5 dias consecutivos de forma totalmente automática sem necessitar intervenções manuais?


Abraços

Grande Elmo, vamos lá, até porque a lista está aumentando :-)

Talvez a pergunta que eu mais receba sobre o MT5 é se as operações são totalmente automáticas.

Isso parece estar relacionado ao fato de que no Brasil levou muito tempo para traders pessoa física terem uma plataforma disponível no padrão do MetaTrader, então ainda existe um receio até que ponto as operações realmente serão automáticas.

Ora, se temos realmente 100% de automação, tudo que queremos é que ela seja realidade na prática também.

Nos campeonatos do MetaTrader (que infelizmente pararam de ocorrer), os robôs eram configurados para operar entre 1/10 e 31/12, ou seja, 3 meses contínuos sem sequer ajuste de setup, ou seja, era o EA sozinho tomando decisões e rodando permanentemente.

Claro, essa é uma realidade do mercado Forex e os robôs ficavam hospedados nos servidores da MetaQuotes, com o suporte deles (um grande trabalho, por sinal).

Mas para a nossa realidade, nada mais válido, na minha opinião, para testar a qualidade de um robô e todo seu ambiente, do que a capacidade dele de se manter ativo sem interferência humana.

Isso acontece por exemplo com servidores Linux, que podem ficar anos e anos sem um reset.

Se conseguirmos o mesmo no Brasil por uma semana, já será muito bom.

Percebo que a corretora que está liderando o processo no Brasil tem evoluído em qualidade a ponto de tornar essa cada vez mais uma realidade, com um ótimo trabalho de busca de estabilidade, e espero que em breve seja possível ter robôs operando por vários meses sem nenhuma interferência (na verdade já tenho conseguido algo próximo disso no Brasil desde fevereiro desse ano).

Abs. 

Automated Trading Championship 2012
  • championship.mql5.com
Automated Trading Championship 2012
 

Prossigamos, então:

 10 .Existe um modo de pânico no Expert Advisor para administrar situações de risco de perda de capital por falhas ou erros dos algoritmos?

Abraços
 
ElmoDeMoraes:

Prossigamos, então:

 10 .Existe um modo de pânico no Expert Advisor para administrar situações de risco de perda de capital por falhas ou erros dos algoritmos?

Abraços

Olá Elmo, nesse proponho um pouco diferente, para não contaminar a reflexão, o que você entende desse checklist, ou seja, o que faz sentido para ti?

Abs. 

 
Um tipo de erro que enfrento em praticamente todos os Eas que possuo é que ocasionalmente os mesmos param de abrir novas ordens de acordo com a estratégia programada. Nestes casos específicos, somente quando abro o MetaEditor e dou o comando para compilar novamente o EA originalmente anexado na carta, é que as ordens retomam as suas aberturas para logo depois pararem novamente. O que poderia causar esse tipo de problema e como evitá-lo?
 
Iunctus:
Um tipo de erro que enfrento em praticamente todos os Eas que possuo é que ocasionalmente os mesmos param de abrir novas ordens de acordo com a estratégia programada. Nestes casos específicos, somente quando abro o MetaEditor e dou o comando para compilar novamente o EA originalmente anexado na carta, é que as ordens retomam as suas aberturas para logo depois pararem novamente. O que poderia causar esse tipo de problema e como evitá-lo?

Olá João Alexandre, obrigado por compartilhar, esse tipo de caso é muito relevante para o item 7 comentado anteriormente ("o robô consegue operar por mais de 5 dias consecutivos de forma totalmente automática sem necessitar intervenções manuais?"), além de um excelente case para esse tipo de teste, embora infelizmente ainda não solucionado e te causando esses problemas. Entretanto certamente existe uma solução para endereçar, principalmente porque é um problema que, apesar de intermitente, está acontecendo continuamente.

Para ser sincero, os problemas que considero mais complexos na área de robôs são aqueles totalmente intermitentes, que acontecem apenas nas contas reais, e que não são visíveis nos logs, obrigando a uma análise profunda para geração de logs pontuais que permitam encontrar a causa do problema. 

Mas não me parece ser o teu caso. Se não fosse o fato de estar acontecendo com vários EAs, tudo indicaria que é um problema de programação, como por exemplo uma situação de memory leak. Porém se todos EAs possuem uma programação utilizando algum template similar pode ser o mesmo caso.

O que te recomendo urgentemente é uma depuração/verificação do ambiente do MT5 e principalmente do código fonte do(s) EA(s) para encontrar a causa raiz, o que provavelmente é possível fazer em poucas horas, pois o risco de operar com um robô nesse estado de intermitência de operação é muito alto.

 
figurelli:

Olá João Alexandre, obrigado por compartilhar, esse tipo de caso é muito relevante para o item 7 comentado anteriormente ("o robô consegue operar por mais de 5 dias consecutivos de forma totalmente automática sem necessitar intervenções manuais?"), além de um excelente case para esse tipo de teste, embora infelizmente ainda não solucionado e te causando esses problemas. Entretanto certamente existe uma solução para endereçar, principalmente porque é um problema que, apesar de intermitente, está acontecendo continuamente.

Para ser sincero, os problemas que considero mais complexos na área de robôs são aqueles totalmente intermitentes, que acontecem apenas nas contas reais, e que não são visíveis nos logs, obrigando a uma análise profunda para geração de logs pontuais que permitam encontrar a causa do problema. 

Mas não me parece ser o teu caso. Se não fosse o fato de estar acontecendo com vários EAs, tudo indicaria que é um problema de programação, como por exemplo uma situação de memory leak. Porém se todos EAs possuem uma programação utilizando algum template similar pode ser o mesmo caso.

O que te recomendo urgentemente é uma depuração/verificação do ambiente do MT5 e principalmente do código fonte do(s) EA(s) para encontrar a causa raiz, o que provavelmente é possível fazer em poucas horas, pois o risco de operar com um robô nesse estado de intermitência de operação é muito alto.

Obrigado pela resposta. Irei tentar solucionar o problema atendendo sua recomendação. 
Razão: