Questions des débutants MQL5 MT5 MetaTrader 5 - page 519

 
Vasyl Nosal:

Puis-je demander pourquoi cela est fait ?

int total=OrdersTotal();

Je dois ajouter que s'il y a beaucoup de commandes, la fonction sera appelée à chaque itération de la boucle, ce qui n'est pas économique.
 
Sergey Gritsay:
Parce que pendant que la boucle est en cours d'exécution, la valeur deOrdersTotal(); peut changer et vous pouvez manquer une commande ou le corps de la boucle aura un problème.

Alexey Kozitsyn:
Je veux ajouter que s'il y a beaucoup de commandes, à chaque itération de la boucle, lafonction sera appelée, et ce n'est pas économique.

Vous plaisantez ou vous êtes sérieux ?

 
Vasyl Nosal:

Alexey Kozitsyn:
J'ajouterai que si les commandes sont nombreuses, lafonction sera appelée à chaque itération de la boucle, ce qui n'est pas économique.

Vous plaisantez ou vous êtes sérieux ?

Avez-vous un autre point de vue ?
 

Alexey Kozitsyn:
У Вас другая точка зрения?

for(int i=OrdersTotal()-1; i>=0; i--)

int i=OrdersTotal()-1

Cette action est exécutée une fois avant la première itération. Il est inutile d'ajouter quoi que ce soit d'autre. Vous rendez juste le code plus grand.

 
Vasyl Nosal:

dans cette conception est possible, mais dans cette conception il ya une chance d'un pépin

for(int i=0; i<total; i++)
 
Sergey Gritsay:

Dans ce modèle, c'est possible, mais dans celui-ci, il y a une chance de problème.

:)))))))

Pour quels motifs ?

А.

Donc, il faut toujours recommencer depuis le début.

 
Vasyl Nosal:

Dans ce cas, oui. Et dans ce cas :

for(int i=0; i<OrdersTotal(); i++)
{

}

il y a une différence. Vous n'avez pas précisé plus tôt ce que vous vouliez dire.

 
Vasyl Nosal:

:)))))))

Pour quels motifs ?

А.

Donc, il faut toujours recommencer depuis le début.

Cette méthode n'est pas toujours appropriée. Par exemple, si vous voulez recommencer à partir de la commande la plus ancienne.
 
kashi_ann:
Yep, donc c'est juste une question de logique. Je m'inquiétais davantage du fait qu'outre l'ordre des actions, il faut également tenir compte du temps de mise à jour des données sur le serveur.

Les points d'arrêt ont bien sûr été utilisés.

Je suppose que je vais devoir tout réécrire, ça n'a aucun sens.

J'ai enfin compris de quoi il s'agissait. ))))))))

Comme d'habitude, ridiculement simple))

C'est juste une mauvaise application des ordres en attente) le prix a baissé et l'ordre limite avec le prix d'achat a augmenté)))). Il ne pouvait tout simplement pas être placé dans ces conditions).

J'ai ajouté le paramètre "ordre d'arrêt" et voilà, tout est comme il se doit))))

 
Alexey Kozitsyn:
Cette méthode n'est pas toujours adaptée. Par exemple, si vous devez effectuer un dépassement en commençant par la commande la plus ancienne.
Et quand cela peut-il être nécessaire ?