Errori, bug, domande - pagina 2484

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

Cari sviluppatori, ho incontrato un problema. Ha bisogno della vostra attenzione.

Il punto è che TesterStop() eExpertRemove() non fermano immediatamente il test. Ecco un'illustrazione dell'errore. Scusate per qualche intemperanza in questo post.

Ho pensato che sarebbe stato più corretto introdurre la costante MQL_TESTER_STOP - un segno della fine dei test da parte di TesterStop() o ExpertRemove().

In questo caso saremmo in grado di selezionare ulteriori azioni:

Un arresto immediato dell'Expert Advisor significa una perdita di memoria. L'arresto immediato dell'Expert Advisor può lasciare dei blocchi di memoria non liberati. Pertanto, l'arresto immediato dell'Expert Advisor viene utilizzato solo quando il terminale client o l'agente tester viene terminato e solo se l'Expert Advisor non elabora il flag di arresto e continua l'esecuzione.

TesterStop dà il comando per terminare i test. Significa che dopo che il gestore corrente OnInit, OnTick, OnTimer, OnChartEvent è finito, nessun altro evento del tester sarà gestito, poiché il ciclo di elaborazione è finito. E OnTester e OnDeinit saranno chiamati

 
Slava:

Fermare l'EA immediatamente significa corruzione della memoria. L'arresto immediato dell'Expert Advisor può lasciare dei blocchi di memoria non liberati. Pertanto, l'arresto immediato dell'Expert Advisor viene utilizzato solo al termine del terminale client o dell'agente tester e solo se l'Expert Advisor non elabora il flag di arresto e continua l'esecuzione.

TesterStop dà il comando per terminare i test. Significa che dopo che il gestore corrente OnInit, OnTick, OnTimer, OnChartEvent è finito, nessun altro evento del tester sarà gestito, poiché il ciclo di elaborazione è finito. E OnTester e OnDeinit saranno chiamati.

Grazie, l'avevo già capito. Ma non risolve il problema. Può essere risolto o con la costanteMQL_TESTER_STOP ocambiando il ritorno da void a bool.

Una soluzione inaspettata è stata suggerita daAlexey Viktorov. Se il ritorno viene usato dopo TesterStop(), tutto sembra essere normalizzato. Come e perché succede, personalmente non riesco a capirlo. Tuttavia...

Quindi, o aggiungete questo punto alla documentazione o cambiatevoid in bool.

P.S. Ho riscontrato questo problema nella build 2085. Non c'era nessun problema prima. Secondo me, dice qualcosa? )))

 

Salve,

Perché nel tester a volte gli indicatori utilizzati non vengono disegnati?

Riavvio il terminale - iniziano a visualizzare...

Poi si fermano di nuovo - anche se il codice non è cambiato...

 

Vorrei anche fare una seconda domanda:

perché gli oggetti grafici non si aggiornano nel tester nonostante un ChartRedraw(0) forzato; ?

Infatti il tester li aggiorna dopo ma con enormi ritardi e scatti...

Grazie.

EDIT: scusate, falso allarme, questo problema è stato risolto (il problema era nel mio codice glitchato)

Ma la domanda sugli indicatori è ancora valida.

 
P.S. versione 2085 del 13 giugno
 

@Slava dimmi, nella build 2007 TesterStop() ha passato il controllo solo in OnDeinit? Non c'è stato alcun trasferimento di controllo a OnTester?

Ecco perché il mio codice ha funzionato bene e il risultato del test in questo caso era 0.

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

@Slava dimmi, nella build 2007 TesterStop() ha passato il controllo solo in OnDeinit? Non c'è stato nessun passaggio di controllo a OnTester?

Ecco perché il mio codice ha funzionato bene e il risultato del test in questo caso era 0.

Create il vostro flag globale, impostatelo prima di chiamare TesterStop e analizzatelo in OnTester.

 
Andrey Khatimlianskii:

Avvia il tuo flag globale, alzalo prima di chiamare TesterStop e analizzalo in OnTester.

Trovato )))) Non si è rivelato così semplice. In linea di principio, il problema è risolto, voglio solo avere la conferma che TesterStop ha funzionato un po' diversamente prima.

 
2085
Linux, Wine-4.0.1

Il link che porta alla descrizione dello strumento si blocca.

Se non c'è un link nella descrizione, l'effetto non appare.


File:
link.gif  5125 kb
 
Vladimir Karputov:

Potreste avere un sistema operativo 32x. Oppure potresti essere a corto di RAM.

computer. lenovo G50-45 (LAPTOR-46OAGFM3)
AMD A4-6210 APU con AMD Radeon
Grafica R3 1.80 GHz
2.00GB DI RAM
tipo di sistema 64bit, processore x64