mt5 strategy tester ticks - page 11

 
RaptorUK:

Je veux pouvoir contrôler les données historiques que j'utilise afin de pouvoir répéter les tests (Strategy Tester) dans des conditions contrôlées.

Quelles conditions contrôlées?

Je vous remercie.

 
WhooDoo22:

Quelles sont les conditions contrôlées ?

Merci.

Les conditions que je choisis, pas celles que mon courtier choisit. Comment proposez-vous de tester autrement ? un ensemble de conditions aléatoires pour chaque test ? mais ne nous éloignons pas du sujet.
 
RaptorUK:
Les conditions que je choisis ne sont pas celles que mon courtier choisit. Comment proposez-vous de tester autrement ? un ensemble de conditions aléatoires pour chaque test ? mais ne nous éloignons pas du sujet.

Je comprends.

Je vous remercie.

 
angevoyageur:

Non. Si tu lisais mon lien et/ou celui de RaptorUK, ce serait plus clair pour toi. Sinon, relisez :-D

1,000000000006551e-005 est simplement une autre notation pour 0,00001000000000006551.

Bonjour angevoyageur,

1.000000000006551e-005

0.00001000000000006551

La décimale du second double est déplacée cinq fois vers la gauche MAIS ;) ne peut pas être retourné dans le testeur dans ce format car les doubles retournent une valeur maximale de seize chiffres (chiffres significatifs) à droite d'une décimale.



Modérateur
1651
angevoyageur 2013.04.14 09:39
WhooDoo22:

Bonjour la communauté MQL5,

https://www.mql5.com/en/docs/common/comment

" Lesdonnées de type double sont sorties avec la précision de 16 chiffres maximum après une décimale, et peuvent être sorties soit au format traditionnel, soit au format scientifique, selon la notation qui sera la plus compacte. Les données de type float sont affichées avec 5 chiffres après la virgule. Pour sortir des nombres réels avec une autre précision ou dans un format prédéfini, utilisez la fonction DoubleToString()."

Lareprésentation du prix de l'USDJPY en 98.370 est une donnée de type float (sortie à 5 chiffres après la décimale).

La représentation du prix de l'USDJPY en -0,001999999999995339 est une donnée de type double, format traditionnel (sortie à 16 chiffres maximum après la virgule).

Pourquoi le double -0.001999999999533[9] renvoie-t-il un 18e chiffre après la décimale si une sortie double ne comporte que jusqu'à 16 chiffres après la décimale ?

Merci de votre compréhension.

Les prix sont toujours doubles, 98,370 est un double. Il y a 16 chiffres significatifs. Les zéros ne sont pas significatifs.


Si les zéros ne sont pas significatifs, pourquoi le testeurne pourrait-il pas renvoyerla valeur 0,00001000000000006551 au lieu de 1,000000000006551e-005 ? Je préfère faire des calculs en format 0,00001000000000006551 !

Merci à vous

 
WhooDoo22:


Si les zéros ne sont pas significatifs, pourquoi le testeurne pourrait-il pas renvoyerla valeur 0,00001000000000006551 au lieu de 1,000000000006551e-005 ? Je préfère faire des calculs en format 0.00001000000000006551 !

Un nombre à virgule flottante (double) est toujours stocké en interne dans ce format ... 1.000000000006551e-005, avez-vous lu et compris les informations sur les liens donnés ?

D'ici :nombres à virgule flottante

"Un flottant IEEE-754 (4 octets) ou un double (8 octets) a trois composants (il existe également un format analogue de 96 bits à précision étendue sous IEEE-854) : un bit de signe indiquant si le nombre est positif ou négatif, un exposant donnant son ordre de grandeur et une mantisse spécifiant les chiffres réels du nombre. En utilisant des flottants de simple précision comme exemple, voici la disposition des bits :"

3 parties

SigneMantisseExposant
+1.000000000006551-005

Si vous voulez voir 0.00001000000000xyz, utilisez DoubleToStr() pour formater la sortie à votre convenance.

Articles - Understanding Floating Point Number Representation - Cprogramming.com
Articles - Understanding Floating Point Number Representation - Cprogramming.com
  • www.cprogramming.com
Floating point representations vary from machine to machine, as I've implied. Fortunately one is by far the most common these days: the IEEE-754 standard. This standard is prevalent enough that it's worthwhile to look at it in depth; chances are good you'd be able to use this information on your platform (look for ieee754.h). An IEEE-754...
 
