[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 314

 
silhouette :

Çok boyutlu dizilerle ilk defa uğraşıyorum :)

Çok boyutlu bir diziyi başka bir şey olarak hayal ederseniz, yönlendirme daha kolay olacaktır. Yani: Bir dizi için özünü yansıtan bir model bulursanız, modeli gözünüzün önünde tutmak daha kolay olur.

Tek boyutlu bir dizi, bir çizgi üzerindeki nesnelerdir (sıfırdan başlayan koordinat ışını). Böyle bir diziye örnek olarak bir mağazadaki kuyruk verilebilir. Sıradaki ilk kişi, şimdi satın alan kişinin hemen arkasındaki kişidir. Alıcı, sıradaki ilk kişi olarak adlandırılamaz - satın alır - sıfırdır. Tek boyutlu bir dizinin sıfır hücresinin içinde bulunur.

İki boyutlu bir dizi, bir düzlemdeki nesnelerdir (koordinat düzlemi). Bir örnek bir oditoryum olabilir. Böyle ve böyle bir sıra, böyle ve böyle bir yer. Bu modele bir sıfır satırı ve bir sıfır yeri ekleyin ve iki boyutlu bir dizinin tam bir modelini elde edeceksiniz.

Üç boyutlu bir dizi, uzaydaki nesnelerdir (koordinat alanı) - bir nesnenin koordinatı üç değerle verilir. Kesik kenarları olan bir küp. Model, giriş numarası sıfır, kat numarası sıfır ve daire numarası (diğerlerinin yanı sıra) olan bir konut binası olabilir. Her girişte daire numaralandırmasının sıfırdan başlaması şartıyla.

Dört boyutlu bir dizi, tek boyutlu bir diziye benzer. Bu, tüm noktaları üç boyutlu diziler olan bir koordinat ışınıdır. Model - sokak. Koordinat şu değerlerle verilecektir: ev numarası, giriş numarası, kat numarası, daire numarası.

Ve n-boyutunda - sokaklardan semtlere, şehir semtlerinden, semtlerden şehirlere, şehirlerden ülkelere, ülkelerden gezegenlere...

 
GarKain :
Açılan siparişin barın herhangi bir anında ve bir sonraki siparişin sadece bir sonraki barda açılabilmesi için nasıl yapıldığını biri açıklayabilir mi?

Siparişler listesinde dolaşın. Bir sonraki emrin açılış zamanı mevcut çubuğun açılış zamanından büyük veya ona eşitse (Zaman[0]), o zaman bu döviz çiftinde emirlerin açılmasını yasaklayan bir bayrak koyarız. Bir sonraki mumda, döngü böyle bir emir olmadığını tespit edecek ve bir yasak koymayacak - yani, açılış emirlerini yasaklamak için bayrağı kaldıracaktır.
 
drknn :

Siparişler listesinde dolaşın. Bir sonraki emrin açılış zamanı mevcut çubuğun açılış zamanından büyük veya ona eşitse (Zaman[0]), o zaman bu döviz çiftinde emirlerin açılmasını yasaklayan bir bayrak koyarız.
aaaa çok teşekkür ederim
 
Drknn, açıklama için çok teşekkür ederim. Kurtaracağım ;)
 
GarKain :
aaaa çok teşekkür ederim


Kod yalnızca bir döviz çifti için çalışıyorsa, satırdaki diğer çiftler için siparişlerin filtrelenmesini ayarlayın

 if ( OrderSymbol ()!= Symbol ()){ continue ;}
 
drknn :


Kod yalnızca bir döviz çifti için çalışıyorsa, satırdaki diğer çiftler için siparişlerin filtrelenmesini ayarlayın

soru. kod birkaç döviz çiftinde ve aynı anda birkaç zaman diliminde çalışıyorsa, üzerlerine farklı sihirli sayılar koymak ve bunları filtrelemek mümkün müdür?
 

Yapabilir.

 if ( OrderMagicNumber ()!=MAGIC) { continue ;}
 
drknn :

Yapabilir.



bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
tarihsaat t;
Sipariş Seçimi (g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){devam;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();

if (t>=Zaman[0]) Times=false;}}


bu gibi değil mi?

 
GarKain :

bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
tarihsaat t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){devam;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();

if (t>=Zaman[0]) Times=false;}}


böyle değil mi?


Numara. Her yinelemede döngü içinde bir değişken bildirmek gerekli değildir.

 bool Torg=true;
for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--){
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) { Print ( "Ошибка № " , GetLastError (), " при выборе ордера № " ,i);}
     else {
      if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MAGIC) { continue ;} 
      if ( OrderOpenTime ()>=Time[ 0 ]){
       Torg=false;
     }
   }  
 }


// теперь используем результат работы цикла
// Если есть сигнал и торг разрешён, то открываем ордер
 
GarKain :

bool Times=true;
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
tarihsaat t;
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){devam;}
if (t<OrderOpenTime() || g==OrdersTotal()-1) t=OrderOpenTime();

if (t>=Zaman[0]) Times=false;}}


bu gibi değil mi?

hayır, hatayı fark ettim.

bool Times=true;
tarihsaat t=Saat[1];
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
Sipariş Seçimi (g,SELECT_BY_POS);
if (OrderMagicNumber()!=MagicNumber){devam;}
if (t<OrderOpenTime()) t=OrderOpenTime();

if (t>=Zaman[0]) Times=false;}}


bu gibi değil mi?

Neden: