[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 451

 
bernc:

C'est-à-dire que vous avez besoin de cette fonction F(8,5464.00) = 85464.00

8.5464/0.0001=85464
 
peshihod:

MathMod() est une division. Le reste est purement mathématique : si le résultat de TimeLocal() est divisé par 20 toutes les secondes (ou plus souvent), alors toutes les 20 secondes, le reste sera égal à zéro.

Conclusion : une même idée peut être mise en œuvre de différentes manières.


Pourquoi je dois le faire toutes les 20 secondes ? Pourquoi pas à 19 ou 17 ans ?

bool flag = true;
int i=0;
int w=0;
double sum;

int t=20;

int start()
{
sum=TimeLocal() / t;

if (flag)
{
while(i<20)
{

w=w+1;
Alert(+w,"-й, Результат TimeLocal-",+sum);
i++;
sum=sum/20;
Sleep(1000);

}
flag = false;
}
return(0);
}

Ici, il est égal à zéro toutes les 11 secondes. Divisé par 20, 20 fois.

Désolé pour les questions sur les nubiens, c'est juste quelque chose que je veux comprendre.

 

Pourquoi divise-t-on exactement par 20 ?

Vous devez diviser jusqu'à ce que vous gagniez ;)

 
peshihod:
8.5464/0.0001=85464

Merci.

Mais ce n'est pas ce que je voulais dire, la virgule est le séparateur de triade et le point sépare la partie fractionnée.

J'ai une chaîne de caractères 8,5464.00 et je dois la convertir en un nombre. StrToDouble(8,5464.00) prend 8.

F(8,5464.00) = 85464.00

 

essayez cette fonction

{

recherche d'une virgule via https://docs.mql4.com/ru/strings/StringFind

Assemblage d'une nouvelle chaîne de caractères à partir de deux parties : une chaîne avant la virgule et une chaîne après la virgule https://docs.mql4.com/ru/strings/StringGetChar

Convertir en nombre StrToDouble()

}

 

Voici un excellent exemple, comme vous l'avez dit.

Hmmm...

Comment se fait-il qu'elle devienne exactement nulle en 20 secondes ? Voir l'heure locale sous le numéro 8000000000... Quelle est la partie la plus délicate ? Peut-être que j'ai juste besoin de faire une pause, eh.....

int i=0;
int e;
int w=0;
int start()

{
while(true)
{
e=MathMod(TimeLocal(), 20);
w=w+1;
Alert(+w,"-й, Результат MathMod-",+e);


Sleep(1000); // Спим 1-ну секунду


return(0);
}

 
rlx:

essayez cette fonction

{

recherche d'une virgule via https://docs.mql4.com/ru/strings/StringFind

Assemblage d'une nouvelle chaîne de caractères à partir de deux parties : une chaîne avant la virgule et une chaîne après la virgule https://docs.mql4.com/ru/strings/StringGetChar

Convertir en nombre StrToDouble()

}

N'y a-t-il pas d'autre moyen ou cette fonction prend-elle beaucoup de temps à s'exécuter ?

 

Si MathMod(EVERYTHING, 20) = 0, cela signifie (si ma mémoire est bonne)

que CHAQUE NOMBRE est divisé par 20 sans reste.

20 40 60 80 100 120 140 160 etc.

 
bernc:

N'y a-t-il pas d'autre moyen ou cette fonction prendra-t-elle beaucoup de temps ?



Je ne sais pas comment faire autrement pour enlever la virgule de la chaîne.

 
bernc:

Merci.

Mais ce n'est pas ce que je voulais dire par une virgule séparant les triades, et un point séparant les parties fractionnées.

J'ai une chaîne de caractères 8,5464.00 et je dois la convertir en un nombre. StrToDouble(8,5464.00) deviendra 8.

F(8,5464.00) = 85464.00



Par caractère, via les fonctions de chaîne de caractères, supprimer la virgule, puis StrToDouble().

Raison: