statik dizi? - sayfa 4

 
İkinci döngüdeki i=Bars için tüm dizi öğelerini yazdırır, ancak değerleri değil ve tümü = 0

Kafam karıştı

ilk döngüde i-- sonunu çıkardı ayyy. ama etkisi olmadı

 

Küçük bir değişiklikle kodunuz bir şeyler yapıyor gibi görünüyor. . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[8]= 0

Diziler Hakkındaki Kitabı okuduğunuzda, bunun nerede yazdığını gördünüz mü?

"Bir dizi bildirirken, veri türü, dizi adı ve her boyutun eleman sayısı belirtilmelidir:"

 
RaptorUK :

Küçük bir değişiklikle kodunuz bir şeyler yapıyor gibi görünüyor. . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5dk AUDUSD,H1: v1[8]= 0

Diziler Hakkındaki Kitabı okuduğunuzda, bunun nerede yazdığını gördünüz mü?

"Bir dizi bildirirken, veri türü, dizi adı ve her boyutun eleman sayısı belirtilmelidir:"

Evet yaptım

Anladığım kadarıyla double v1[] veri türüne global olarak ve başlamadan önce karar verdi()
Daha sonra [i] diziyi başlatır ve bu durumda dizide kaç öğe olduğunu söyler.
Sağ ?

Öyleyse, eleman sayısını azaltıyorsa, eleman sayısı artık orada değilse, arabellek göstergeyi nasıl saklar ve gönderir?
Ya da sanırım [i] azaldıkça öğelere ne olduğunu söylemeliyim?
Sadece kayboluyorlar mı? Hala başvurulmak üzere v1[i] içinde mi saklanıyorlar yoksa gittiler mi?

Bunu çözebilirsem, belki onlara nasıl atıfta bulunacağımı anlayabilirim ya da gitmişlerse, onları kullanım için nasıl tutacağımı bulabilirim.
Anlamadığım şey, else ifadesinin v1[i]=v1[i+1]'e başvuruda bulunabildiği görülüyor. Peki, o noktada yazdırdığımda v1[i] = 0 ise, v1[i]'ye nasıl başvurabilir? Bu noktada.

Bu tür = 0 bir anlamda mantıklıdır, çünkü dizi boşsa, dizide hiçbir öğe olmadığından boş diziyi 0 olarak yazdırır.

Bunu gerçekten anladığımdan emin değilim ama sürekli düşünüyorum ve belgeyi tekrar tekrar okuyorum.

Şimdi Çubuklar göz önüne alındığında, Çubukların kendisiyle ilişkilendirilmiş 1'den fazla numarası varsa, o zaman boyut düşündüğümden farklı olabilir.
Bu yüzden, gerçekte ne olduğumu anladığımdan emin olmak için daha fazlasını okuyacağım sanırım.

Bar = grafikteki çubukların sayısı gibi sadece tek bir sayı sayımı olduğunu düşünmüştüm.
Çubuklar yazdırdığımda 5 dakikalık grafikte bana 1002 veriyor ve bunun tek bir boyut olduğunu düşünüyorum.


Üzerinde çalışmaya devam edeceğim.

 

Bir Array'i daha büyük (veya daha küçük) yapmak istiyorsanız, ArrayResize kullanmanız gerekir . . . bir Array, diğer herhangi bir değişken gibidir. . sadece kolayca erişebileceğiniz birçoğu olabilir. . .

Bu kodu kopyalayın ve bir komut dosyası olarak çalıştırın, çıktının ne olacağını düşünüyorsunuz?

 //+------------------------------------------------------------------+
//|                                                  TestArray.mq4   |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       ""


// #property indicator_chart_window



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
   
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
   {
   double test[];
   
   test[ 39 ] = 45.6 ;
   Print ( "test[39]= " ,test[ 39 ] );
   

       return ( 0 );
   }
//+------------------------------------------------------------------+

     
 
2011.09.21 07:54:26 yok EURUSD,M5: kaldırıldı
2011.09.21 07:54:26 yok EURUSD,M5: uninit sebep 0
2011.09.21 07:54:26 yok EURUSD,M5: başlatılmamış
2011.09.21 07:54:26 yok EURUSD,M5: test[39]= 0
2011.09.21 07:54:26 yok EURUSD,M5: başlatıldı


Senaryonun ürettiği şey bu, tam olarak kopyaladım

Sadece çift tıkladım ve çalıştı ve uzmanlar sekmesinde görünen bu

Senaryonun günlüğü sadece diyor ki
2011.09.21 07:54:26 Komut dosyası yok EURUSD,M5: kaldırıldı
2011.09.21 07:54:26 Komut dosyası yok EURUSD,M5: başarıyla yüklendi

Çıktı olarak 45.6 görmem gerektiğini düşündüm? Yanlış mıyım ?

Kendi sabit dizimi oluşturdum[5] = {1,2,3,4,5}

Ve Yazdır[5] veya Yazdır[3] vb. Yapabiliyor gibi görünüyor.

parantezleri takıp senaryoyu tekrar göreyim

 

Tamam iyi . . şimdi bu satırı düzenleyin. .

. . . ve yeniden dene.

 double test[];

to

double test[ 40 ];
 
2011.09.21 08:07:58 yok EURUSD,M5: uninit sebep 0
2011.09.21 08:07:58 yok EURUSD,M5: başlatılmamış
2011.09.21 08:07:58 yok EURUSD,M5: test[39]= 45,6


Lanet olsun, birkaç saat içinde geri dönmem gerekiyor.

Belki araba sürerken bunu biraz daha düşünebilirim.

 

Gerçekten düşünecek bir şey yok. . .

"Bir dizi bildirirken, veri türü, dizi adı ve her boyutun eleman sayısı belirtilmelidir:"

Dizideki öğelerin sayısını bildirmeniz gerekir. . .

 

İlginç
Eleman sayısı bildiriminin v1[i] ile yapıldığını sanıyordum? i=Bars olduğundan, bu sayı her neyse, v1[Bars] demekle aynı şey olduğunu düşündüm


Bildirilmediyse, ben de referans alamazsam göstergenin v1[i]'nin ne olduğunu nasıl bileceğini anlamıyorum?
Aynı komut dosyası gösterge sürümünde çalışır ve bunu v1[] arabelleğinde saklar, bu yüzden çizgiyi çizmek için arabelleğe nasıl başvuracağını nasıl biliyor?

Şu anda gösterge üzerinde çalışıyor. Bu farklı bir konu mu?

 

Evet, Gösterge arabellekleri sıradan dizilerden farklı şekilde işlenir.

v[i], Diziyi bildirmiyor, yalnızca öğelerden biri. . ancak çift v[]; sıfır elemanlı bir dizidir. . yani v[herhangi bir şey] her zaman = 0