Caractéristiques du langage mql4, subtilités et techniques - page 29
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
L'heure est-elle la même dans la fenêtre dedonnées?
Oui.
Oui.
Je vois. Alors c'est vraiment l'heure du bar. J'ai juste eu un doute sur le paramètre"Chronologie précise".
Bonjour !
Quelle est la manière correcte d'utiliser "double" dans la boucle "for" ? Il ne semble pas y avoir d'interdiction d'utiliser "double" dans l'aide. Je comprends que je doive normaliser le " i ", mais cela ne fonctionne pas pour moi.
Si "expr2=2.6" est toujours ok pour 9 itérations, mais quand "expr2=2.8" montre déjà 9 itérations incorrectes (la valeur correcte est 10).
Bonjour !
Quelle est la manière correcte d'utiliser "double" dans la boucle "for" ? Il ne semble pas y avoir d'interdiction d'utiliser "double" dans l'aide. Je comprends que je doive normaliser le " i ", mais cela ne fonctionne pas pour moi.
Si "expr2=2.6" est toujours correct pour 9 itérations, mais lorsque "expr2=2.8" montre déjà 9 itérations incorrectes (la valeur correcte est 10).
J'ai probablement besoin de normaliser les valeurs.
Il faut probablement normaliser les valeurs.
Si tu voulais dire ça, ça n'a pas aidé non plus :
Si tu voulais dire ça, ça n'a pas aidé non plus :
Non. Vous devez au moins l'optimiser.
parce que c'est ce qui vous donne la mauvaise valeur. Et les autres n'auront peut-être pas à le faire.
Bonjour !
Quelle est la manière correcte d'utiliser "double" dans la boucle "for" ? Il ne semble pas y avoir d'interdiction d'utiliser "double" dans l'aide. Je comprends que je doive normaliser le " i ", mais cela ne fonctionne pas pour moi.
Si "expr2=2.6", alors tout est normal 9 itérations, mais quand "expr2=2.8" montre pas correct 9 itérations (correctement 10).
Vous trouverez ici, en lisant le post de Nikolay, une description très détaillée et très qualitative du doublehttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837.
Si vous ne pouvez pas assimiler le matériel dès la première fois, essayez de remplacer Print() par printf() dans votre code avec une sortie de double au moins jusqu'au 15ème chiffrehttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Peut-être qu'alors vous verrez pourquoi il en est ainsi
Non. Au minimum, vous devez optimiser cela.
parce que c'est ce qui vous donne la mauvaise valeur. Et les autres n'auront peut-être pas à le faire.
Merci, mais votre exemple ne nous a pas non plus donné le bon résultat. Dans printf, vous pouvez voir qu'aucune normalisation ne se produit :
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 1.00000000000000000000000000000000000000000000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 1.199999999999999999995559107901499373838305473327636718750000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 1.399999999999991111182158029987476766109466552734375000000000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 1.599999999999999999999866773237044981212151491164199829101562500000000
0 10:29:31595 Test_Double_For EURCHF,H4 : i = 1.79999999999999999999982236431605997495353221893310546875000000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 1.99999999999999977795539507496869192736638618359375000000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 2.1999999999999997335464740899624302983283996582031250000000
0 10:29:31.595 Test_Double_For EURCHF,H4 : i = 2.399999999999999999999999119182158029987476766109466552734375000000000
0 10:29:31595 Test_Double_For EURCHF,H4 : i = 2.6000000000000088817841970012523233890533447265625000000000
0 10:29:31595 Test_Double_For EURCHF,H4 : MaxPass : 10 count : 9
0 10:29:31.595 Test_Double_For EURCHF,H4 : Last i = 2.800000000002664535259100375697016716003417968750000000
ici vous pouvez trouver, lire le post de Nikolay, il a décrit le travail avec le double d'une manière très détaillée et très qualitativehttps://www.mql5.com/ru/forum/1111/page2623#comment_14473837.
Si vous ne pouvez pas assimiler le matériel dès la première fois, essayez de remplacer Print() par printf() avec une sortie de double au moins jusqu'au 15ème chiffrehttps://www.mql5.com/ru/forum/1111/page2623#comment_14474138.
Peut-être qu'alors vous comprendrez pourquoi il en est ainsi.
Merci, je comprends pourquoi ça arrive, c'est pourquoi j'ai essayé de le normaliser. Cela n'a pas fonctionné pour moi. L'option d'Alexey Viktorov n'a pas résolu le problème non plus, les valeurs restent non normalisées. La question demeure donc : peut-on utiliser "double" dans une boucle et obtenir toujours le nombre correct d'itérations ?
Donc la question demeure, "double" peut être utilisé dans la boucle
peut
et obtenir toujours le nombre correct d'itérations ?
la valeur de double est toujours correcte, mais elle ne correspond pas au système décimal positionnel que vous souhaiteriez voir ou obtenir
Merci, je comprends pourquoi cela se produit, c'est pourquoi j'ai essayé de normaliser. Cela n'a pas fonctionné pour moi. L'option d'Alexey Viktorov ne l'a pas corrigé non plus, les valeurs restent non-normalisées
Toute manipulation avec la double conversion aura toujours des limites, je doute que ce problème puisse être résolu de la même manière que dans vos exemples.
Faites une solution fiable : utilisez int dans la boucle et la formule pour calculer la valeur du résultat du double et n'utilisez pas l'addition du double comme résultat pendant les itérations dans la boucle - regardez encore une fois mon exemple dans le dialogue avec Nikolaev.