Erreurs, bugs, questions - page 1439
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций.
Pas besoin d'écrire des classes de "tableau intelligent", elles sont déjà dans la bibliothèque standard de MetaQuotes, voir la famille de classes Arry.
C'est moi, ou vous n'avez pas travaillé avec les langues en question ? Vous n'avez pas à spécifier d'index pour l'élément ajouté, il est attribué automatiquement et la taille du tableau est également augmentée. Le programmeur n'a aucune chance de faire une erreur avec l'index pendant cette opération.
Uhhhh... Quelles sont les chances du programmeur de faire une erreur ? Vous avez tort de penser que vous pouvez prendre en compte toutes les variantes d'un programme complexe.
Toutes ces "actions par défaut" doivent être des propriétés d'objets complexes. Les objets simples, tels que les variables, les tableaux et les structures simples, doivent avoir le moins de propriétés "par défaut" possible.
Par exemple, à la création - ils doivent stocker une valeur indéfinie, et non zéro.
Vous pouvez implémenter un comportement similaire avec des classes, ajouter des fonctions connexes : pop, shift, unshift, etc. Et faire glisser un wagon de classes d'un code à l'autre, avec chaque code utilisant %10...20 fonctions de celui-ci. Cela vous semble-t-il être la bonne solution ?
C'est la bonne solution en termes de logique. Lorsque vous travaillez avec de telles classes, leur comportement est transparent.
Et qu'en est-il du "déplacement d'une charrette de classes" - lors du codage, vous ne les déplacez pas, vous vous contentez de brancher la bibliothèque. Et lors de la compilation, un linker normal ne devrait pas mettre dans un exécutable toutes les méthodes de la bibliothèque, mais seulement celles qui sont utilisées.
Exemple de bonne solution à mon avis - ajouter à la fonction ObjectsDeleteAll la suppression par préfixe - c'est un autre micron vers la programmation de niveau supérieur - et la plupart des codeurs ont mis à la poubelle cette fonction créée par eux-mêmes. Hélas, cela a peu de chances de se produire avec des tableaux...
À mon avis, c'est également une mauvaise approche, pour la même raison. La fonction est chargée de tâches qui ne lui sont pas propres et ne suivent pas la logique de son application.
La solution correcte, me semble-t-il, est d'avoir un gestionnaire d'objets de classe sur le graphe qui en conserve la liste et supprime les objets nécessaires au fur et à mesure que les fonctions sont appelées. Les préfixes des noms, me semble-t-il, ne devraient servir qu'à rendre claires certaines informations sur l'objet pour une personne. Et la suppression - ne doit en aucun cas être basée sur le nom de l'objet, mais sur la sauvegarde de ce nom dans un tableau.
version 5.0 build 1150, démo
Mettez à jour votre terminal (vous devez vous connecter au serveur MetaQuotes-Demo). Construction actuelle :
Voici le script :
Donne ce résultat :
Mettez à jour votre terminal (vous devez vous connecter au serveur MetaQuotes-Demo). Construction actuelle :
Voici le script :
Donne ce résultat :
Merci, savez-vous pourquoi le drapeau a une valeur de 0, comme si rien n'avait changé...
MT 4. Générateur de nombres aléatoires MathRand() dans OnTick(). Lors du test du hibou, des résultats différents sont obtenus lorsqu'il est exécuté à nouveau avec les mêmes paramètres. Cela est naturel si le nombre généré affecte l'algorithme.
Lors de l'optimisation, j'obtiens, pour une raison quelconque, des résultats identiques lors d'une deuxième exécution avec les mêmes paramètres. Donc MathRand() ne fonctionne pas en mode optimisation ?