Erros, bugs, perguntas - página 2436

 
Slava:

Deve sempre terminar a leitura das molduras no OnTesterDeinit. É como a Oração do Nosso Senhor.

Para quê?

Depois queixam-se de quadros em falta.

Não perdi nada.


Um ficheiro mqd- é perfeitamente formado (sem perdas) mesmo usando um consultor especializado

input int Range = 1; // 1..10

double OnTester()
{
  uchar Data[];
  
  FrameAdd(NULL, 0, 0, Data);
  
  return(0);
}


Depois disso, leio-o através da tablatura acrescentada de uma só vez.

 
fxsaber:

Porquê?

Eu não perco nada.


O ficheiro mqd- é perfeitamente formado (sem quaisquer perdas), mesmo por um consultor especializado.


Depois disso leio-o através da tabla adicionada de uma só vez.

Os quadros perdem-se mesmo em cálculos matemáticos rápidos se não os lermos após a optimização estar concluída.

A rede não é perfeita
Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
 
Slava:

Os quadros desaparecem mesmo em cálculos matemáticos rápidos se não se terminar de os ler depois de a optimização estar completa.

A rede não é perfeita

Aparentemente, as minhas ideias sobre molduras estão erradas, uma vez que parece estar a dizer disparates.

As molduras não precisam de ser lidas para serem escritas. Diga-me então como funciona realmente. Não tenho trabalhado com molduras através da Nuvem.

Do meu ponto de vista, uma moldura só está disponível se a adicionar a um ficheiro mqd.

 
fxsaber:

Aparentemente, as minhas ideias sobre molduras estão erradas, uma vez que parece estar a dizer disparates.

Não é necessário ler os quadros para os anotar. Diga-me então como funciona realmente. Não tenho trabalhado com molduras através da Nuvem.

A meu ver, uma moldura só está disponível se for adicionada ao ficheiro mqd.

Isso é correcto. A moldura está disponível desde que seja adicionada ao ficheiro mqd. É a partir daí que é lido pelas funções da moldura

 
Slava:

Isto é correcto. Uma moldura está disponível desde que seja adicionada ao ficheiro mqd. É a partir daí que é lido pelas funções da moldura

Depois, se bem entendi, aqueles que reclamam a perda de quadros devem verificar a sua presença no OnTesterDeinit.

Eu não tinha tal problema. A biblioteca foi escrita para acesso às molduras no modo normal do Conselheiro Especialista no Terminal.


Não compreendi, quais são as responsabilidades dos últimos 16 bytes.

struct FRAME
{
  ulong Pass;
  long ID;
  short String[64];
  double Value;
  int SizeOfArray;
  long Tmp[2];
 
Slava:

Deve sempre terminar a leitura das molduras no OnTesterDeinit. Isto é como a nossa pátria.

Depois, as pessoas queixam-se de quadros desaparecidos.

Esta é a primeira vez que ouço falar desta "Oração do Nosso Pai". Onde é que diz isso? Não deveria OnTesterDeinit ser chamado depois de todos os quadros serem recebidos no terminal? Ou pode saltar sobre outros eventos (em particular OnTesterPass) que estejam na fila de eventos? Em caso afirmativo, deve ser mencionado na documentação, porque se trata de um comportamento atípico.

Se se refere a uma paragem forçada dos testes por um utilizador, então não vale a pena falar do desaparecimento de quadros.

 
Alexey Navoykov:

Esta é a primeira vez que ouço falar deste "Pai Nosso". Onde é que diz isso? Não deveria OnTesterDeinit ser chamado depois de receber todas as molduras no terminal? Ou pode saltar sobre outros eventos (em particular OnTesterPass) na fila de eventos? Em caso afirmativo, deve ser mencionado na documentação, porque é um comportamento atípico.

Se se refere a um término forçado dos testes por um utilizador, não faz sentido falar sobre o desaparecimento de quadros.

OnTesterPass pode ser facilmente chamado no final de um passe, mas neste ponto, os dados da moldura podem não chegar ao passe devido à imperfeição da rede.

Quando as pessoas dizem que os quadros se perdem, significam muitas vezes que a OnTesterPass não consegue apanhar tudo.

Pode sempre obter tudo no OnTesterDeinit, porque o Optimizer do lado do Terminal pára o seu trabalho não quando os Agentes contaram tudo, mas quando espera até que todos os quadros cheguem.

 
fxsaber:

OnTesterPass pode ser facilmente chamado no final de um passe, mas os dados do pass frame podem não chegar a ele até este ponto devido à não idealidade da rede.

Então OnTesterPass é chamado sem quadros presentes? Bem, então este é um erro óbvio. Este evento significa receber um quadro, não o fim de um passe.

Todas as molduras devem chegar ao OnTesterPass antes do evento OnTesterDeinit ser chamado. Esta é uma lógica saudável normal. A menos que, mais uma vez, estejamos a falar de uma interrupção forçada do teste.

 
Alexey Navoykov:

Então OnTesterPass é chamado sem quadros presentes? Bem, então este é um erro óbvio. Este evento significa receber um quadro, não o fim de um passe.

Todas as molduras devem chegar ao OnTesterPass antes do evento OnTesterDeinit ser chamado. Esta é uma lógica saudável normal. A menos que, mais uma vez, estejamos a falar de uma interrupção forçada do teste.

Aparentemente, estava enganado. Pensava que o evento TesterPass era a chegada dos dados do passe

Core 1  pass 0 returned result 100000.00 in 0:00:00.433
Core 1  pass 1 returned result 100000.00 in 0:00:00.001
Core 1  pass 2 returned result 100000.00 in 0:00:00.001
Core 1  pass 3 returned result 100000.00 in 0:00:00.001
 
Quem entraria no formato opt...
Razão: