MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1686

 
Aleksei Stepanenko # :
büyüktür veya eşittir, çünkü dizinin ilk elemanı da hesaba katılmalıdır ve dizideki indeksi sıfırdır.
Burada herkesin hangi diziden bahsettiğini anlamıyorum. OrdersTotal bu şekilde çalışmıyorsa. Bu bir dizi değil, sayı döndüren bir işlevdir.
 
Aleksei Stepanenko # :
Hayır, sorun değil. Konum yoksa, i= OrdersTotal()-1 , -1'e eşit olacaktır. Ve i>=0 döngü koşulu hemen yürütülmeyecektir. Ve program döngüye girmeyecek.
Ancak bu doğru değil, "siparişlerin toplamı" 1'dir, yani 1 sipariş her zaman döngüden çıkarılacaktır.
 
Nerd Trader # :
Burada herkesin hangi diziden bahsettiğini anlamıyorum. OrdersTotal bu şekilde çalışmıyorsa.

Emirler esasen programın dizisindedir, sadece onu görmüyoruz. OrdersTotal, ArraySize ile eşdeğerdir ve toplam öğe sayısını gösterir.

Bir dizide, ilk öğenin dizini her zaman sıfırdan başlar ve son öğe sırasıyla boyut eksi birdir.

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

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

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

Emirler esasen programın dizisindedir, sadece onu görmüyoruz. OrdersTotal, ArraySize ile eşdeğerdir ve toplam öğe sayısını gösterir.

Bir dizide, ilk öğenin dizini her zaman sıfırdır ve son öğenin boyutu sırasıyla eksi birdir.

OrdersTotal bir dizi değilse, siparişlerin nerede olduğu ne fark eder. Dizi indeksini değil, sipariş sayısını döndürür.

 
Nerd Trader # :
Ancak bu doğru değil, "siparişlerin toplamı" 1'dir, yani 1 sipariş her zaman döngüden çıkarılacaktır.

siparişler numaralı bir listededir.Liste 0'dan sayılır..

örneğin

seri numarası 0, satın alma tipi, lot 0.1

seri numarası 1, hücre tipi, lot 1

seri numarası 2, hücre tipi, lot 0,5

seri numarası 3, satın alma tipi, lot 0.16

Şimdi OrdersTotal()'ı çağırırsak = 4 olur

AMA listenin tüm satırlarında gezinmeniz gerekiyorsa, o zaman 0 1 2 3 numaralarını geçmeniz gerekir, burada 4 numara yok .. 4 sipariş olmasına rağmen ..

Bu nedenle, bir arama döngüsü hazırlanırken bir hile yapılır, sipariş sayısı için eksi 1 yapılır, hepsi bu..


inek tüccarı   # :

OrdersTotal bir dizi değilse, siparişlerin nerede olduğu ne fark eder. Dizi indeksini değil, sipariş sayısını döndürür.

Doğru, AMA örtülü bir gerçek var, sipariş sayısına sahipseniz, listedeki tüm siparişlerin numaralarını alabilirsiniz.
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.10.19
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
OrdersTotal toplamdır , ancak hemen hemen tüm programlama dillerinde dizinler 1'den değil 0'dan başlar. Bir birim geri gidin ve hepsi bu, sonra her şey düşündüğünüz gibi olacak.
 
Nerd Trader # :

OrdersTotal bir dizi değilse, siparişlerin nerede olduğu ne fark eder?

Dizideki sipariş sayısı ve seri numaraları farklı şeylerdir. Biletler de var.)
 
Nerd Trader # :
Ancak bu doğru değil, "siparişlerin toplamı" 1'dir, yani 1 sipariş her zaman döngüden çıkarılacaktır.

"-1" i sevmiyorsan, yapabilirsin

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

Emirler esasen programın dizisindedir, sadece onu görmüyoruz. OrdersTotal, ArraySize ile eşdeğerdir ve toplam öğe sayısını gösterir.

Bir dizide, ilk öğenin dizini her zaman sıfırdan başlar ve son öğe, boyut eksi bir olur.

Peki, toplam sayı ve dizi indeksi farklı şeyler, bunun neden aynı şey olduğunu düşünüyorsunuz? 1 dizinli bir dizi oluşturmak için 0 değil 1 girin (int ar[1]) ve buna göre ArraySize( ar ) de 0 değil 1 döndürür.

 
MakarFX # :

"-1" i sevmiyorsan, yapabilirsin

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

bu yanlış.. 0 sipariş numarası atlanacak..

Ve haklı olarak -

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