Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 273
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
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
On vous a déjà dit que la deuxième ligne de ce fragment contient une erreur : avant d'appeler la fonction OrderType(), l'ordre doit être sélectionné à l'aide de la fonction OrderSelect().
Il y a une erreur à la ligne 3 : Mais y a-t-il un ordre avec le numéro 1 ? Si le numéro minimum était 1, c'est-à-dire que le compte commence avec 1, alors le numéro maximum serait égal au numéro (qu'il y ait 5 ordres au total: numéros d'ordre 1, 2, 3, 4, 5). Mais les commandes sont numérotées à partir de 0 - mettez le curseur sur OrdersHistoryTotal et appuyez sur F1 pour voir un exemple. Quel est donc le nombre maximum de commandes ?
Vous avez suggéré plus tôt de diviser le jour du mois par 7 et d'arrondir, ce qui est fait dans le deuxième tableau.
Je ne comprends pas votre algorithme.
Voici ce que je pense :
1) Déterminer le jour de la semaine du premier jour du mois.
2. Trouvez combien de jours il reste jusqu'à la fin de la semaine (de mercredi (3) à lundi 7-3 = 4).
3. Le 5ème jour - le début de la deuxième semaine
4. ensuite, dans la boucle, nous recherchons une semaine, si le nombre est compris entre 5 + 7 * x et 5 + 7 * (x +1), où x est le nombre de semaines moins un, alors nous avons trouvé la semaine.
Mais c'est compliqué, il y a peut-être un moyen plus simple ?
Alexey, nous parlons de choses différentes. Le problème n'était pas de déterminer quelle semaine du mois correspond au numéro du mois, mais le premier jour de la semaine portant ce nom dans le mois. Il s'agit de tâches différentes et, par conséquent, de solutions différentes.
Depuis 63 ans, je n'arrive toujours pas à comprendre comment calculer le nombre de semaines dans un mois. Par exemple, en Russie, le lundi est considéré comme le premier jour de la semaine. Si le mois commence le dimanche, comment compte-t-on le lundi ? La deuxième semaine a-t-elle commencé ? Ou quoi ? La question est rhétorique, il n'est pas nécessaire de lancer une polémique à ce sujet.
Alexei, nous parlons de choses différentes. Le problème n'était pas de déterminer dans quelle semaine du mois se trouve le numéro du mois, mais de savoir si c'est le premier jour de la semaine portant ce nom dans ce mois. Il s'agit de tâches différentes et, par conséquent, de solutions différentes.
Depuis 63 ans, je ne comprends toujours pas comment compter le nombre de semaines dans le mois. Disons qu'en Russie, le premier jour de la semaine est le lundi. Si le mois commence le dimanche, comment le lundi est-il compté ? La deuxième semaine a-t-elle commencé ? Ou quoi ? La question est rhétorique, il n'est pas nécessaire de lancer une polémique à ce sujet.
Je vois. C'est une question définitive pour moi...
Alexei, nous parlons de choses différentes. Le problème n'était pas de déterminer dans quelle semaine du mois se trouve le numéro du mois, mais de savoir si c'est le premier jour de la semaine portant ce nom dans ce mois. Il s'agit de tâches différentes et, par conséquent, de solutions différentes.
Depuis 63 ans, je n'arrive toujours pas à comprendre comment calculer le nombre de semaines dans un mois. Par exemple, en Russie, le lundi est considéré comme le premier jour de la semaine. Si le mois commence le dimanche, comment compte-t-on le lundi ? La deuxième semaine a-t-elle commencé ? Ou quoi ? La question est rhétorique, il n'est pas nécessaire de lancer une polémique à ce sujet.
On vous a déjà dit que la deuxième ligne de ce fragment contient une erreur : avant d'appeler la fonction OrderType(), l'ordre doit être sélectionné à l'aide de la fonction OrderSelect().
Il y a une erreur à la ligne 3 : Mais y a-t-il un ordre avec le numéro 1 ? Si le numéro minimum était 1, c'est-à-dire que le compte commence avec 1, alors le numéro maximum serait égal au numéro (disons qu'il y a 5 ordres au total : numéros d'ordre 1, 2, 3, 4, 5). Mais les commandes sont numérotées à partir de 0 - mettez le curseur sur OrdersHistoryTotal et appuyez sur F1 pour voir un exemple. Quel est donc le nombre maximum de commandes ?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Est-ce que c'est correct maintenant ?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
et maintenant c'est bon ?
écrire un script et après chaque opérateur imprimer l'information + GetLastError() avec Alert() - voir l'exemple de script ci-dessus
mais il vaut mieux prendre le code d'erreur de la variable _LastError pour l'imprimer, sinon on risque de détruire la logique avec un léger "debug print".
GetLastError() fait en même temps une chose peu évidente pour GetXXX() - elle change son état interne en remettant le code d'erreur à 0.
seulement pour l'impression, il est préférable de prendre le code d'erreur de la variable _LastError, sinon il est possible de détruire la logique par un léger "debug print".
GetLastError() fait en même temps une chose peu évidente pour GetXXX() - il change l'état interne, remettant le code d'erreur à 0.
C'est une question de goût - soit vous stockez le code d'erreur dans une variable et réinitialisez l'erreur, soit vous le stockez dans _LastError pour une utilisation ultérieure.
voici l'algorithme ci-dessus à lire de bas en haut