Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1686

 
Aleksei Stepanenko #:
ist größer oder gleich, da das erste Element des Arrays ebenfalls berücksichtigt werden muss und sein Index im Array Null ist.
Ich verstehe nicht, über welches Feld hier alle reden. Wenn OrdersTotal nicht auf diese Weise funktioniert. Es handelt sich nicht um ein Array, sondern um eine Funktion, die eine Zahl zurückgibt.
 
Aleksei Stepanenko #:
Nein, das ist in Ordnung. Wenn es keine Positionen gibt, ist i=OrdersTotal()-1 gleich -1. Und die Schleifenbedingung i>=0 wird nicht sofort ausgeführt. Und das Programm wird nicht in die Schleife eintreten.
Aber das ist nicht korrekt, die "Summe der Aufträge" ist 1, d.h. wir werden immer 1 Auftrag aus der Schleife ausschließen.
 
Nerd Trader #:
Ich verstehe nicht, auf welches Feld sich alle hier beziehen. Wenn OrdersTotal nicht auf diese Weise funktioniert.

Die Aufträge befinden sich im Wesentlichen in einem Array im Programm, wir sehen es nur nicht. OrdersTotal ist gleich ArraySize und zeigt die Gesamtzahl der Elemente an.

In einem Array beginnt der Index des ersten Elements immer mit Null und die Größe des letzten Elements minus Eins.

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

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

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

Die Aufträge befinden sich im Wesentlichen in einem Array im Programm, wir sehen es nur nicht. OrdersTotal ist gleich ArraySize und zeigt die Gesamtzahl der Elemente an.

Der Index des ersten Elements im Array ist immer null, während die Größe des letzten Elements jeweils minus eins ist.

Welchen Unterschied macht es, wo sich die Bestellungen befinden, wenn OrdersTotal kein Array ist. Sie gibt die Anzahl der Aufträge zurück, nicht den Array-Index.

 
Nerd Trader #:
Aber das ist nicht korrekt, es stellt sich heraus, dass "Summe der Aufträge" 1 ist, was bedeutet, dass 1 Auftrag immer von der Schleife ausgeschlossen wird.

die Aufträge sind in einer nummerierten Liste aufgeführt... Die Liste zählt von 0 abwärts...

Zum Beispiel

Seriennummer 0, Kauftyp, Los 0.1

Seriennummer 1, Verkaufstyp, Los 1

Seriennummer 2, Verkaufstyp, Los 0,5

laufende Nummer 3, Kauftyp, Los 0,16

Wenn Sie jetzt OrdersTotal() aufrufen, wird = 4 angezeigt.

Aber wenn wir durch alle Zeilen der Liste navigieren wollen, müssen wir durch die Nummern 0 1 2 3 gehen, die Nummer 4 ist nicht hier... obwohl es 4 Aufträge gibt.

Also wird ein Trick angewendet, wenn man eine Schleife zusammenstellt, minus 1 bei der Anzahl der Aufträge, das war's...


Nerd Trader#:

Welchen Unterschied macht es, wo sich die Bestellungen befinden, wenn OrdersTotal kein Array ist. Sie gibt die Anzahl der Aufträge zurück, nicht den Array-Index.

Richtig, ABER es gibt eine implizite Tatsache, mit der Anzahl der Aufträge können Sie die Nummern aller Aufträge in der Liste erhalten
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.10.19
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
OrdersTotal ist die Gesamtzahl, aber in fast allen Programmiersprachen beginnen die Indizes mit 0 und nicht mit 1. Gewöhnen Sie sich einfach daran. Gehen Sie eine Einheit zurück, und das war's, und es wird dasselbe sein, wie Sie denken.
 
Nerd Trader #:

Welchen Unterschied macht es, wo sich die Aufträge befinden, wenn OrdersTotal kein Array ist?

Die Anzahl der Aufträge und ihre Ordnungsnummern, die sich in einem Array befinden, sind unterschiedliche Dinge. Und es gibt auch Tickets)
 
Nerd Trader #:
Aber das ist nicht korrekt, es stellt sich heraus, dass "Summe der Aufträge" 1 ist, was bedeutet, dass 1 Auftrag immer von der Schleife ausgeschlossen wird.

Wenn Sie "-1" nicht mögen, können Sie dies tun

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

Die Aufträge befinden sich im Wesentlichen in einem Array im Programm, wir sehen es nur nicht. OrdersTotal ist gleich ArraySize und zeigt die Gesamtzahl der Elemente an.

In einem Array beginnt der Index des ersten Elements immer mit Null, und die Größe des letzten Elements - minus Eins.

Total und Array-Index sind also unterschiedliche Dinge, warum glauben Sie, dass es dasselbe ist? Um ein Array mit einem Index von 1 zu erstellen, geben Sie 1, nicht 0, ein (int ar[1]), so dass ArraySize( ar ) auch 1, nicht 0, zurückgibt.

 
MakarFX #:

Wenn Sie "-1" nicht mögen, können Sie

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

Das ist nicht korrekt... eine Bestellung mit der Nummer 0 wird übersprungen...

Die korrekte Vorgehensweise ist wie folgt

for(int i = OrdersTotal()-1; i >= 0 ; i --)
 {
 }
Grund der Beschwerde: