Erros, bugs, perguntas - página 2484

 
Сергей Таболин:

Caros programadores, encontrei um problema. Precisa da vossa atenção.

A questão é que TesterStop() eExpertRemove() não interrompem o teste imediatamente. Aqui está uma ilustração do erro. Desculpe por alguma intemperança nesse posto.

Pensei que seria mais correcto introduzir a constante MQL_TESTER_STOP - um sinal de término de testes por TesterStop() ou ExpertRemove().

Neste caso, seríamos capazes de seleccionar outras acções:

Uma paragem imediata do Expert Advisor significa uma perda de memória. A paragem imediata do Expert Advisor pode deixar blocos de memória não libertados. Por conseguinte, a paragem imediata do Expert Advisor só é utilizada no final do terminal do cliente ou do agente testador e só se o Expert Advisor não processar a bandeira de paragem e continuar a execução.

TesterStop dá o comando para terminar os testes. Isto significa que após o actual manipulador OnInit, OnTick, OnTimer, OnChartEvent estar terminado, não serão tratados mais eventos do testador, uma vez que o ciclo de processamento está terminado. E OnTester e OnDeinit serão chamados

 
Slava:

Interromper imediatamente a EA significa corrupção da memória. A paragem imediata do Expert Advisor pode deixar blocos de memória não libertados. Por conseguinte, a paragem imediata do Expert Advisor só é utilizada no final do terminal do cliente ou do agente testador e só se o Expert Advisor não processar a bandeira de paragem e continuar a execução.

TesterStop dá o comando para terminar os testes. Isto significa que após o actual manipulador OnInit, OnTick, OnTimer, OnChartEvent estar terminado, não serão tratados mais eventos do testador, uma vez que o ciclo de processamento está terminado. E OnTester e OnDeinit serão chamados.

Obrigado, já tinha percebido isso. Mas não resolve o problema. Pode ser resolvido ou pela constanteMQL_TESTER_STOP ou pelaalteração do retorno do vazio para o bool.

Uma solução inesperada foi sugerida porAlexey Viktorov. Se o retorno for utilizado após o TesterStop(), tudo parece estar normalizado. Como e porquê acontece, pessoalmente, não consigo perceber. No entanto...

Por conseguinte, ou se acrescenta este ponto à documentação ou se muda ovazio para bool.

P.S. Eu encontrei este problema na construção 2085. Antes disso, não havia qualquer problema. Diz-me alguma coisa? )))

 

Olá,

Porque é que no testador por vezes os indicadores utilizados não são desenhados?

Reinicio o terminal - eles começam a exibir...

Depois voltam a parar - embora o código não tenha mudado...

 

Gostaria também de fazer uma segunda pergunta:

porque é que os objectos gráficos não são actualizados no testador apesar de um ChartRedraw(0) forçado; ?

De facto, o testador actualiza-os depois, mas com enormes atrasos e imbecis.

Obrigado.

EDIT: desculpe, falso alarme, este problema está resolvido (o problema estava no meu código de falhas)

Mas a questão sobre os indicadores ainda se mantém.

 
P.S. versão 2085 de 13 de Junho
 

@Slava disse-me, na construção de 2007 TesterStop() passou o controlo apenas em OnDeinit ? Não houve passagem de controlo para a OnTester?

É por isso que o meu código funcionou bem e o resultado do teste, nesse caso, foi 0.

 
Сергей Таболин:

@Slava disse-me, na construção de 2007 TesterStop() passou o controlo apenas em OnDeinit ? Não houve passagem de controlo para a OnTester?

É por isso que o meu código funcionou bem e o resultado do teste em tal caso foi 0.

Crie a sua bandeira global, coloque-a antes de chamar o TesterStop, e analise-a no OnTester.

 
Andrey Khatimlianskii:

Comece a sua bandeira global, levante-a antes de chamar o TesterStop, e analise-a no OnTester.

Já o tenho )))) Acabou por não ser assim tão simples. Em princípio, o problema está resolvido, só quero ouvir a confirmação de que o TesterStop funcionava antes de forma algo diferente.

 
2085
Linux, Wine-4.0.1

A ligação que conduz à descrição da ferramenta fica presa.

Se não houver qualquer ligação na descrição, o efeito não aparece.


Arquivos anexados:
link.gif  5125 kb
 
Vladimir Karputov:

Pode ter um sistema operativo 32x. Ou pode estar a ficar sem RAM.

computador. lenovo G50-45 (LAPTOR-46OAGFM3)
AMD A4-6210 APU com AMD Radeon
Gráficos R3 de 1,80 GHz
2,00GB RAM
processador tipo sistema 64bit, x64