Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 107

 
Bonjour, comment puis-je apprendre efficacement MQL ? Je ne cherche pas de moyens faciles, je veux juste comprendre ! J'étudie le tutoriel de Kovalev, je regarde des vidéos, j'essaie de répéter les codes qui y sont prescrits. Mais il y a tellement d'erreurs même lorsque je répète le code du tutoriel..... . Je comprends que j'ai été reclassé. On m'a dit que ce site pouvait m'aider, alors je suis ici ! Que dois-je faire ?
 
Peut-être que je suis pressé !
 
Alexey Kozitsyn:
Divise la chaîne de caractères par le délimiteur ".".

Pas une mauvaise idée...

Alexey Viktorov:
Il n'est pas nécessaire de démonter quoi que ce soit. Changez-le en chaîne juste pour voir le bon numéro. Vous n'avez rien à faire pour les calculs.

Si vous voulez faire des problèmes, reconvertissez la chaîne en un nombre StringToDouble() et multipliez par _Point normalisé au bon nombre, probablement par _Digits.

Le fait est que je dois décomposer la chaîne en 3 nombres, et je ne peux pas la convertir en un nombre - il s'avère que c'est un nombre très grand pour le langage.

Voici un exemple d'un tel nombre

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Imprime le nombre 11111111111111111104

 
FOTOGRAF14:
Peut-être que je suis pressé !
Eh bien, ne soyez pas pressé ! La hâte n'est nécessaire que pour attraper les puces ((c) humour de l'armée).
 
-Aleks-:

Le problème est que vous devez décomposer la chaîne en 3 nombres, mais vous ne pouvez pas la convertir en un nombre - il s'avère que c'est un très grand nombre pour la langue.

Voici un exemple d'un tel nombre

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

Imprime le nombre 11111111111111111104

Les contes de fées...
 
Vitalie Postolache:
Des contes...

Essayez vous-même.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

 
-Aleks-:

Essayez vous-même.

long CalcY=StringToDouble("111111111111111111");
Print ("CalcY=",CalcY);

long CalcZ=StringToInteger("111111111111111111");
Print ("CalcZ=",CalcZ);

double Test=CalcZ;
Print ("Test=",Test);

Je veux dire "un nombre trop grand", mais le code est également incorrect, donc si vous voulez convertir d'un format à l'autre, vous devriez le faire de cette façon :

long CalcY=(long)StringToInteger("111111111111111111");
Print ("CalcY=",IntegerToString(CalcY));

Ce dont vous vous plaignez ici n'est pas un grand nombre, mais un problème dans la sortie du texte.

 
Vitalie Postolache:
Je veux dire "un trop grand nombre".
Un nombre trop important pour être calculé avec précision - sinon comment expliquez-vous l'erreur à la fin du nombre ?
 
-Aleks-:
Un nombre trop important pour être calculé avec précision - sinon comment expliquez-vous l'erreur à la fin du nombre ?
ci-dessus ajouté.
 
Vitalie Postolache:
ci-dessus ajouté.

J'ai donc ce problème - vous pouvez mettre une ligne dans le long, mais j'ai besoin du double pour les calculs de virgule.

Raison: