Hatalar, hatalar, sorular - sayfa 465

 
uncleVic :
Ve bunun hakkında SD'ye yazın. "İncelemedeki her şey test cihazında seçilemez" diyorlar.
Hayır, geri çekil. Açık iki terminalim var - Alpari ve MK ve ileri geri geçiş yaptım, ancak sonuncusunda piyasa genel görünümüne EURGBP eklemeyi unuttum.
 
marketeer :
Hayır, geri çekil. Açık iki terminalim var - Alpari ve MK ve ileri geri geçiş yaptım, ancak sonuncusunda piyasa genel görünümüne EURGBP eklemeyi unuttum.
Olur.
 

Komut dosyasında bir gösterge dizisi gibi davranacak bir dizi oluşturmaya çalışıyorum. Yani yeni bir giriş göründüğünde, tüm dizi geriye kaydırılır ve sıfır konumuna yeni bir giriş yapılır.

 void OnStart ()
  {
   int a[];
   int size= 5 ;               // размер массива
   bool flag= true ;           // флаг направления индексации
   ArraySetAsSeries (a,flag);  // зададим направление индексации
   ArrayResize (a,size);       // зададим размер массива
//---
   for ( int i= 0 ;i<size;i++)  // задаём значения и распечатываем массив
      a[i]=size-i;         // 54321
   Print ( "[" ,a[ 0 ], "][" ,a[ 1 ], "][" ,a[ 2 ], "][" ,a[ 3 ], "][" ,a[ 4 ], "]" );
//---
   ArrayResize (a,size- 1 );     // уменьшаем размер 5432
   ArraySetAsSeries (a,!flag);  // меняем направление индексации 2345
   ArrayResize (a,size);       // возвращаем в исходный размер  2345х
   ArraySetAsSeries (a,flag);   // возвращаем в исходную индексацию х5432   
   a[ 0 ]= 6 ;                   // задаём "пустому" нулевому данному значение
//---
   Print ( "[" ,a[ 0 ], "][" ,a[ 1 ], "][" ,a[ 2 ], "][" ,a[ 3 ], "][" ,a[ 4 ], "]" );
   // в результате получаем 64321 вместо нужного 65432
  }

Neden nasıl dersin?

Not: Ayrım gözetmeksizin suçlamak istemiyorum, belki bir şeyleri berbat ettim ama aklıma ilk gelen şey başka bir dil optimizasyon hatası.

ZZY Verileri bir döngü içinde kaydırmayı tavsiye etmek isteyen yoldaşlara soruyorum, merak etmeyin, bu seçenek 5 ... 100 ... 1000 ... dizilerinde iyi çalışıyor, ancak büyük dizi boyutları için kabul edilemez.

 
Urain :

Komut dosyasında bir gösterge dizisi gibi davranacak bir dizi oluşturmaya çalışıyorum. Yani yeni bir giriş göründüğünde, tüm dizi geriye kaydırılır ve sıfır konumuna yeni bir giriş yapılır.

Neden nasıl dersin?


Ve eğer CarrayInt sınıfını alırsanız ve verileri bir ekleme ile oraya gönderirseniz?
 
uncleVic :
Ve eğer CarrayInt sınıfını alırsanız ve verileri oraya iterseniz?

Bir diziyi parametrelerden geçirebilmek istiyorum ve sınıfta dizinin kendisi özel.

Yine, hatırladığım kadarıyla, bu yöntem sadece bir döngüdeki verileri kaydırmakla ilgilenir ve bu oldukça yavaştır.

 
Urain :

Komut dosyasında bir gösterge dizisi gibi davranacak bir dizi oluşturmaya çalışıyorum. Yani yeni bir giriş göründüğünde, tüm dizi geriye kaydırılır ve sıfır konumuna yeni bir giriş yapılır.

Neden nasıl dersin?

Not: Ayrım gözetmeksizin suçlamak istemiyorum, belki bir şeyleri berbat ettim ama aklıma ilk gelen şey başka bir dil optimizasyon hatası.

ZZY Verileri bir döngü içinde kaydırmayı tavsiye etmek isteyen yoldaşlara soruyorum, merak etmeyin, bu seçenek 5 ... 100 ... 1000 ... dizilerinde iyi çalışıyor, ancak büyük dizi boyutları için kabul edilemez.


"ZZY" pahasına: Yeniden boyutlandırmalarınız hafızanızı parçalamayacak mı?
 
uncleVic :
"ZZY" pahasına: Yeniden boyutlandırmalarınız hafızanızı parçalamayacak mı?

Mql5'te (bellek tahsis eden) başka bir işlev bilmiyorum.

ZY Evet ve anladığım kadarıyla dizinin yönü de tamamen sanal bir şey.

ZZY Muhtemelen depolama ile değil, adres alanı sanallaştırma ile çalışmak gerekiyor. Ve bu da işi yavaşlatır, aynı şekilde, doğrudan erişim daha hızlıdır.

 
Urain :

Bir diziyi parametrelerden geçirebilmek istiyorum ve sınıfta dizinin kendisi özel.

Yine, hatırladığım kadarıyla, bu yöntem sadece bir döngüdeki verileri kaydırmakla ilgilenir ve bu oldukça yavaştır.

Dizi sınıflarını iyileştirmeyi düşünmek gerekecek (bana göre).
 
uncleVic :
Dizi sınıflarını iyileştirmeyi düşünmek gerekecek (bana göre).

Evet, sıfır konumuna sanal bir ekleme zarar vermez. Ancak yalnızca verilerin gerçekten hareket etmemesi için, aksi takdirde uzun zaman alacak ve etkili olmayacaktır.

Aynı şekilde, doğrudan bellekle çalışamamanız kötü, sanallaştırma sırasında iyi bir hızlanma var, C ++'da bile bir diziye değil, adresteki bir hücreye erişirseniz hız 1,5 kat artıyor.

 
Urain :

Komut dosyasında bir gösterge dizisi gibi davranacak bir dizi oluşturmaya çalışıyorum. Yani yeni bir giriş göründüğünde, tüm dizi geriye kaydırılır ve sıfır konumuna yeni bir giriş yapılır.

ZZY Verileri bir döngü içinde kaydırmayı tavsiye etmek isteyen yoldaşlara soruyorum, merak etmeyin, bu seçenek 5 ... 100 ... 1000 ... dizilerinde iyi çalışıyor, ancak büyük dizi boyutları için kabul edilemez.


Ve tüm diziyi hareket ettirmemeyi tavsiye etmek mümkün mü? :)

Dinamik dizi , sonuna yeni veri yazılır, boyut değiştirilir/hatırlanır ve AsSeries bayrağı sadece indekslemeyi değiştirir.

N dizi öğesine normal sipariş erişimi için, "seri" Boyut-N-1 için.

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5