Problema com o MT4 Abrindo um negócio, depois fechando-o de novo imediatamente - página 4

 

É um problema complicado por causa das dificuldades em encontrar um padrão consistente.

Este problema só acontece às vezes e não pode ser replicado consistentemente.

Considerei a sugestão dos Números Mágicos, e embora fosse inicialmente uma possibilidade, observações adicionais sugerem que não é provável.

Estou arrancando meu cabelo aqui, e espero que alguém já tenha visto este problema antes.

 
peterc005:

Considerei a sugestão dos Números Mágicos, e embora inicialmente fosse uma possibilidade, observações adicionais sugerem que não é provável.

Quais são as observações em detalhes que definitivamente excluem um fechamento de EA diferente que não pertença a ele? Existem muitas EA por aí que permitem a entrada de um número mágico, mas internamente não o usam ou pior ainda o usam às vezes, mas nem sempre, apenas para certas condições de saída, apenas em alguns ramos de suas dezenas de ifs aninhadas e loops iterantes de ordem duplicada.

Esta busca no google

"OrderSymbol() == Symbol()" -OrderMagicNumber

encontrará muitos deles, começa já com o terceiro da lista (earlybird1, gridmaster_03, e assim por diante, todo o resultado da busca está cheio deles) eles afirmam usar um número mágico, mas internamente simplesmente ignoram-no. Você vai encontrar muitos deles. Este padrão de código defeituoso está em todos os fóruns e acaba sendo colado por cópia em muitos EAs.

 
7bit:

Trata-se de um defeito no produto vendido, não de intenção criminosa.

Claro, defeito, sem problema.

"Sabotagem" tem um significado diferente, e dificilmente de natureza técnica, e não é um substituto para a palavra "defeito".

Tenho certeza que aqueles cuja primeira língua não é o inglês podem ser dispensados.

 
blogzr3:

Mas "Sabotagem" tem um significado diferente, e dificilmente de natureza técnica, e não é um substituto para a palavra "defeito".

O defeito se manifesta como um robô sabotando o outro. Como é o robô que sabota, não consigo ver como um robô pode ter uma intenção. O robô é defeituoso e isto o faz sabotar outros ofícios. Nada mais eu escrevi ou quis dizer. E o vendedor está vendendo produtos defeituosos.
 
7bit:
O defeito se manifesta como um robô sabot sabotando o outro. Como é o robô que sabota, não consigo ver como um robô pode ter uma intenção. O robô é defeituoso e isto o faz sabotar outros ofícios. Nada mais eu escrevi ou quis dizer. E o vendedor está vendendo produtos defeituosos.

A maioria destes EAs parece usar o indicador ZigZag, que é um provável culpado.

Quando aconteceu a primeira vez com um EA chamado "Caliber", eu descompilei o EA para olhar o código. Era um EA de porcaria, mas não havia nada que parecesse suspeito e a lógica do Número Mágico parecia estar bem.

Adicionei lógica extra para evitar que o EA fosse comercializado mais de uma vez a cada 90 minutos.

Por coincidência, isso também melhorou o desempenho geral do EA, pois ele tinha a tendência de atingir um SL após um curto período de tempo, entrando então em uma nova negociação na mesma direção. Você pensaria que com um SL de 30 pip seria um EA seguro, mas se ele atingir esse SL 4 vezes em uma hora, não é bom.

Restrições como esta realmente melhoraram o desempenho do EA em testes posteriores, e depois que eu enviei as mudanças de código ao fornecedor, eles mais tarde lançaram uma atualização com minhas mudanças.

De qualquer forma, na época eu estava testando minhas mudanças no Calibre em uma conta Demo e a mesma coisa aconteceu. Eu podia ver as negociações sendo abertas e fechadas imediatamente. Era apenas uma conta Demo, então eu fiquei sentado lá e vi o que acontecia.

Neste caso, era uma nova conta demo com apenas uma EA em execução. Isto faz com que eu pense que é um problema de plataforma MT4, ao invés de um problema de MQL4.

Agora eu conheço bem o MT4 e a MQL4 e posso descobrir a maioria dos problemas sozinho. Este problema me empanturrou e estou pedindo sugestões a outros.


 

aposto que é um problema de indicador/cálculo. talvez uma divisão por 0 que acontece apenas em alguns casos específicos.

se você puder repetir o erro no testador, isso seria metade do aluguel.

uma vez que você sabe qual EA estava causando este problema e também quando aconteceu deve ser fácil verificar se é repetível.

depois, se você puder repetir o erro, não deve ser tão difícil encontrar o pedaço de código que causa o erro.


//z

 

Here is one of the older log files. The problem is obvious from the number of trades opened and closed.

No arquivo de registro você pode ver que a MT4 e o corretor estão recebendo instruções para abrir e fechar as Ordens, mas por quê?

Arquivos anexados:
 
peterc005:


Uma coisa que notei em um arquivo de log para uma data relevante foi milhares de erros que dizem:

09:36:58 HistoryBase: memória insuficiente para 'EURCHF1' em AddTick()

09:36:58 Manipulador de memória: não pode alocar 160308896 bytes de memória

Ao invés de o arquivo de log dizer 10k, eram 7Mb

 
peterc005:

Aqui está um dos arquivos de registro mais antigos. O problema é óbvio devido ao número de negócios abertos e fechados.

No arquivo de registro você pode ver que o MT4 e o corretor estão recebendo instruções para abrir e fechar as ordens, mas por quê?

Você também tem o outro registro (o da pasta de especialistas/logs)? Este conterá o nome da EA ofensora.
 
zzuegg:

uma vez que você sabe qual EA estava causando isto

Ainda não se sabe qual é a EA que está causando isto.


Tudo o que temos visto até agora são os sintomas (os negócios de vários EAs diferentes são fechados imediatamente após a abertura) e algumas teorias. Ainda não se sabe qual EA está realmente fechando essas negociações. Precisamos dos registros dos especialistas nas pastas dos especialistas/logs de todos os 4 terminais, cobrindo o mesmo período de tempo, para tirar quaisquer outras conclusões. Estes logs poderiam apoiar ou rejeitar minha teoria e, em última instância, mostrarão quem está enviando todas as ordens de fechamento.

Razão: