Errore di convalida quando si rilascia il robot di trading al mercato. - pagina 4

 

Ciao!

Oggi il validatore ha iniziato a dare un messaggio:

Controllato con tre esaminatori, 10 secondi e fallisce. Quale può essere il problema, forse hai qualcosa con il software!

P.S. Ho messo per i controlli in OnTick() la prima linea della stampa:

Non può essere un rapporto di tester in bianco!!! I miei registri sono pieni:


 
Andrey Kaunov:

Oggi, il validatore ha iniziato a dare un messaggio:

Lo è stato, è passato. Errore del validatore.

 
Andrey Kaunov:

Ciao!

Il validatore ha iniziato a dare un messaggio oggi:

Grazie per il suo messaggio. Corretto.

 

Sì, il Validator è attivo e funzionante. Ma ora c'è un'altra cosa strana. Il validatore usato per dare questo risultato

Allo stesso tempo sul mio tester va tutto bene. Ho messo una stampella per controllare il codice (divisione per zero):


E ottenuto:

Si scopre che, durante il test, il validatore lascia ancora sulla funzione di apertura dell'ordine. Non è assolutamente chiaro perché dà:nessuna operazione di trading

 
Andrey Kaunov:

Sì, il Validator è attivo e funzionante. Ma ora c'è un'altra cosa strana. Il validatore usato per dare questo risultato

Allo stesso tempo sul mio tester va tutto bene. Ho messo una stampella per controllare il codice (divisione per zero):


E ottenuto:

Si scopre che, durante il test, il validatore lascia ancora sulla funzione di apertura dell'ordine. Non capisco perché l'analizzatorenon generaoperazioni di trading.

Molto probabilmente, si verifica un errore durante l'invio di un ordine e il log contiene qualcosa come GetLastError. Sarebbe bello se una funzione del tipo Throw(code) fosse aggiunta a MQL che porti a un arresto come la divisione per zero ma restituisca il codice e poi potremmo scrivere Throw(GetLastError()) per avere un suggerimento nel log. C'è, comunque, la funzione TerminalClose(retcode) - puoi provare a usarla, ma sospetto che sia semplicemente disabilitata in autotester.

 

Sono completamente d'accordo.

Idealmente, naturalmente, il validatore invierebbe dei log di test piuttosto che un semplice rapporto di tre righe. Allora ci sarebbe la possibilità di capire cosa c'è di sbagliato invece di puntare il dito in cielo.

Per favore, pensateci.

 
Andrey Kaunov:

Sono completamente d'accordo.

Idealmente, naturalmente, il validatore invierebbe dei log di test piuttosto che un semplice rapporto di tre righe. Allora ci sarebbe la possibilità di capire cosa c'è di sbagliato invece di puntare il dito in cielo.

Per favore, pensateci.

Piuttosto, ci saranno modi per aggirare (nascondere) un particolare errore piuttosto che redigere correttamente la logica delle funzioni di trading. Non ci dovrebbero essere errori di convalida se i parametri di input "idioti" sono correttamente considerati e gestiti, o se le condizioni di trading sono calcolate in modo errato per il commercio.

 

Non c'è nessun errore qui, non capisco affatto cosa stia succedendo. Ho messo una stampella (divisione per zero) prima della funzione commerciale:

Funziona:

Se lo tolgo, mi dà lo stesso

Nessuna operazione commerciale.

Non capisco cosa impedisce al validatore di OrderSend(). Dopo tutto, se gli arriva, ci devono essere errori di fatturazione (anche se li ho corretti tutti) 130, 131, 134, ..., ma non"nessuna operazione commerciale". Tutto quello che devo fare ora è inserire in OnInit() un ordine pendente da qualche parte lontano da esso, non so come combattere con esso.

 
Andrey Kaunov:

Non c'è nessun errore qui, non capisco affatto cosa stia succedendo. Ho messo una stampella (divisione per zero) prima della funzione commerciale:

Funziona:

Se lo tolgo, mi dà lo stesso

Nessuna operazione commerciale.

Non capisco cosa impedisce al validatore di OrderSend(). Dopo tutto, se gli arriva, ci devono essere errori di fatturazione (anche se li ho corretti tutti) 130, 131, 134, ..., ma non"nessuna operazione commerciale". Tutto quello che devo fare ora è inserire in OnInit() un ordine pendente da qualche parte lontano da esso, non so come combattere con esso.

Buon pomeriggio. Provate ad aggiungere la funzione di cui ho scritto qui prima.
 
Probabilmente è solo lei.
Motivazione: