Caractéristiques du langage mql5, subtilités et techniques - page 146
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
Il a été fermé dès le premier message. Lorsque le nombre minimum est multiplié par un nombre inférieur à un, on obtient zéro.
à quoi ressemblerait le code correct ?
À quoi ressemblera le bon code ?
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Caractéristiques du langage mql5, subtilités et astuces
fxsaber, 2019.10.28 11:42
compilation : expression non booléenne
ce n'est pas une bonne option pour moi
Je ne le fais pas moi-même.
Pour les esthètes, vous pouvez créer une structure DOUBLE avec les opérateurs appropriés. Mais cela n'a pas grand-chose à voir avec la pratique. Dans l'exemple pratique original.
ForUM sur le trading, les systèmes de trading automatisés et les tests de stratégie
Caractéristiques du langage mql5, subtilités et techniques
fxsaber, 2019.10.28 07:24
C'est une façon de se laisser entraîner dans la division par zéro, même avec un chèque.L'erreur est en fait compréhensible. Mais en écrivant du code comme celui-ci, il n'est pas toujours évident qu'une telle vérification n'est pas suffisante pour éviter la division par zéro.
Il suffit de mettre à zéro l'élément du tableau en cours de création. C'est l'absence d'initialisation qui provoque les collisions dans ce cas. C'est pourquoi j'ai simplement fait une mise à zéro dans mon code. Je ne veux pas m'embêter avec l'opinion générale.
compilation : expression non booléenne
ce n'est pas une bonne option pour moi
Il y a quelque chose qui ne va pas chez vous.
La raison pour laquelle la division par zéro provoque une exception de l'unité centrale de traitement est plus confuse, du moins pour moi.
Quelque chose te fait prendre le mauvais chemin.
fxsaber:
Aucun problème ici
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) 2.224851351121351e-308 --> vrai
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) -nan --> vrai
UPD :
vérifier l'existence de l'inf.
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 1. dev = inf ---> false
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 2. dev = inf ---> true
Il n'y a pas de problème.
En cherchant sur Google "C++ double zero divide", votre code ne fonctionnera pas pour les nombres non normalisés, vous avez besoin de ceci :
script de méditation ))))
Sujet intéressant. J'ai trouvé quelque chose ici. Particulièrement remarquable dans le bloc théorique.
abs(u - v)/abs(u) <= epsilon && abs(u - v)/abs(v) <= epsilon; // (4)
abs(u - v)/abs(u) <= epsilon || abs(u - v)/abs(v) <= epsilon; // (5)
De cette façon, toutes les conditions d'underflow et d'overflow peuvent être protégées en toute sécurité. Cependant, la méthode ci-dessus ne fonctionne pas lorsque v ou u est égal à zéro. Dans ce cas, la solution consiste à recourir à un algorithme différent, par exemple(1).
A quoi ? Tout ce que je vois, c'est un avertissement idiot, même s'il est tout à fait valable.
Conversions booléennes
Une valeur de prvalue de type intégral, à virgule flottante, d'énumération non chiffrée, de pointeur et de pointeur à membre peut être convertie en une valeur de prvalue de type bool.
La valeur zéro (pour les énumérations intégrales, à virgule flottante et non chiffrées), le pointeur nul et les valeurs du pointeur nul vers le membre deviennent faux. Toutes les autres valeurs deviennent vraies.
En général, c'est de la pure ignorance que d'écrire ces IsEqual(), IsInf() et IsZerro(). Je n'entrerai pas dans la discussion.
A quoi ? Tout ce que je vois, c'est un avertissement stupide, qui est parfaitement valable.
En général, c'est une ignorance totale d'écrire de telles IsEqual(), IsInf(), IsZerro(). Je n'entrerai pas dans la discussion.
IsInf() et IsNaN() fonctionnent,
IsEqual() et IsZerro() sont discutables, ils ont été googlés à partir de certaines sources comme "truc pour le double".