Erro de validação ao liberar o robô comercial para o mercado. - página 4

 

Olá!

Hoje o validador começou a dar uma mensagem:

Checado com três examinadores, 10 segundos e falha. Qual pode ser o problema, talvez você tenha algo com o software!

P.S. Eu coloquei para cheques no OnTick() a primeira linha da impressão:

Não pode ser um relatório de teste em branco!!! Meus troncos estão cheios:


 
Andrey Kaunov:

Hoje, o validador começou a dar uma mensagem:

Foi, passou. Erro do validador.

 
Andrey Kaunov:

Olá!

O validador começou hoje a dar uma mensagem:

Obrigado por sua mensagem. Corrigido.

 

Sim, o validador está instalado e funcionando. Mas agora há outra coisa estranha. O validador utilizado para dar este resultado

Ao mesmo tempo, no meu testador vai tudo bem. Coloco uma muleta para verificar o código (divisão por zero):


E conseguiu:

Acontece que, durante o teste, o validador ainda sai em função da abertura do pedido. Não está absolutamente claro o porquê:não há operações comerciais.

 
Andrey Kaunov:

Sim, o validador está instalado e funcionando. Mas agora há outra coisa estranha. O validador utilizado para dar este resultado

Ao mesmo tempo, no meu testador vai tudo bem. Coloco uma muleta para verificar o código (divisão por zero):


E conseguiu:

Acontece que, durante o teste, o validador ainda sai em função da abertura do pedido. Não entendo porque o analisadornão geraoperações comerciais.

Muito provavelmente, ocorre um erro ao enviar um pedido e o registro contém algo como GetLastError. Seria ótimo se uma função do tipo Throw(code) fosse adicionada à MQL que levaria a uma parada como divisão por zero mas retornaria o código e então poderíamos escrever Throw(GetLastError()) para obter uma dica no log. A propósito, existe a função TerminalClose(retcode) - você pode tentar usá-la, mas suspeito que ela esteja simplesmente desativada no autotester.

 

Concordo plenamente.

O ideal seria, é claro, que o validador enviasse logs de testes em vez de apenas um relatório de três linhas. Então, haveria uma chance de descobrir o que está errado em vez de apontar dedos no céu.

Por favor, pense sobre isso.

 
Andrey Kaunov:

Concordo plenamente.

O ideal seria, é claro, que o validador enviasse logs de testes em vez de apenas um relatório de três linhas. Então, haveria uma chance de descobrir o que está errado em vez de apontar dedos no céu.

Por favor, pense sobre isso.

Em vez disso, haverá maneiras de contornar (esconder) um determinado erro, em vez de redigir corretamente a lógica das funções comerciais. Não deve haver erros de validação se os parâmetros de entrada "idiotas" forem devidamente contabilizados e tratados, ou se as condições comerciais forem calculadas de forma incorreta para o comércio.

 

Não há nenhum erro aqui, não entendo o que está acontecendo. Eu coloquei uma muleta (divisão por zero) antes da função comercial:

Funciona:

Eu o retiro, ele me dá o mesmo

Nenhuma operação comercial.

Não entendo o que impede o validador de OrderSend(). Afinal, se chegar até ele, deve haver erros de faturamento (embora eu os tenha corrigido todos) 130, 131, 134, ..., mas não"nenhuma operação comercial". Tudo o que tenho que fazer agora é inserir no OnInit() uma ordem pendente em algum lugar distante dele, não sei como lutar com ela.

 
Andrey Kaunov:

Não há nenhum erro aqui, não entendo o que está acontecendo. Eu coloquei uma muleta (divisão por zero) antes da função comercial:

Funciona:

Eu o retiro, ele me dá o mesmo

Nenhuma operação comercial.

Eu não entendo o que impede o validador de OrderSend(). Afinal, se chegar até ele, deve haver erros de faturamento (embora eu os tenha corrigido todos) 130, 131, 134, ..., mas não"nenhuma operação comercial". Tudo o que tenho que fazer agora é inserir no OnInit() uma ordem pendente em algum lugar distante dele, não sei como lutar com ela.

Boa tarde. Tente acrescentar a função sobre a qual escrevi aqui anteriormente.
 
Provavelmente é só ela.