Erreurs, bugs, questions - page 1538
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Chers développeurs.
Build 1281 MT5 Windows 7 64
J'ai reçu une mise à jour aujourd'hui
Le processus semble être sans fin :-)
après le redémarrage veut redémarrer à nouveau et ainsi de suite
2016.03.30 10:33:31.903 Réseau '3143179' : la négociation a été activée - mode de compensation.
2016.03.30 10:33:31.903 Réseau '3143179' : terminal synchronisé avec MetaQuotes Software Corp.
2016.03.30 10:33:31.829 Réseau '3143179' : autorisé sur MetaQuotes-Demo via Access Point EU Frankfurt (ping : 70.19 ms)
2016.03.30 10:33:31.759 LiveUpdate nouveau terminal build 1286 (IDE : 1286, Tester : 1286) est disponible
Est-il vrai que lorsqu'un indicateur est supprimé manuellement alors que OnCalculate est en cours d'exécution, OnDeinit est exécuté immédiatement, parfois simultanément avec OnCalculate, qui n'est pas encore terminé ?
Cela semble être le cas. Une classe possède un tableau dynamique d'instances d'une autre classe qui est libéré dans le destructeur.
Le destructeur n'est appelé que dans OnDeinit par delete.
Ainsi, lorsque je le décoche pendant OnCalculate, le tableau mentionné ci-dessus commence à se vider, comme si quelqu'un avait appelé le destructeur. Ce quelqu'un - OnDeinit.
En conséquence, j'obtiendrai NULL au lieu d'instances de la classe.
J'ai essayé d'utiliser _StopFlag dans OnCalculate, mais cela ne m'aide pas.
Comment faire pour que OnDeinit ne soit pas exécuté pendant l'exécution de OnCalculate mais après ?
Si je supprime delete de OnDeinit, je n'obtiens plus NULL. Mais dans le journal, j'ai une fuite de mémoire logique. Donc c'est certainement OnDeinit. J'ai essayé d'y mettre du sommeil. Mais il semble que le sommeil ne fonctionne pas dans les indicateurs. J'ai même essayé comme ça
L'indicateur semble également ignorer ce point.
J'utilise des macros prédéfinies lors du débogage. Est-il également possible de trouver facilement qui a appelé la fonction/méthode sans lui passer le paramètre correspondant ?
Cela semble être le cas. La classe possède un tableau dynamique d'instances d'une autre classe, qui est libéré dans le destructeur.
Le destructeur est appelé uniquement dans OnDeinit via delete.
Ainsi, lorsque je le décoche pendant OnCalculate, le tableau mentionné ci-dessus commence à se vider, comme si quelqu'un avait appelé le destructeur. Ce quelqu'un - OnDeinit.
En conséquence, j'obtiendrai NULL au lieu d'instances de la classe.
J'ai essayé d'utiliser _StopFlag dans OnCalculate, mais cela ne m'aide pas.
Comment faire pour que OnDeinit ne soit pas exécuté pendant l'exécution de OnCalculate mais après ?
Si je supprime delete de OnDeinit, je n'obtiens plus NULL. Mais dans le journal, j'ai une fuite de mémoire logique. Donc c'est certainement OnDeinit. J'ai essayé d'y mettre du sommeil. Mais il semble que le sommeil ne fonctionne pas dans les indicateurs. J'ai même essayé comme ça
L'indicateur semble ignorer cela aussi.
Veuillez ouvrir une demande auprès de servicedesk et me donner le code de la fonction OnDeinit.
Pouvez-vous me conseiller sur la façon de faire fonctionner artificiellement OnCalculate pendant une longue période ? C'est une déception avec le glissement.
Il ne joue que dans les indicateurs complexes (beaucoup de calculs). Lorsque je supprime les calculs, tout va bien, car OnCalculate est exécuté presque instantanément.
Comment faire pour que OnDeinit s'exécute après OnCalculate au lieu de le faire pendant ?
Pouvez-vous me conseiller sur la façon de faire fonctionner artificiellement OnCalculate pendant une longue période ? C'est une déception avec le glissement.
Il ne joue que dans les indicateurs complexes (beaucoup de calculs). Lorsque je supprime les calculs, tout va bien, car OnCalculate est exécuté presque instantanément.