Erros, bugs, perguntas - página 439

 
Ajuda plz, estou a fazer uma EA no Wizard no MEditor5, compilar, colocar num gráfico e este (a EA) trava, ou seja, o ícone aparece e desaparece.
 
cokfx:
Ajuda, plz fazendo um EA no MEditor5, compilando, colocando num gráfico e este (o EA) aparece, ou seja, o ícone aparece e desaparece.

Em que símbolo e em que TF colocamos a coruja? O que é que diz no diário de bordo?
 
Renat:

Isto significa que não há erro do testador ou do ambiente de execução do MQL5, mas há um erro explícito do programador.

Hm. O programador detectou um comportamento inesperado do programa, detectou a essência deste comportamento, reproduziu-o explicitamente, deu um exemplo simples, levando-o ao absurdo(Dormir com valores negativos) e o programador diz que é um erro do programador :) Embora "erro do programador" signifique, por exemplo, uma declaração explícita de que a função do sono no testador não funciona.

Decorre das explicações acima que os criadores acreditam que é aceitável usar valores negativos na função Sleep(). Embora a partir da descrição da função ("...atrasa a execução do Expert Advisor actual ou script para um determinado intervalo") não podemos supor que o intervalo de atraso possa ser calculado com números negativos. Por falar em erros, considere a minha afirmação de que o terminal deveria ter impedido a utilização de valores negativos na função Sleep() como tal.

 
Yedelkin:

Hm. O programador detectou um comportamento inesperado para ele, detectou a essência deste comportamento, reproduziu-o explicitamente, deu um exemplo simples, levando-o ao absurdo(Dormir com valores negativos) e o programador diz que é um erro do programador :) Embora "erro do programador" signifique, por exemplo, uma declaração explícita de que a função do sono no testador não funciona.

Decorre das explicações acima que os criadores acreditam que é aceitável usar valores negativos na função Sleep(). Embora a partir da descrição da função ("...atrasa a execução do Expert Advisor actual ou script para um determinado intervalo") não podemos supor que o intervalo de atraso possa ser calculado com números negativos. Por falar em erros, considere a minha afirmação de que o terminal deveria ter impedido a utilização de valores negativos na função Sleep() como tal.

E provavelmente esperava sair de Sleep antes de entrar, se o atraso fosse negativo?
 

Yedelkin, como imagina que o compilador controla os parâmetros das funções? E há dezenas de tais funções que devem ter os valores dos parâmetros sob controlo.

Há aqui uma de duas coisas - ou velocidade de compilação ou controlo paranóico total.

Escolhemos a primeira via. Neste caso o subsistema de tempo de execução não salta parâmetros errados em tempo de execução ao gerar um código de erro, que podemos obter utilizando a função GetLastError.

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
Teria a amabilidade de calcular o resultado do seu valor negativo, relacioná-lo com 32 bits de int, depois ler sobre o transbordo aritmético e encontrar os seus 17 dias.

Bem-vindo ao mundo da programação real.
 
uncleVic:
E deve ter esperado sair de Sleep antes de entrar nele com um valor negativo?

A suposição sobre as expectativas está errada.

Trabalhar com valores negativos não foi de todo pretendido. Ver o meu post acima:"a partir da descrição da função ("...atrasa a execução da actual EA ou script para um determinado intervalo") é difícil assumir que o intervalo de atraso pode ser contado em números negativos". E não se trata do que "poderia esperar", trata-se do facto de que, de facto, a função SLeep permite trabalhar com valores negativos. Quando isto foi descoberto - enviou uma mensagem. Se considerar aceitável tal operação da função Sleep(), ela continuará a sê-lo.

 
Yedelkin:

mas que, de facto, a função SLeep lhe permite trabalhar com valores negativos.

O que é que sugere? Para terminar o programa numa emergência?
 
Yedelkin:

A hipótese de expectativa está errada.

Não se destinava a trabalhar com valores negativos. Ver o meu post acima:"a partir da descrição da função ("...atrasa a execução da actual EA ou script para um determinado intervalo") é difícil assumir que o intervalo de atraso pode ser contado em números negativos". E não se trata do que "poderia esperar", trata-se do facto de que, de facto, a função SLeep permite trabalhar com valores negativos. Quando isto foi descoberto - enviou uma mensagem. Se considerar tal operação de Sleep() aceitável, continua a sê-lo.

Evidentemente, a representação interna não está assinada.

É possível alterar o tipo de parâmetro para uint.

 
stringo:

Yedelkin, como imagina que o compilador controla os parâmetros das funções? E há dezenas de tais funções que devem ter os valores dos parâmetros sob controlo.

Há aqui uma de duas coisas - ou velocidade de compilação ou controlo paranóico total.

Escolhemos a primeira via. Neste caso, o subsistema de tempo de execução não salta parâmetros incorrectos na fase de execução, gerando um código de erro, que podemos obter utilizando a função GetLastError.

Sim cavalheiros, estou sempre do vosso lado! :) E sei programar apenas uma pequena parte do que sabem (sou guiado apenas pela Referência MQL5). Mas se eu vejo alguns pontos que não são claros para mim pessoalmente - escrevo sobre isso. Tento dar um exemplo vívido do "momento pouco claro", se possível. Assim, se acreditar que o "alarme é falso", então acontece que ou entendi mal o material de referência, ou o material de referência não reflecte toda a informação necessária para compreender o momento. Neste caso, bastar-me-ia ter uma indicação (aviso) na secção "Função de sono" que (1) "o compilador não controla o valor do parâmetro da função, pelo que a função pode trabalhar com valores negativos" e (2) "Função de sono() é totalmente suportada pelo testador".

Não tenho ideia de como funciona o compilador. Procedendo do paradigma descrito do trabalho do compilador, tenho um impulso: reflectir nas notas de dezenas de funções que os valores dos seus parâmetros não são controlados pelo terminal.