Erreurs, bugs, questions - page 2821
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
Je répète ma question.
L'image montre la valeur de la variable non normalisée n et de la variable normalisée m et leur différence. Mais si vous voulez comparer les strings, c'est votre préférence.
Je connais la théorie, comment travailler avec des doubles et des trucs comme ça sur une échelle A+. L'algorithme NormalizeDouble contient une erreur. Le sujet soulevé n'est qu'indirectement lié à la comparaison des doubles.
L'algorithme NormalizeDouble contient une erreur.
oui
Je pense que A100 a écrit à ce sujet
mais les développeurs depuis MQL s'en tiennent à cette "fonctionnalité", hélas
S'ils la corrigent, l'erreur disparaîtra.
Je pense que d'autres bugs vont apparaître et qu'il y aura beaucoup de bruit )))).
Ils ne le feront pas, car presque tout le monde compare même les dubs normalisés par le biais de la normalisation. C'est-à-dire qu'ils le mettent où ils veulent.
Une normalisation correcte devrait toujours donner vrai dans cette condition.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Erreurs, bugs, questions
fxsaber, 2020.08.10 11:37
C'est le seul moyen de vérifier que la normalisation est correcte. S'il donne toujours raison, rien ne se cassera.
NormalizeDouble est juste un certain algorithme qui s'applique à un nombre double. Malheureusement, il y a une erreur. Si elle est corrigée, l'erreur disparaîtra. Toutes les autres doubles-représentations ne changeront pas en conséquence.
Je pense que ce n'est pas la fonction qui est en cause, mais le fait que les constantes ne sont pas normalisées par le compilateur (alors qu'elles devraient l'être).
Alors les mêmes constantes dans DLL et MQL ne correspondront pas.
Alors les mêmes constantes dans DLL et MQL ne correspondront pas.
C'est vrai aussi. De plus, toute normalisation est une perte de précision, donc j'en fais probablement trop avec la normalisation constante.
Il suffit de modifier l'algorithme de normalisation actuel.
Il suffit de modifier l'algorithme de normalisation actuel.
Je ne sais même pas si c'est un bug dans l'algorithme.
Seul l'arrondi n'est pas effectué par round(), ceil(), floor() car ils retournent également un double.Vraiment, vous ne pouvez pas comparer les doubles. C'est une règle stricte.
Ou, comme le dit Slava, par epsilon ou par multiplication (par exemple par 1/_Point) avec conversion en int avec arrondi.
Ou par ces derniers, d'autant plus qu'ils fonctionnent plus vite que les normaux :
Plus facile et plus rapide, bien sûr, grâce à epsilon :
Seul l'arrondi n'est pas effectué à l'aide des fonctions standard round(), ceil(), floor() car elles renvoient également un double.
Mais grâce à ceux-ci, surtout ils fonctionnent plus rapidement que les ordinaires :