Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1686

 
Aleksei Stepanenko #:
est supérieure ou égale à, car le premier élément du tableau doit également être pris en compte, et son index dans le tableau est zéro.
Je ne comprends pas de quel tableau tout le monde parle ici. Si OrdersTotal ne fonctionne pas comme ça. Ce n'est pas un tableau, c'est une fonction qui renvoie un nombre.
 
Aleksei Stepanenko #:
Non, c'est bon. S'il n'y a pas de positions, alors i=OrdersTotal()-1 sera égal à -1. Et la condition de boucle i>=0 ne sera pas exécutée immédiatement. Et le programme n'entrera pas dans la boucle.
Mais ce n'est pas correct, la "somme des commandes" est de 1, c'est-à-dire que nous allons toujours exclure 1 commande de la boucle.
 
Nerd Trader #:
Je ne comprends pas à quel tableau tout le monde fait référence ici. Si OrdersTotal ne fonctionne pas comme ça.

Les commandes sont essentiellement dans un tableau dans le programme, mais nous ne le voyons pas. OrdersTotal est égal à ArraySize, et indique le nombre total d'éléments.

Dans un tableau, l'indice du premier élément commence toujours par zéro, et la taille du dernier élément par moins un.

Пример: всего 5 ордеров, индексы: 0,1,2,3,4.

или массив из 5 элементов, индексы те же.

for(int i=5-1; i>=0; i--)
 
Aleksei Stepanenko #:

Les commandes sont essentiellement dans un tableau dans le programme, mais nous ne le voyons pas. OrdersTotal est égal à ArraySize, et indique le nombre total d'éléments.

L'indice du premier élément du tableau est toujours égal à zéro, tandis que la taille du dernier élément, respectivement, est inférieure à un.

Quelle différence cela fait-il de savoir où se trouvent les commandes, si OrdersTotal n'est pas un tableau. Il renvoie le nombre de commandes, pas l'index du tableau.

 
Nerd Trader #:
Mais ce n'est pas correct, il s'avère que la "somme des commandes" est égale à 1, ce qui signifie qu'une commande sera toujours exclue de la boucle.

les commandes sont dans une liste numérotée... La liste compte à rebours de 0...

Par exemple

numéro de série 0, type d'achat, lot 0.1

numéro de série 1, type de vente, lot 1

numéro de série 2, type de vente, lot 0.5

numéro de séquence 3, type d'achat, lot 0.16

Si vous appelez maintenant OrdersTotal() il sera = 4

Mais si nous voulons naviguer à travers toutes les lignes de la liste, nous devons passer par les numéros 0 1 2 3, le numéro 4 n'est pas là... bien qu'il y ait 4 commandes.

Donc un truc est fait, lors de la mise en place d'une boucle, moins 1 sur le nombre de commandes, c'est tout....


Nerd Trader#:

Quelle différence cela fait-il de savoir où se trouvent les commandes si OrdersTotal n'est pas un tableau. Il renvoie le nombre de commandes, pas l'index du tableau.

Correct, MAIS il y a un fait implicite, ayant le nombre de commandes vous pouvez obtenir les numéros de toutes les commandes dans la liste.
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.10.19
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
OrdersTotal est le nombre total, mais les index dans presque tous les langages de programmation commencent par 0, et non par 1. Il faut s'y habituer. Reculez d'une unité et c'est tout, et ce sera pareil que vous le pensez.
 
Nerd Trader #:

Quelle différence cela fait-il de savoir où se trouvent les commandes si OrdersTotal n'est pas un tableau ?

Le nombre de commandes et les numéros de commande dans le tableau sont des choses différentes. Et il y a aussi des billets)
 
Nerd Trader #:
Mais ce n'est pas correct, vous obtenez "somme des commandes" - 1, c'est-à-dire qu'une commande sera toujours exclue de la boucle.

Si vous n'aimez pas "-1", vous pouvez faire ceci

for(int i = OrdersTotal(); i >= 1 ; i --)
 
Aleksei Stepanenko #:

Les commandes sont essentiellement dans un tableau dans le programme, mais nous ne le voyons pas. OrdersTotal est égal à ArraySize, et indique le nombre total d'éléments.

Dans un tableau, l'indice du premier élément commence toujours par zéro, et la taille du dernier élément - moins un.

Donc le total et l'indice de tableau sont des choses différentes, pourquoi pensez-vous que c'est la même chose ? Pour créer un tableau avec 1 index, tapez 1, pas 0, (int ar[1]), donc ArraySize( ar ) retourne aussi 1, pas 0.

 
MakarFX #:

Si vous n'aimez pas "-1", vous pouvez

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

ce n'est pas correct... une commande avec le numéro 0 sera ignorée...

Et le bon chemin est -

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