Erreurs, bugs, questions - page 2753
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
Comment puis-je changer le compilateur ?
J'ai découvert que le compilateur est intégré à MetaEditor à partir de la version 900: https://www.mql5.com/ru/forum/21374.
Alors pourquoi y a-t-il une fenêtre avec une ligne menant au répertoire où VS est installé ?
Sans démagogie, nous devons pouvoir accéder aux prix actuels le plus rapidement possible. Le profileur montre que les appels constants à SymbolInfoDouble() et SymbolInfoTick() réduisent la vitesse d'optimisation
Eh bien, c'est ici qu'il a été suggéré précédemment d'ajouter la possibilité de passer NULL au lieu du nom du symbole actuel. Cela pourrait accélérer le travail dans des cas particuliers. En général, nous avons besoin d'un accès par les poignées, et non par les valeurs textuelles des symboles. Mais je pense que les développeurs ne sont pas susceptibles de se lancer dans une telle complication. Le problème semble être tiré par les cheveux.
Dans les mesures mentionnées ci-dessus, le coût n'était que de 6 % de l'exécution à vide (sans charge) du testeur. Et dans un code fonctionnel, ce sera un ordre de grandeur inférieur. Il n'est pas utile de prêter attention à de telles bagatelles, et appeler ces fonctions plus d'une fois dans un gestionnaire est une décision incorrecte en soi.
Eh bien ici, il a été suggéré plus tôt d'ajouter la possibilité de passer NULL au lieu du nom du symbole actuel. Cela pourrait accélérer le travail dans des cas particuliers. Mais en général, nous avons besoin d'un accès via des poignées, et non des valeurs textuelles de caractères. Mais je pense que les développeurs sont peu susceptibles de se lancer dans une telle complication. Et cela ne vaut pas la peine, il me semble. Le problème est plutôt tiré par les cheveux.
Cela fonctionne déjà, mais il n'y a pas d'accélération (j'ai vérifié) - apparemment tout est déjà accéléré au maximum ou vice versa - pour l'accélération, on est encore loin du compte (demandez aux développeurs de le souligner)
Par conséquent, pour des raisons de rigueur, nous devrions utiliser Digits() au lieu de _Digits. Alors, formellement et sans contradiction logique, Digits() n'est pas lié par le modificateur const.
D'après ce que j'ai compris, _Digits était nécessaire pour la compatibilité avec MT4 - rien de plus.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Bugs, bugs, questions
Ilyas, 2020.05.20 15:39
L'appel de Symbol() accède TOUJOURS à la variable globale _Symbol, ainsi que Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason().
Pendant le débogage et lorsque l'indicateur fonctionne lui-même, dans le journal, il écrit soudainement Stack overflow. Lors du débogage, le message "Critical error occurred, debugging stopped" s'affiche. Voici mon fil de discussion similaire: https://www.mql5.com/ru/forum/338301. Mais pendant la compilation, le compilateur ne gronde pas et tout se passe bien. Lors du débogage, il est impossible de déterminer à quel moment le programme se plante.
Peut-être que c'est le compilateur ? Le compilateur que j'utilise ne m'intéresse pas vraiment, mais dans mes paramètres, cela ressemble à ceci :
J'ai installé VS, et j'ai donc ce lien dans les paramètres. Le compilateur est donc approprié aussi... ? Mais quel compilateur y avait-il quand je n'avais pas VS, honnêtement je ne m'y suis pas intéressé. Je devrais peut-être essayer de revenir à ce compilateur et essayer de compiler le projet avec lui ?
Pendant que je cherchais des moyens de résoudre le problème, avec l'arrivée d'une autre mise à jour du terminal, le débogage a fonctionné correctement. J'ai réussi à trouver des erreurs. Certaines méthodes tournaient en boucle et s'appelaient elles-mêmes. C'est pourquoi le programme s'est écrasé avec le message "Stack overflow". Mais avec l'aide d'un débogueur fonctionnel, j'ai réussi à trouver toutes les lignes problématiques et à les corriger. J'exprime ma gratitude aux développeurs pour la correction rapide du bug avec débogage !
в естественном языке (в математике) константа это... ну как бы константа! ))
En C++, une constante est une vérification automatique par le compilateur de la présence d'une constante dans la portée (ou durée de vie) d'une variable.
En C++ comme en MQL, une constante peut être définie une fois à la création et ne plus jamais être modifiée. Les lunettes n'ont rien à voir avec ça.
Ce n'est pas très différent des mathématiques.
J'ai découvert que le compilateur est intégré à MetaEditor à partir de la version 900: https://www.mql5.com/ru/forum/21374.
Alors pourquoi cette fenêtre avec une ligne menant au répertoire où VS est installé ?
Le compilateur VS est utilisé si vous écrivez une DLL.
Ce qui confirme une fois de plus qu'il est inutile d'utiliser directement _Digits,_Point , _Period, _LastError, etc. (et même _Symbol peut être remplacé par NULL). En fait, ils doivent être déclarés comme const volatile.
Et vous, au contraire, vous suggérez d'ajouter
Ce qui confirme une fois de plus qu'il est inutile d'utiliser directement _Digits,_Point , _Period, _LastError, etc. Et même _Symbol peut être remplacé par NULL.
Et vous, au contraire, vous proposez de compléter cette série.
L'intérêt réside dans la possibilité de passer par référence.
Le but est de pouvoir passer par référence.
Comme pour les chaînes de caractères, les développeurs ont la possibilité (si ce n'est déjà fait) de tout passer par référence sans copier réellement la variable.
Et ce sera une solution non pas pour une structureMqlTick particulière, mais pour toutes les occasions.