Errori, bug, domande - pagina 1509
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
Non posso accedere alla piattaforma, il sito web dice che il terminale web non è supportato da questo MetaTrader Server. Contatta il tuo broker per aggiornare il server, la piattaforma dice nessuna connessione?
Cari sviluppatori, qual è l'ordine dell'operazione della funzione OnDeinit - l'ordine di cancellazione degli oggetti e delle altre variabili, la cancellazione della memoria, ecc.
OnDeinit è una funzione ordinaria in MQL4/5 che viene chiamata in certe situazioni. Questo è il modo in cui lo si programma, così sarà.
Per favore, sii più specifico nella tua domanda. Cosa ti interessa esattamente?
OnDeinit è una funzione ordinaria in MQL4/5 che viene chiamata in certe situazioni. Questo è il modo in cui lo si programma, così sarà.
Per favore, sii più specifico nella tua domanda. Cosa ti interessa esattamente?
Con gli oggetti che sono esplicitamente cancellati (creati nella memoria allocata), tutto è chiaro. Quello che mi interessa è il processo di liberazione della memoria e di cancellazione degli oggetti creati nella memoria incustodita.
Cioè ci sono, per esempio, due oggetti e una variabile di tipo fondamentale:
Mi interessa sapere quale sarà l'ordine di liberazione della memoria e di cancellazione di tutti gli oggetti, quando il programma viene cancellato.
...
Quando può bloccarsi il terminale? - Sembra che ci siano situazioni normali in cui il terminale dovrebbe bloccarsi.
Da quello che ho visto, si blocca sempre (si blocca per un periodo di tempo indefinito) quando:
1. Connessione a un server.
2. P1. Quando si passa da un conto all'altro.
3. Durante l'avvio del terminale.
L'ultima volta che l'ho fatto, il terminale si è bloccato all'avvio. Ho guardato il task manager, il terminale si è mangiato la memoria a poco a poco, dopo un paio di minuti si è mangiato tutti gli 8Gb di memoria e il sistema operativo si è bloccato insieme al terminale. Ho dovuto premere il pulsante "reset" sull'unità di sistema.
Dopo aver riavviato il computer ho avviato il terminale e la storia dei blocchi si ripete, il sistema ha smesso di rispondere ai miei frenetici tentativi di svegliarlo insieme al terminale.
Dopo aver riavviato il computer ho cancellato tutti i file di configurazione del terminale, l'ho lanciato - la storia si blocca di nuovo.
Dopo aver riavviato il computer, ho cancellato tutti i file della cronologia del server commerciale e solo dopo questo il computer mobile ha iniziato a funzionare normalmente, e solo dopo averci pensato per circa 3 minuti.
Il terminale si blocca da costruzione a costruzione. Win10x64.
Quando il terminale può riagganciare? - Sembra che ci siano situazioni normali in cui il terminale dovrebbe bloccarsi.
Secondo le mie osservazioni, il terminale si blocca sempre (si blocca per un periodo di tempo indefinito) quando:
1. Connessione a un server.
2. P1. Quando si passa da un conto all'altro.
3. Durante l'avvio del terminale.
L'ultima volta che l'ho fatto, il terminale si è bloccato all'avvio. Ho guardato il task manager, il terminale si è mangiato la memoria a poco a poco, dopo un paio di minuti si è mangiato tutti gli 8Gb di memoria e il sistema operativo si è bloccato insieme al terminale. Ho dovuto premere il pulsante "reset" sull'unità di sistema.
Dopo aver riavviato il computer ho avviato il terminale - storia con congelamento ripetuto, il sistema ha smesso di rispondere ai miei frenetici tentativi di svegliarlo insieme al terminale.
Dopo aver riavviato il computer ho cancellato tutti i file di configurazione del terminale, l'ho lanciato - la storia si blocca di nuovo.
Dopo aver riavviato il computer, ho cancellato tutti i file della cronologia del server commerciale e solo dopo questo il computer mobile ha iniziato a funzionare normalmente, e solo dopo averci pensato per circa 3 minuti.
Il terminale si blocca da costruzione a costruzione. Win10x64.
È la prima volta che incontro questo tipo di codice, quindi chiedo agli esperti come dividere il codice in parti e includere correttamente i file
Ecco un esempio
Cioè una classe eredita da un'altra classe e ha una struttura; la struttura nell'esempio, l'ho abbreviata, e poi ci sono metodi per lavorare con un array della struttura
Ho 40-50 o forse più di questi metodi.
Vorrei spostare ogni metodo nel file include o organizzare la struttura del codice in qualche altro modo, in modo da non creare 10 000-20 000 linee di codice nell'Expert Advisor stesso che sarà difficile da cercare in seguito.
L'unica cosa che posso vedere al momento è inviare un array della struttura per riferimento
come
Mi sembra che questa non sia una buona scelta.
Cosa possiamo fare?
Capisco il processo di cancellazione degli oggetti cancellati esplicitamente (creati nella memoria allocata). Sono interessato al processo di liberazione della memoria e alla cancellazione degli oggetti creati nella memoria automatica.
Per esempio, ci sono due oggetti e una variabile di tipo fondamentale:
Vorrei sapere quale ordine di deallocazione della memoria e di cancellazione di tutti gli oggetti seguirà quando si cancella il programma.
OnDeinit non ha niente a che fare con questo.
Avete letto la documentazione?
Il terminale viene eseguito solo da admin, e tutti i file meta-editor sono anche da admin, nessun problema.
È la prima volta che incontro questo tipo di codice, quindi chiedo agli esperti come dividere il codice in parti e includere correttamente i file
Ecco un esempio
Cioè una classe eredita da un'altra classe e ha una struttura; la struttura nell'esempio, l'ho abbreviata, e poi ci sono metodi per lavorare con un array della struttura
Ho 40-50 o forse più di questi metodi.
Vorrei spostare ogni metodo nel file include o organizzare la struttura del codice in qualche altro modo, in modo da non creare 10 000-20 000 linee di codice nell'Expert Advisor stesso che sarà difficile da cercare in seguito.
L'unica cosa che posso vedere al momento è inviare un array di strutture per riferimento
come
Non credo che questa sia la scelta migliore.
Cosa posso fare?
Se le classi sono capienti, è meglio creare un elenco separato per ogni classe e nel codice in cui si usano gli oggetti di questa classe, includere l'elenco della classe attraverso #include. Lo stesso vale per le strutture e le librerie di funzioni. Se le classi e le strutture non sono capienti, puoi includerle in un unico elenco. Potete anche creare un elenco di definizioni e macro comuni.
E non abbiate paura di avere un'intera famiglia di elenchi relativi a un programma, è comune, ho usato nei miei sistemi di trading 15-20 elenchi, più le directory con .bmp e .gif per l'interfaccia. Distribuisco tutti gli annunci in elenchi separati. È più facile da navigare quando si trovano errori e aggiornamenti.