[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 346
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Au début du script, vous écrivez
#property show_inputs
extern double Lot=0.1
Ensuite, lorsque le script est attaché à la fenêtre de symboles, une boîte de dialogue apparaît.
Je comprends. Mais ce n'est pas ce dont j'ai besoin. Avec ces commandes, une boîte de dialogue apparaîtra - avec les paramètres généraux de l'EA et les paramètres actuels du script, et j'ai demandé s'il n'existait pas une telle fonction, qui pourrait être utilisée pour sortir DO ONLY avec les paramètres du script en une seule fois.
Je comprends. Mais ce n'est pas ce dont j'ai besoin. Avec ces commandes, une boîte de dialogue apparaîtra - avec les paramètres généraux de l'EA et les paramètres actuels du script, et j'ai demandé s'il n'y avait pas une telle fonction, qui pourrait être utilisée pour sortir DO ONLY avec les paramètres du script en une seule fois.
Seulement MetaEditor alors.
Pourriez-vous m'indiquer comment fermer tous les ordres ouverts à une heure précise ?
si (HourTime[0]=12)_CloseAllOrder
Voir la fonction _CloseAllOrder à la page précédente ou celle d'avant.
si (HourTime[0]=12)_CloseAllOrder
Pour la fonction _CloseAllOrder elle-même, voir la dernière page ou la page précédente.
Merci, cette fonction est très pratique
Chers experts,
Veuillez me dire quelle est la raison de ce résultat :
gist :
int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}
il imprime "c=3 q=2"
question : comment obtient-il deux sur trois ?
le fait est que, si je remplace 0,3 par 0,4 ou toute autre fraction, cela résout le problème comme prévu.
par exemple
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}
"c=3 q=2 v=4 w=4"
Question : comment obtient-il deux sur trois ?
essayer de compiler, peut-être que mon ordinateur ne sait pas compter (c'est juste idiot...)
Chers experts,
Veuillez me dire quelle est la raison de ce résultat :
gist :
int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}
il imprime "c=3 q=2"
question : comment obtient-il deux sur trois ?
le fait est que, si je remplace 0,3 par 0,4 ou toute autre fraction, cela résout le problème comme prévu.
par exemple
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}
"c=3 q=2 v=4 w=4"
Question : comment obtient-il deux sur trois ?
Essayez de le compiler, peut-être que mon ordinateur ne sait pas calculer (c'est idiot...)
Ce n'est pas un non-sens, juste une erreur d'arrondi courante lorsqu'on travaille avec des nombres réels.
Dans le premier cas, par exemple, c est égal à 2,999999999, la sortie est arrondie, c'est-à-dire 3, mais lors de l'affectation à un type d'entier, la partie fractionnaire est écartée.
Il ne s'agit pas d'un non-sens, mais d'erreurs d'arrondi courantes lorsqu'il s'agit de nombres réels.
Dans le premier cas, par exemple, c est égal à 2,99999999999...
comment 2.99999999 peut être 2.9999 ? 0.3/0.1=3 exactement, ce n'est pas comme si je divisais 1 par 3 et que ça devrait être 0.33333...
mais lors de l'assignation à un type entier, la partie fractionnaire est éliminée.
On attribue à un type entier une valeur c, qui est clairement égale à trois, sans aucune partie fractionnaire. Il n'y a rien à écarter...
La réponse est 100% fausse.
d'autres options ?
Je ne vois pas comment 2.9999 peut être 2.9999 ? 0.3/0.1=3 même, ce n'est pas comme si je divisais 1 par 3 et que ça devrait être 0.33333...
Il ne s'agit que d'une apparence exacte, tandis que le dernier bit peut prendre des valeurs différentes. C'est-à-dire 2,9999, 3 ou 3,00000001.
Pour éviter de tels malentendus, MQL dispose de la fonction NormalizeDouble().