Errori, bug, domande - pagina 2436

 
Slava:

Dovreste sempre finire di leggere i frame in OnTesterDeinit. È come il nostro Padre Nostro.

Per quale motivo?

Poi si lamentano dei fotogrammi mancanti.

Non ho perso nulla.


Un file mqd è perfettamente formato (senza perdite) anche usando un tale Expert Advisor

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

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


Dopo di che l'ho letto tramite la tablatura aggiunta in una sola volta.

 
fxsaber:

Perché?

Non perdo nulla.


Il file mqd è perfettamente formato (senza perdite), anche da un tale Expert Advisor


Dopo di che l'ho letto tramite la tabla aggiunta in una sola volta.

I frame mancano anche nei calcoli matematici veloci se non li leggete dopo l'ottimizzazione.

La rete non è perfetta
Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
 
Slava:

I fotogrammi scompaiono anche nei calcoli matematici veloci se non si finisce di leggerli dopo che l'ottimizzazione è stata completata.

La rete non è perfetta

A quanto pare le mie idee sui telai sono sbagliate, dato che sembra che tu stia dicendo cose senza senso.

I frame non hanno bisogno di essere letti per essere scritti. Dimmi allora come funziona veramente. Non ho lavorato con le cornici attraverso il Cloud.

Per come la vedo io, una cornice è disponibile solo se la si aggiunge a un file mqd.

 
fxsaber:

A quanto pare le mie idee sui telai sono sbagliate, dato che sembra che tu stia dicendo cose senza senso.

Non c'è bisogno di leggere le cornici per scriverle. Dimmi allora come funziona veramente. Non ho lavorato con le cornici attraverso il Cloud.

Per come la vedo io, un frame è disponibile solo se viene aggiunto al file mqd.

Questo è corretto. La cornice è disponibile a condizione che sia aggiunta al file mqd. È da lì che viene letto dalle funzioni del telaio

 
Slava:

Questo è corretto. Un fotogramma è disponibile finché viene aggiunto al file mqd. È da lì che viene letto dalle funzioni del telaio

Poi, se ho capito bene, quelli che sostengono la perdita di frame dovrebbero controllare la loro presenza in OnTesterDeinit.

Non ho avuto questo problema. La libreria è stata scritta per l'accesso ai frame nella modalità normale dell'Expert Advisor nel terminale.


Non ho capito di cosa siano responsabili gli ultimi 16 byte.

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

Dovreste sempre finire di leggere i frame in OnTesterDeinit. È come la nostra patria.

Poi si lamentano dei fotogrammi mancanti.

È la prima volta che sento parlare di questa "Preghiera del Padre Nostro". Dove si dice questo? OnTesterDeinit non dovrebbe essere chiamato dopo che tutti i frame sono stati ricevuti nel terminale? O può saltare altri eventi (in particolare OnTesterPass) che sono nella coda degli eventi? Se è così, dovrebbe essere menzionato nella documentazione, perché è un comportamento atipico.

Se intendete un'interruzione forzata dei test da parte di un utente, allora non ha alcun senso parlare di scomparsa dei fotogrammi.

 
Alexey Navoykov:

È la prima volta che sento parlare di questo "Padre nostro". Dove lo dice? OnTesterDeinit non dovrebbe essere chiamato dopo aver ricevuto tutti i frame nel terminale? O può saltare altri eventi (in particolare OnTesterPass) nella coda degli eventi? Se è così, dovrebbe essere menzionato nella documentazione, perché è un comportamento atipico.

Se intendete una terminazione forzata dei test da parte di un utente, non ha senso parlare di fotogrammi che scompaiono.

OnTesterPass può essere facilmente chiamato alla fine di un passaggio, ma a questo punto, i dati dei frame potrebbero non raggiungere il passaggio a causa di imperfezioni della rete.

Quando le persone dicono che i fotogrammi si perdono, spesso intendono che OnTesterPass non può catturare tutto.

Potete sempre ottenere tutto a OnTesterDeinit, perché Optimizer sul lato Terminale ferma il suo lavoro non quando gli agenti hanno contato tutto, ma quando aspetta che arrivino tutti i fotogrammi.

 
fxsaber:

OnTesterPass può essere facilmente chiamato alla fine di un passaggio, ma i dati del frame del passaggio potrebbero non raggiungerlo a questo punto a causa della non-idealità della rete.

Quindi OnTesterPass viene chiamato senza la presenza di fotogrammi? Bene, allora questo è un errore evidente. Questo evento significa ricevere un fotogramma, non la fine di un passaggio.

Tutti i frame dovrebbero arrivare a OnTesterPass prima che venga chiamato l'evento OnTesterDeinit. Questa è una logica normale e sana. A meno che, di nuovo, non si tratti di un'interruzione forzata del test.

 
Alexey Navoykov:

Quindi OnTesterPass viene chiamato senza la presenza di fotogrammi? Bene, allora questo è un errore evidente. Questo evento significa ricevere un fotogramma, non la fine di un passaggio.

Tutti i frame dovrebbero arrivare a OnTesterPass prima che venga chiamato l'evento OnTesterDeinit. Questa è una logica normale e sana. A meno che, di nuovo, non si tratti di un'interruzione forzata del test.

A quanto pare mi sbagliavo. Pensavo che l'evento TesterPass fosse l'arrivo dei dati di passaggio

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
 
Chi avrebbe fatto irruzione nel formato opt...