Erreurs, bugs, questions - page 1516

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
Est-il prévu d'apporter des modifications à la fonctionnalité du MetaEditor pour mettre en évidence les variables, dans le débogueur pour créer automatiquement toutes les variables utilisées ? Comme dans l'IDE Qt Creator ou VS.
Oui, je le ferai.
Veuillez vérifier la demande #1416121 sur l'initialisation des variables globales/statiques!
Dans la file d'attente. L'application ne date que de deux heures.
En général, ces questions doivent être posées dans un forum. Parce que ça peut toucher beaucoup de gens. Je vais prendre la liberté de vous citer et de répondre ensuite.
Bonjour. Corrigez-moi si je me trompe. Les variables statiques et globales sont initialisées une fois avant le démarrage du programme (c'est-à-dire par la fonction OnInit()). Par conséquent, si le programme est désinitialisé (la fonction OnDeinit() est appelée), le programme doit "oublier" les valeurs des variables globales/statiques et avant la prochaine exécution de la fonction OnInit() les initialiser avec les valeurs initiales.
J'ai trouvé un fait intéressant dans les Expert Advisors de mql4. Si vous déclarez des variables globales/statiques, alors, par exemple, lorsque vous modifiez les paramètres d'entrée, c'est-à-dire après OnDeinit(), les valeurs de ces variables ne sont pas réinitialisées. Mais dans les indicateurs - ils le sont. Que faire ? Cela ressemble à une erreur.
Je l'ai vérifié sur mql5 (build 1241 x64) - similaire. Dans les conseillers experts - pas de réinitialisation, dans les indicateurs - réinitialisation.
C'est un comportement planifié. De plus, il est clairement décrit dans la documentation
Chargement et déchargement des indicateurs
Les indicateurs sont chargés dans les cas suivants :
-attacherun indicateur à un graphique ;
-ledébutdu terminal (si un indicateur a été attaché à un graphique avant la fermeture précédente du terminal)
-chargementd'un modèle (si le modèle contient un indicateur attaché au graphique)
-changer deprofil (si un indicateur est attaché à l'un des graphiques de profil);
-changerle symbole et/ou la période du graphique auquel l'indicateur est attaché;
-après larecompilation réussie d'un indicateur, si cet indicateur a été attaché à un graphique.
-modification des paramètres d'entrée de l'indicateur.
Les indicateurs sont déchargés dans les cas suivants :
-lors dudétachement d'un indicateur d'un graphique ;
-la fermeturedu terminal (si un indicateur est attaché à un graphique) ;
-chargement d'un modèle, si un indicateur est attaché à un graphique
Fermer legraphique auquel un indicateur a été attaché ; - Fermer le terminal (si un indicateur a été attaché au graphique).
-Modifierun profil, si un indicateur est attaché à l'un des graphiques du profil à modifier ;
-Changer lesymbole et/ou la période du graphique auquel l'indicateur est attaché ;
-modifier lesparamètres d'entrée de l'indicateur.
Le déchargement et le chargement impliquent une réinitialisation complète de tout.
A Five, comme vous l'avez bien noté, la situation est similaire.
C'est vrai, c'est historiquement ainsi que dans MQL4 nous avons d'abord changé ce comportement (pour le rendre comme dans les experts, c'est-à-dire le comportement que vous attendez). Mais beaucoup de questions se sont posées avec les anciens indicateurs, qui étaient basés sur cette initialisation. Nous avons été obligés de retourner
Dans le cinq, c'était le cas immédiatement à cause de l'architecture. Lorsque vous modifiez les paramètres, l'ancien indicateur avec les anciens paramètres est détruit et le nouvel indicateur avec les paramètres modifiés est créé.
Je l'ai dupliqué ici juste au cas où.
C'est un comportement planifié. De plus,elle est clairement décrite dans la documentation.
Je viens de regarder ici et ici. Et je pense que c'est logique, puisque je travaille avec une classe à mémoire statique. Et, encore une fois, il est logique que s'il existe un "piège" sous la forme de techniques établies par rapport à différents types de programmes, il serait bon de le décrire également dans la documentation de la classe de mémoire statique (variables statiques et globales).
Veuillez ajouter aux remarques.
Je l'ai dupliqué ici, juste au cas où.
C'est juste que j'ai regardé ici et ici. Et je pense que c'est logique, puisque je travaille avec une classe à mémoire statique. Et, encore une fois, il est logique que s'il existe un "piège" sous la forme de techniques établies par rapport à différents types de programmes, il serait bon de le décrire également dans la documentation de la classe de mémoire statique (variables statiques et globales).
Veuillez ajouter aux remarques.
Quel commentaire ? A propos du chargement/déchargement du programme ?
Aide MT5 :
Je viens de vérifier - l'indicateur est retiré du graphique mais continue de fonctionner pendant 3 secondes, 10 secondes, 3 minutes...(IsStopped n'a pas été vérifié ici, ce n'est pas la question)
1) Pourquoi est-il indiqué "interruption forcée pendant 3 secondes" mais que cela ne fonctionne pas dans la réalité ?
2) Pourquoi les processus (scripts, indicateurs, Expert Advisors, agents de test) ne se terminent-ils pas de manière forcée lorsqu'ils sont retirés d'un graphique, qu'un utilisateur arrête un test, etc.
J'ai également une question sur l'arrêt des programmes. Est-il possible d'ajouter une fonction de déchargement rapide "universelle" aux langages pour tout type de programme ? Ou ajouter des fonctions comme ExpertRemove() pour les indicateurs et les scripts. Vous pouvez, bien sûr, résoudre le problème en divisant par 0 ou en surchargeant le tableau. Mais, d'une certaine manière, ce n'est pas agréable.