Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 147
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
Aidez-moi, je ne comprends pas pourquoi j'obtiens zéro lors du calcul du tableau VesMass pour les valeurs i>0 ?
Il s'avère que vous ne devez pas écrire 4 et 5, mais 4.0 et 5.0 - quelle est la logique - ce n'est pas clair pour moi...
Lisez la documentation et tout deviendra clair. C'est bien que vous l'ayez fait vous-même.
J'ai lu quelque chose comme ça avant - alors j'ai décidé de l'essayer, mais je ne vois pas bien où est la logique derrière tout ça... Et je n'ai pas trouvé la réponse dans la documentation, d'ailleurs.
Vous pouvez écrire 4.0/5 ou (double)4/5 - le résultat est alors un nombre réel.Il s'agit d'une particularité non seulement dans MCL, mais aussi dans C++ et d'autres langages de programmation - la division de deux entiers ou variables de type (int) donnera un résultat tronqué en entier. Dans votre cas, 4/5=0.
Vous pouvez écrire 4.0/5 ou (double)4/5 - le résultat est alors un nombre réel.Ce n'est pas seulement une caractéristique d'ICL, en C++ et dans d'autres langages de programmation c'est la même chose - diviser deux entiers ou variables de type (int) donnera un résultat tronqué à un entier. Dans votre cas, 4/5=0.
Je comprends cela, mais je ne comprends pas la logique de la solution - c'est-à-dire le besoin.
Je comprends cela, mais je ne comprends pas la logique derrière la solution - c'est-à-dire le besoin.
Vous ne vous demandez pas "pourquoi 2*2=4 en arithmétique, quelle est la logique de la solution" ? Tu le prends juste comme un axiome et tu l'utilises. C'est comme ça que ça se passe avec la division de deux nombres entiers.
Vous ne vous demandez pas "pourquoi 2*2=4 en arithmétique, quelle est la logique derrière la solution" ? Tu le prends juste comme un axiome et tu l'utilises. C'est la même chose avec la division de deux entiers.
Je vais vérifier avec l'addition...
La ligne est une ligne de tendance. J'ai changé ses propriétés en rayon. Cela n'a pas aidé. Si je voulais qu'il affiche le prix indépendamment de la position de la barre zéro (au-dessus, au-dessous).
Ce code ne fonctionne pas non plus.
int start() {
double pr=ObjectGetValueByShift("line",0) ;
Si (Bid==pr){
Alerte (pr);}
return(0);}
Le nom de la ligne est-il correctement orthographié ?
Essayez ce script, et montrez ce qu'il dit dans les logs.
}
Le script détecte l'objet, écrit le nom correctement. Mais le prix est absolument à gauche. Il est marqué sur la photo par une ligne horizontale. Il donne ces prix, que les barres aient franchi ou non la ligne.
La ligne est en tendance. J'ai changé les propriétés en faisceau. Cela n'a pas aidé. Idéalement, le prix doit être affiché quelle que soit la position de la barre de zéro (haut, bas).
Ce code ne fonctionne pas non plus.
int start() {
double pr=ObjectGetValueByShift("line",0) ;
Si (Bid==pr){
Alerte (pr);}
return(0);}
L'enchère peut facilement sauter votre ligne, elle n'est pas obligée de s'arrêter à chaque point (c'est-à-dire que vous n'obtiendrez pas l'égalité exacte).
changez la condition par exemple si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similaire...
L'enchère peut facilement sauter votre ligne, elle n'est pas obligée de s'arrêter à chaque point (c'est-à-dire que l'égalité exacte ne se produira pas).
changer la condition par exemple si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) ou similaire...
Merci ! J'ai compris l'idée.
Et si la situation était différente. Il y a des lignes horizontales avec des noms différents sur le graphique. Vous avez besoin du script pour calculer quelle ligne correspond à quel prix.