Errori, bug, domande - pagina 2484
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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
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.
@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.
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.
Se non c'è un link nella descrizione, l'effetto non appare.
Potreste avere un sistema operativo 32x. Oppure potresti essere a corto di RAM.