Questions des débutants MQL4 MT4 MetaTrader 4 - page 219
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
J'ai toujours su qu'il contient le nombre d'ordres -1, c'est-à-dire OrdersTotal()-1 et tout fonctionnait, mais j'ai commencé à écrire un programme et soudain, un ordre n'est plus compté, j'ai demandé OrdersTotal() et il m'a donné le nombre total d'ordres = 3, au lieu de 3-1.
Que se passe-t-il ?
La forme habituelle de la boucle dans l'aide :
int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
{
}
C'est-à-dire que le premier ordre est égal à zéro.
Mais non, en fait, le premier ordre est 1, ce qui signifie que nous devons commencer la recherche à partir de 1 et non de zéro ?
Les métacitations ont-elles fait quelque chose de mal ou suis-je stupide ?
Bonjour, que se passe-t-il avec OrdersTotal() ?
J'ai toujours su qu'il contient le nombre de commandes -1, c'est-à-dire OrdersTotal()-1, et tout fonctionnait, mais j'ai commencé à écrire un programme et soudain une commande n'est pas comptée. J'ai demandé OrdersTotal() et il dit total des commandes = 3, au lieu de 3-1.
Que se passe-t-il ?
La forme habituelle de la boucle dans l'aide :
int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
{
}
C'est-à-dire que le premier ordre est égal à zéro.
Mais non, en fait, le premier ordre est 1, ce qui signifie que nous devons commencer la recherche à partir de 1 et non de zéro ?
Les métacitations ont-elles fait quelque chose de mal, ou suis-je stupide ?
Vous avez confondu les ORDRES RELATIFS et les POISONS. Lisez la référence. Soyez plus précis dans votre question : qu'essayez-vous de compter : les ORDRES SUPPRIMÉS ou les POSITIONS ? Et oui, rien n'a changé : l'indice du premier élément commence par "0".
Ajouté : exemple
Exemple : Calculer les positions et les ordres en suspens
Vous avez confondu les ORDRES RELATIFS et les POSITIONS. Lisez la référence. Formulez votre question de manière plus précise : qu'essayez-vous de compter : ORDRES RETRAITÉS ou POSTES ? Et oui, rien n'a changé : l'indice du premier élément commence par "0".
Ajouté : exemple
Exemple : Calculer les positions et les ordres en suspens
Je veux dire MQL4, pas MQL5, il n'y a pas de différence entre les ordres en attente et les ordres au marché !
Je veux dire le MQL4, pas le MQL5, il n'y a pas de division entre en attente et en attente de marché !
Vous êtes en train d'écrire dans le forum MQl5. Vous écrivez dans la section principale. Vous postez dans le forum MQL5 - et vous obtiendrez des réponses sur MQL5.
Les questions relatives à l'ancien terminal sont adressées à la section spéciale : MQL4 et MetaTrader 4. A partir de maintenant, écrivez là. Je lui transmettrai vos questions.
J'ai comparé deux variantes, dans la première, j'ai utilisé OrdersTotal()-1 et j'ai commencé la recherche à partir de zéro - j'ai obtenu l'erreur
. Dans la deuxième variante, j'ai commencé par un et j'ai pris la totalité de OrdersTotal() - pas d'erreur cette fois-ci
Dans les captures d'écran, vous pouvez voir que OrdersTotal() indique le nombre réel de commandes, et non OrdersTotal()-1 ...
Laquestion est de savoir pourquoi OrdersTotal() affiche le nombre réel de commandes, plutôt que -1, devrait-il en être ainsi ou s'agit-il d'une nouveauté ?
Car dans ce cas, nous devons commencer la recherche non pas à partir de zéro, mais à partir de un !
J'ai comparé deux variantes, dans la première, j'ai utilisé OrdersTotal()-1 et j'ai commencé la recherche à partir de zéro - j'ai obtenu l'erreur
. Dans la deuxième variante, j'ai commencé par un et j'ai pris la totalité de OrdersTotal() - pas d'erreur cette fois-ci
Dans les captures d'écran, vous pouvez voir que OrdersTotal() indique le nombre réel de commandes, et non OrdersTotal()-1 ...
Laquestion est de savoir pourquoi OrdersTotal() affiche le nombre réel de commandes, plutôt que -1, devrait-il en être ainsi ou s'agit-il d'une nouveauté ?
Car dans ce cas, nous devons commencer la recherche non pas à partir de zéro, mais à partir de un !
Je pense avoir compris mon erreur, désolé...
Il y a un décalage de -1 dans cette condition :
if (OrderSelect(i-1,SELECT_BY_POS)==true){}
Désolé d'être brutal, j'ai pris la chaîne d'un autre programme et n'ai pas fait attention au décalage !