Obtenir le nombre de décimales de n'importe quel nombre (pas seulement les guillemets) en contournant Digits() dans MQL4 et MQL5 - page 12
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
C'est probablement la meilleure solution
il n'est pas correct de comparer des doubles sur l'égalité, de plus, la tâche est d'être exact au signe.
Regardez le fichier stdlib.mq4 dans MT4, il y avait un exemple de double comparaison correcte
CompareDoubles()
SZZ : voici un article sur le sujethttps://www.mql5.com/ru/articles/1561.
Je me demande comment vous ferez les logarithmes, l'exponentiation avec des nombres non entiers, la trigonométrie, ..... utiliser des bibliothèques tierces, des indicateurs... Ils ont tous des erreurs !
Si vous avez besoin d'une précision super-méga, vous pouvez utiliser des bibliothèques externes spéciales comme gnu mp
Sinon, si vous avez besoin d'une précision garantie (lorsque l'erreur est calculée à chaque opération), vous devez utiliser toutes sortes de "libs d'intervalle".
si même cela ne suffit pas - vous pouvez utiliser des polynômes au lieu de chiffres
mais je n'ai jamais vu de tels cas, lorsque de tels circuits sont vraiment nécessaires pour MT:-)
il y a un double pour l'œil :-)
il n'est pas correct de comparer des doubles sur l'égalité, en outre, la tâche est d'être exact à un signe
Regardez le fichier stdlib.mq4 dans MT4, il y avait un exemple de double comparaison correcte
CompareDoubles()
Avec CompareDoubles, le temps d'exécution est multiplié par deux. Alors c'est mieux comme ça :
Bien, bien, et le temps d'exécution avec CompareDoubles s'envole d'un facteur deux. Vous feriez mieux de faire comme ça :
Nous parlons de calcul correct, je ne peux pas vérifier votre code maintenant, mais ce n'est pas difficile, vous devez comparer votre exemple avec un exemple utilisant DoubleToStr() dans la boucle, s'il n'y a pas de différence, alors tout est correct.
ZS : J'ai essayé avec fmod() je pense que j'ai posté un exemple, il ne fonctionne pas correctement, comme à 0.07 devrait vérifier - immédiatement un bug a surgi
Nous parlons de calcul correct, je ne peux pas vérifier votre code maintenant, mais ce n'est pas difficile, vous devez comparer votre exemple avec l'exemple utilisant DoubleToStr() dans la boucle, s'il n'y a pas de différence, alors tout est correct.
J'ai déjà vérifié et calculé la vitesse et c'est la meilleure solution. Sauf si vous devez rechercher plus de 7 caractères, bien sûr.
S.s. 0,7 et 0,07 et 500000000,0001, etc. tous calculés correctement.
s.s. Mais pour 500000000.9991, ça se gère moins bien. Mais cela n'a guère d'importance dans la pratique du forex.
Mais dans la pratique du forex, cela n'a guère d'importance.
cela dépend du problème. s'il s'agit d'ordres de transaction, alors ce problème n'a pas de sens - les prix sont normalisés par rapport aux chiffres, tandis que les lots sont relatifs au lot minimum.
Si le problème concerne la modélisation mathématique, cela peut être utile.
cela dépend du problème, si c'est pour des ordres de négociation, alors cette tâche n'a aucun sens - les prix sont normalisés par rapport aux chiffres, et les lots sont relatifs au lot minimum.
Si la tâche consiste en une modélisation mathématique, elle peut être utile.
Bien sûr, il ne s'agit pas d'écrire des réseaux neuronaux =))) et de dire qu'il est pratique de stocker les prix/lots/monnaie sous la forme d'un entier de 4 octets avec une valeur décimale, ce qui réduit la taille des données de 2 fois.
il n'est pas correct de comparer des doubles sur l'égalité, en outre, la tâche est d'être exact à un signe
Regardez le fichier stdlib.mq4 dans MT4, il y avait un exemple de double comparaison correcte
CompareDoubles()
SZZ : voici un article sur le sujethttps://www.mql5.com/ru/articles/1561.
La tâche consiste donc à déterminer de combien de chiffres x est normalisé. Donc c'est bon. A moins que vous n'ayez été trop paresseux pour écrire une telle échelle.
A moins que vous n'ayez été trop paresseux pour écrire une telle échelle.
Vous pouvez le faire sans échelle, mais cela prend 10% de plus.
Vous pouvez le faire sans échelle, mais cela prend 10% de plus.
Celui-là : f/=0.0000001 ; est douteux.