Erros, bugs, perguntas - página 440

 
Renat:
Por favor, calcule o resultado do seu valor negativo e correlacione-o com 32 bits de int, depois leia sobre o transbordo aritmético e encontre os seus 17 dias.

Bem-vindo ao mundo da programação real.

Eu não fiz a pergunta "de onde vieram 17 dias? Repito: identifiquei uma situação no testador que não compreendi, disse-ma e recebi uma explicação de que (1) a função Sleep( ) também funciona com valores negativos, e dá um atraso não nulo, (2) o trabalho da função Sleep() é emulado no testador. Se os criadores o considerarem aceitável, o que posso devolver? Não há necessidade de calcular exactamente 17 dias.

Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
stringo:
O que é que sugere? Encerrar o programa numa emergência?
É difícil sugerir sem saber como funciona o sistema. O meu objectivo é sondar a questão e depois cabe-lhe a si. Desta vez verificou-se que a questão se enquadra plenamente na ideologia actual do terminal. Bem, então, saberei mais.
 
uncleVic:

Sim. Não vimos o elefante.

Tenho uma forte suspeita sobre essa linha:


e, neste caso:

Parece-me que o compilador não deve perder isto. Tem o quê? Nem sequer um aviso? Caso contrário, apresentar um pedido ao Service Desk. Ok?


aplicação#154746

Como obtemos o número de sequência do elemento com o valor máximo/mínimo na matriz s1.open?

 
Yedelkin:

Neste caso, bastar-me-ia ter uma instrução na secção "Função de sono"... (2) "A função de sono() é totalmente suportada pelo testador".

Destacámos as questões básicas sobre testes num artigo separado, "Fundamentos de Testes no MetaTrader 5". Aqui tentamos explicar a maior parte das nuances da utilização de várias funções no testador. Explicámos também as funções Sleep():

Função Sleep() no testador

A função Sleep() permite suspender por algum tempo a execução de um programa mql5 num Expert Advisor ou num script, quando se trabalha num gráfico. Isto pode ser necessário ao solicitar alguns dados, que no momento do pedido não estão prontos e é preciso esperar até que estejam prontos. Um exemplo detalhado do uso da função Sleep() pode ser encontrado na secção Organização do acesso aos dados.

No testador, as chamadas de Sleep() não atrasam o processo de teste. Ao chamar Sleep(), os ticks gerados são "jogados" dentro do prazo especificado, o que pode desencadear ordens pendentes, paragens, etc. Após a chamada Sleep(), o tempo simulado no testador é aumentado pelo intervalo especificado no parâmetro Função de Sono.

Se, como resultado da execução de Sleep() o tempo actual no testador exceder o fim do período de teste, será recebido um erro "loop infinito em Sleep". Se tal erro ocorrer, os resultados dos testes não são descartados, todos os cálculos são completados (número de negócios, drawdown, etc.) e os resultados são passados para o terminal.

A função Sleep() não funcionará em OnDeinit() pois após a sua chamada o tempo de teste é garantido para além do intervalo de teste.



Figura 7. Esquema de utilização da função Sleep() no terminal de teste MetaTrader 5.

 
Rosh:

Cobrimos especificamente as principais questões de testes no nosso artigo separado, Fundamentos de Testes no MetaTrader 5. Nele, tentamos explicar a maioria das nuances da utilização de várias funções no testador. Também explicámos a função Sleep():

Lamento, a culpa é mesmo minha. Não o testei durante 9 meses e perdi o artigo.

Seria bom se mencionasse artigos chave nas secções correspondentes do Guia de Referência (já sugeri algo semelhante no ano passado mas hoje é uma boa oportunidade para o fazer novamente). Afinal de contas, todos nós usamos F1 em primeiro lugar.

 
Ou seja, não fizeram o que vos pedi.

Tem aqui várias pessoas a tentar apontar o seu simples erro com o transbordamento aritmético.
 
Renat:
Ou seja, não fizeste o que te pedi.

Tem aqui várias pessoas a tentar apontar o seu simples erro de sobrecarga aritmética.

==============================================================

Perguntou o senhor:

Renat:
Teria a amabilidade de calcular o resultado do seu valor negativo, correlacioná-lo com 32 bits de int, depois ler sobre o transbordo aritmético e encontrar os seus 17 dias...

Eu respondi: Sim, não fiz a pergunta "de onde vieram exactamente 17 dias? :) etc.

Respondendo à sua pergunta actual. O que pediu - Eu não fiz. Porque foi feito por mim ontem (eu tinha dados iniciais ligeiramente diferentes, mas a essência do que eu entendia). Se alguém tivesse compilado esse guião, eu teria recebido tantos como dois avisos. Overflow/cutoff - Eu próprio tratei disso ontem.

As questões foram: (1) a função funciona com valores negativos do argumento e (2) dá um atraso no testador para tais argumentos. Mais uma vez aponta para "erro de programador" com um excesso de tipo int. - Isto é, rejeita a minha amostra de teste apenas porque "valor transbordado" foi especificado ao seleccionar o argumento da função Sleep(). Mas a questão não está em "valor transbordado". É apenas um toque adicional para a amostra de teste. Parece que os participantes da discussão o compreenderam. No final, pode inserir "valor não transbordante" no exemplo do teste - sendo todas as outras coisas iguais, a essência da questão permanecerá a mesma (a questão em si já foi tratada).

Seja como for, obrigado pela dica. Porque se o compilador não o tivesse avisado, o seu conselho teria provavelmente dado jeito e tê-lo-ia feito pensar duas vezes.

 

Quais são as limitações da sua utilização? W =(long)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_PIXELS,0)
H =(long)ChartGetInteger(Chart_ID[i],CHART_HEIGHT_IN_PIXELS,0);
W_B =(long)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_BARS,0));

Chamar a função de void OnInit() tudo está correcto, mas de void OnTick() os dados estão incorrectos em particular CHART_WIDTH_IN_BARS dá o número de barras visíveis, embora eu entenda que deve dar o número de barras adequadas ao gráfico sem compensação

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Virty:

Desculpem a questão primitiva.

A consulta comercial não está a decorrer. Erro 10014 - volume errado no pedido.

Como posso compreender/calcular a partir do interior da EA qual é o volume máximo e mínimo do lote que posso comprar neste momento?

A função OrderCheck não é adequada, porque apenas verifica e não diz quantos lotes podem ser comprados.

Veja a enumeração ENUM_SYMBOL_INFO_DOUBLE e a função correspondente. É a isto que se refere?
 
Yedelkin:
Ver enumeração ENUM_SYMBOL_INFO_DOUBLE e função correspondente. É a isso que se refere?
Sim, obrigado. SYMBOL_VOLUME_MAX encontrou-o eu próprio, e você ajudou.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5