Caractéristiques du langage mql5, subtilités et techniques - page 143
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 ne faut pas s'attendre à ce que s'il n'y a pas de valeur, elle soit nécessairement 0 et donc fausse s'il ne s'agit pas d'une variable de type bool. Même une conversion explicite en bool ne sera d'aucune utilité.
Il fonctionne de cette manière sans erreur.
Honnêtement, je ne comprends pas du tout d'où vient le zéro :
TickValue[0] contient des déchets. Il peut être égal ou non à zéro.
Si la corbeille dans TickValue[0] n'est pas égale à zéro, alors nous calculons Points = Profit / Lots * corbeille non-zéro * _Point, sinon, si la corbeille dans TickValue[0] est égale à zéro - nous mettons les Points à zéro.
Et où l'expression Lots * non-zéro rubbish * _Point obtient-elle zéro, si Lots est initialisé avec un lors de sa déclaration ? Y a-t-ilun zéro dans _Point?
L'erreur est claire dans les faits.
OK, l'erreur n'est pas claire. Et ça ne se reproduit pas pour moi non plus.
Ok, l'erreur est incompréhensible. Et ça ne se reproduit pas sur moi.
En gros, l'appel de cette fonction peut provoquer une division par zéro.
J'ai rencontré ce problème en pratique dans la bibliothèque de rapports. Puis j'ai réalisé que c'est logique.
En gros, l'appel de cette fonction peut provoquer une division par zéro.
J'ai ce code sur border dubles, mais il ne se plante pas
J'obtiens le même code sur les dubles frontaliers, mais il ne se plante pas
un tel accident.
En résumé, la multiplication de deux doublets non nuls peut donner zéro. Et il ne s'agit pas d'un cas dégénéré, mais d'un cas réel dans la pratique.
En gros, un EA de combat peut se casser à cause de cela avec une probabilité loin d'être nulle.
Et la vérification du zéro ne permet pas de sauvegarder, que ce soit explicitement ou implicitement (conversion bool).
En résumé, la multiplication de deux doublets non nuls peut donner zéro. Et il ne s'agit pas d'un cas dégénéré, mais d'un cas réel dans la pratique.
En gros, un EA de combat peut se casser à cause de cela avec une probabilité loin d'être nulle.
sur NaN vous devez vérifier en plus, très probablement ce code fonctionnerahttp://qaru.site/questions/20557/checking-if-a-double-or-float-is-nan-in-c
ou limiter la précision, comme dans l'exemple de CompareDoubles() - il semble être dans SBhttps://www.mql5.com/ru/docs/basis/types/double.