Errori, bug, domande - pagina 895

 
Konstantin83: Si apre un ordine con un magik. Poi questa magia viene trasferita al commercio e alla posizione. Poi quando la posizione viene chiusa a profitto o stop il numero magico non viene trasferito all'ordine di chiusura.

Come faccio a sapere il profitto di una posizione passando attraverso un trade magico? Il commercio di chiusura non ci va perché non ha un magik.

IDENTIFICATORE DI POSIZIONE

Il Position ID è un numero unico dato ad ogni posizione appena aperta e non cambia durante la sua vita. Un rollover della posizione non cambia il position_identifier.

lungo

POSIZIONE_AFFARE_ID

Identificatore della posizione, in apertura, modifica o chiusura della quale questa operazione è stata coinvolta. Ogni posizione ha un identificatore unico, che viene assegnato a tutte le operazioni effettuate sullo strumento durante il periodo di vita della posizione.

lungo

 
Terminazione anomala significa che l'Expert Advisor è in loop, non controlla IsStopped e viene fermato forzatamente dal terminale.
 
Renat:
Terminazione anomala significa che l'Expert Advisor è in loop, non controlla IsStopped ed è costretto a fermarsi dal terminale.

Posso notare che la terminazione anomala non è solo dovuta al codice MQL, ma anche a singhiozzi interni del runtime stesso. Quindi diciamo una terminatio anormale incontrollabile da MQL.

Per esempio, quando il codice MQL invia un comando per cancellare ObjectDelete un oggetto da un grafico che esiste già (né oggetto né grafico). Ma era lì nel momento in cui il comando è stato inviato.
E il codice MQL non aspetterà la risposta del comando, poiché il blocco si è verificato non nel codice MQL, ma nelle profondità di esecuzione. Cioè, in ObjectDelete stesso. come risultato otterremo una terminazione anomala
Il secondo caso comune è il funzionamento della funzione ObjectsDeleteAll. Poiché è sincrono, si blocca anche sulla cancellazione di oggetti che sono già stati cancellati, ma solo dopo che è stato chiamato.
Il terzo caso è il più dannoso, quando il runtime non può completare il comando Expert Advisor da Deinit, perché l'EA è stato rimosso dal grafico e il grafico è chiuso. Otterremo anche il congelamento dell'ambiente e la terminazione anomala incontrollata.

Tutto ciò che ho descritto sopra, si riferisce specificamente alla fine del lavoro dell'expander nella funzione OnDeinit. Da qualche parte nelle profondità del codice, c'è un'incoerenza tra le azioni finali, in primo luogo con la presenza del grafico, e in secondo luogo - con il comportamento dell'ambiente al Deinit dell'esperto.
Qualcuno fa qualcosa prima e causa una terminazione anomala.

Naturalmente, in alcuni casi sono stato in grado di risolvere questo problema controllando ulteriormente la disponibilità. Ma raramente, si verifica solo uno dei problemi di sincronizzazione descritti. La rimozione/installazione di un indicatore su un grafico che sta cercando di chiudere, la rimozione di oggetti.

 

Vorrei delle risposte su come ci può essere un Drawdown Assoluto MAGGIORE del Saldo Iniziale.

Anche se per definizione.

 Absolute Drawdown
Просадка от начального баланса показывает, насколько уменьшался баланс относительно первоначального значения. Максимально может быть равно начальному балансу, если потеряны все деньги.

Dettagliato nell'argomentohttps://www.mql5.com/ru/forum/8996

 
Renat:
Terminazione anomala significa che l'EA è in loop e non controlla IsStopped ed è forzatamente fermato dal terminale.

Sbagliato.

sergeev:

Potrei notare che la terminazione anomala non è solo dovuta al codice MQL, ma anche a singhiozzi interni nel runtime stesso.

Sì, e ci sono molte di queste sorprese.

Ho riscontrato un blocco del terminale e l'impossibilità di cancellare l'Expert Advisor a causa della memoria insufficiente. In questo caso, anche la registrazione non viene sempre registrata.

 
komposter:

Sbagliato.

Sì, e ci sono molte sorprese come questa.

Ho riscontrato blocchi del terminale e incapacità di cancellare EA se non c'è abbastanza memoria. In questo caso anche la registrazione non funziona sempre.

Come ho capito questo threadhttps://www.mql5.com/ru/forum/8278 si occupa proprio di questo problema.
Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс.
 
Yedelkin:

IDENTIFICATORE DI POSIZIONE

L'identificatore di posizione è un numero unico che viene assegnato ad ogni posizione appena aperta e non cambia per tutta la sua durata. L'inversione di una posizione non cambia il position_identifier.

lungo

POSIZIONE_AFFARE_ID

Identificatore della posizione, in apertura, modifica o chiusura della quale questa operazione è stata coinvolta. Ogni posizione ha un identificatore unico, che viene assegnato a tutte le operazioni effettuate sullo strumento durante il periodo di vita della posizione.

lungo

Grazie, ha aiutato)
 
iTC:
Da quanto ho capito, questo topichttps://www.mql5.com/ru/forum/8278 tratta proprio di questo problema.

No, si trattava degli indicatori.

Un Expert Advisor che supera un certo limite di memoria blocca silenziosamente il terminale. Succede, per esempio, quando vengono caricati molti grafici di diversi simboli/periodi con indicatori.

 
sergeev:

Posso notare che la terminazione anomala non è solo dovuta al codice MQL, ma anche a singhiozzi interni del runtime stesso. Quindi diciamo che la terminatio anormale è incontrollabile da MQL.

Per esempio, quando il codice MQL invia un comando per rimuovere un oggetto ObjectDelete da un grafico che esiste già (né un oggetto, né un grafico). Ma era lì nel momento in cui il comando è stato inviato.
E il codice MQL non aspetterà la risposta del comando, poiché il blocco si è verificato non nel codice MQL, ma nelle profondità di esecuzione. Cioè, in ObjectDelete stesso. come risultato otterremo una terminazione anomala
Il secondo caso comune è il funzionamento della funzione ObjectsDeleteAll. Poiché è sincrono, si blocca anche sulla cancellazione di oggetti che sono già stati cancellati, ma solo dopo che è stato chiamato.
Il terzo caso è il più dannoso, quando il runtime non può completare il comando Expert Advisor da Deinit, perché l'EA è stato rimosso dal grafico e il grafico è chiuso. Otterremo anche il congelamento dell'ambiente e la terminazione anomala incontrollata.

Tutto ciò che ho descritto sopra, si riferisce specificamente alla fine del lavoro dell'expander nella funzione OnDeinit. Da qualche parte nelle profondità del codice, c'è incoerenza tra le azioni finali, in primo luogo con la presenza del grafico, e in secondo luogo - con il comportamento dell'ambiente al Deinit dell'esperto.
Qualcuno fa qualcosa prima e causa una terminazione anomala.

Naturalmente, in alcuni casi sono stato in grado di risolvere questo problema controllando ulteriormente la disponibilità. Ma raramente, si verifica solo uno dei problemi di sincronizzazione descritti. La rimozione/installazione di un indicatore su un grafico che sta cercando di chiudere, la rimozione di oggetti.

Grazie, sarà controllato.
 
komposter:

No, si trattava degli indicatori.

Un Expert Advisor che supera un certo limite di memoria blocca silenziosamente il terminale. Questo succede, per esempio, quando vengono caricati molti grafici di diversi simboli/periodi con indicatori.

Grazie, lo controlleremo sicuramente.