RaptorUK:

Un nombre à virgule flottante (double) est toujours stocké en interne dans ce format... 1.000000000006551e-005, avez-vous lu et compris les informations contenues dans les liens indiqués ?

D'ici :nombres à virgule flottante

"Un flottant IEEE-754 (4 octets) ou un double (8 octets) a trois composants (il existe également un format analogue de 96 bits à précision étendue sous IEEE-854) : un bit de signe indiquant si le nombre est positif ou négatif, un exposant donnant son ordre de grandeur et une mantisse spécifiant les chiffres réels du nombre. En utilisant des flottants de simple précision comme exemple, voici la disposition des bits :"

3 parties

SigneMantisseExposant
+1.000000000006551-005

Si vous voulez voir 0.00001000000000xyz, utilisez DoubleToStr() pour formater la sortie à votre convenance.

Oui, j'ai lu tous vos liens et les ai trouvés utiles, merci encore de les avoir fournis. Je préférerais intégrer DoubleToString et choisir l'avant-dernière valeur du double (exemple : CADJPY 95.9[5]9) comme deuxième paramètre de DoubleToString. Je ne pense pas que ce problème "can price!=price" soit trop difficile à résoudre ! Qu'en pensez-vous ?

Je vous remercie

 
WhooDoo22:

Oui, j'ai lu tous vos liens et je les ai trouvés utiles, merci encore de les avoir fournis. J'aimerais incorporer DoubleToString et choisir l'avant-dernière valeur du double (exemple : CADJPY 95.9[5]9) comme deuxième paramètre de DoubleToString. Je ne pense pas que ce problème "can price!=price" soit trop difficile à résoudre ! Que dites-vous de cela ?

Vous voulez dire quelque chose comme ceci ?

double value = 95.959;

Print("Value: ", DoubleToStr(value, _Digits - 1) );

Can price != price est un problème différent, mais légèrement lié. Il ne peut pas vraiment être résolu, d'abord vous devez comprendre ce que le problème est ... puis vous travaillez autour de lui.

 
RaptorUK:

Vous voulez dire quelque chose comme ça ?

Can price != price est un problème différent, mais légèrement lié. Il ne peut pas vraiment être résolu, vous devez d'abord comprendre quel est le problème... puis vous le contournez.

double value=95.959;

Print("value returns ",DoubleToString(value,2));//value's expected print return is 95.95.

Que pensez-vous de ce problème de "prix possible != prix" ?

Je vous remercie.

 

WhooDoo22:

...

Les prix sont toujours doubles, 98.370 est un double. Il y a 16 chiffres significatifs. Les zéros ne sont pas significatifs.

Si les zéros ne sont pas significatifs, pourquoi letesteur ne pourrait-il pasrenvoyer la valeur 0,00001000000000006551 au lieu de 1,000000000006551e-005 ? Je préfère faire des calculs en format 0.00001000000000006551 !

Merci

C'est possible, c'est seulement un choix de formatage de la valeur de sortie.

Tous les équivalents
0.00001000000000006551
0.0001000000000006551e-001
0.001000000000006551e-002
0.01000000000006551e-003
0.1000000000006551e-004
1.000000000006551e-005

C'est justement parce que les zéros ne sont pas significatifs

WhooDoo22:

Oui, j'ai lu tous vos liens et les ai trouvés utiles, merci encore de les avoir fournis. Je préférerais intégrer DoubleToString et choisir l'avant-dernière valeur du double (exemple : CADJPY 95.9[5]9) comme deuxième paramètre de DoubleToString. Je ne pense pas que ce problème "can price!=price" soit trop difficile à résoudre ! Qu'en pensez-vous ?

Merci

Désolé mais je ne comprends pas cette phrase.
 
angevoyageur:

C'est possible, c'est seulement un choix de formatage de la valeur de sortie.

Tous les équivalents
0.00001000000000006551
0.0001000000000006551e-001
0.001000000000006551e-002
0.01000000000006551e-003
0.1000000000006551e-004
1.000000000006551e-005

C'est justement parce que les zéros ne sont pas significatifs

Désolé mais je ne comprends pas cette phrase.

"Désolé, mais je ne comprends pas cette phrase."

double value=95.959;

Print("value returns ",DoubleToString(value,2));//value's expected print return is 95.95.

Merci