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
Prova ad aggiornare il terminale alla versione 1065. Le versioni precedenti avevano un errore di reinizializzazione semplicemente cambiando l'intervallo di tempo. Potrebbe aiutare :)
https://www.mql5.com/ru/forum/187690
Ho il terminale 5.00 b1571
Potete salvare i valori delle variabili da qualche parte, per esempio in globals. Dopo averle tradotte, potete leggere e ripristinare le variabili.
E poi Deinit finirà il suo lavoro e rovinerà tutto. Non ha senso fare Init e Deinit regolari se si fanno i propri Init e Deinit personalizzati.
Anch'io ho incontrato questo problema. (
E poi Deinit finirà il suo lavoro e rovinerà tutto. Non ha senso fare Init e Deinit regolari se si fanno i propri Init e Deinit personalizzati.
Anch'io ho incontrato questo problema. (
Sono completamente d'accordo (non ha senso in Init e Deinit regolari)
Forse provate ad assegnare agli oggetti grafici un periodo TF come parte del loro prefisso del nome,
e poi applicare qualcosa del genere:
Sì, ho dovuto fare qualcosa del genere, ma è una soluzione parziale.
Potete fare lo stesso con le variabili attraverso una risorsa o dei file, ma questa è una risorsa aggiuntiva separata, che avrebbe potuto essere evitata sistemando MT5
Ingombrare il codice con funzioni laterali extra, controlli, ecc. (SENZA....)
Ho sempre pensato (si scopre invano), che quando cambio TF, prima deinito sul vecchio TF e poi Init sul nuovo. Si tratta di un corso logico degli eventi. Mi sono basato su questa logica quando ho sviluppato Expert Advisors e indicatori. E ora si scopre che è una vera e propria assurdità con eventi che interrompono la sequenza degli eventi...
A volte ho notato, lavorando con i grafici e gli oggetti grafici, che qualcosa non andava e ho dovuto cambiare TF diverse volte per vedere che tutto fosse visualizzato correttamente.
Ora sono i codici dove qualcosa in deiniti cambia e poi anche initi cambia di nuovo... e si scopre che la sequenza è viceversa!!! Questa è una logica terribile. A chi è venuto in mente questo?
La prima cosa che mi viene in mente è che nel mio deinit lo stato precedente (pulsanti premuti/rilasciati) è memorizzato nelle variabili globali e poi i pulsanti sono impostati secondo i valori salvati negli inits. E sono i pulsanti che non sempre si resettano correttamente. Questa è la prima cosa che ho ricordato, forse troverò qualcos'altro... Domani si scaverà in giro.
Grazie agli sviluppatori, hanno messo un sacco di lavoro...
In Deinit, scrivete tutti i dati nei globali. Imposta uno dei globali come semaforo tramiteGlobalVariableSetOnCondition.
Init scrivere che se il semaforo è in stato "data dumped" leggeremo e lavoreremo impostando il semaforo in stato "read all".
Se il semaforo è "incomprensibile", allora ci limitiamo ad aspettare il semaforo (attraverso uno Sleep in loop o OnTimer).
Se non c'è nessun semaforo significa che si avvia per la prima volta e si conta tutto e allo stesso tempo si crea un semaforo per il cambiamento non futuro della TF.
Cosa c'è di così complicato in una tale implementazione? Da prescrivere una volta con una biblioteca e basta.
In Deinit, scrivete tutti i dati nei globali. Imposta uno dei globali come semaforo tramiteGlobalVariableSetOnCondition.
Init scrivere che se il semaforo è in stato "data dumped" leggeremo e lavoreremo impostando il semaforo in stato "read all".
Se il semaforo è "illeggibile", allora aspettiamo solo che il semaforo ritorni (sia tramite i cicli Sleep o OnTimer).
Cosa c'è di così complicato in una tale implementazione? Scriverlo una volta in biblioteca e basta.
Non sapevo affatto che ci fosse questo problema. Speravo in una sequenza deiniti-init e non il contrario. Quando conosci i problemi, puoi risolverli. Ma mi sembra che dovrebbe essere risolto a livello di logica del terminale e non con stampelle, che dovrebbero essere inserite in ogni programma ora...
Questa non è una stampella, ma una semplice soluzione. L'unica questione è chi lo implementa - gli sviluppatori o gli utenti. In entrambi i casi bisogna spendere tempo e scriverlo una volta sola. Se gli utenti possono farlo, lo abbiamo scritto e non ci preoccupiamo più di discutere la questione. Ho appena letto il thread e mi è venuta subito in mente una soluzione. Cosa c'è da spulciare? Si può pretendere qualcosa per molto tempo, o si può scrivere velocemente da soli.