Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 120

 
hoz :


Bu zaten görünüşe göre bende bir uyuşukluk belirtisi.

Ama yine, mesele bu değil. Test cihazında bir baykuş sürüyorum. Ekranda gördüğünüz gibi herhangi bir gecikme ya da piyasa emri yok.

Gereken değerleri görüntülemek için ayrı bir işlevi çoğalttığım hem ayrı bir işlev hem de standart bir yorum, her zaman piyasa emirleri ve gecikmeler olduğunu gösteriyor.

İşte ortaya çıkan fonksiyon:

Başlangıçta, sayaçların değerlerini de sıfırladığım yerden arıyorum:

Peki, t++ nasıl çalışır?
 
Forexman77 :

Danışmanınızı biraz yeniden yapın, koddaki yorumlar. Sinyal oluşumuna dikkat edin ve durun. Onları fazla düşünmeden giydim. Gerekirse beğeninize göre değiştirin.

Dosyalar:
 
artmedia70 :
Peki, t++ nasıl çalışır?


Tek seçenek bu mu?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
          t++;
      }
      else if (OrderType() < 2)
          t++;
      else 
      {
         Print("Позиций в рвнке нет!");
      }
      
      pr ("FindOrders(): " + "t = " + t);
      pr ("FindOrders(): " + "p = " + p);
   }
}

Pek benzemiyor. Optimize edilmemiş. t++ tekrarı mutlu değil...

 
hoz :


Tek seçenek bu mu?

Pek benzemiyor. Optimize edilmemiş. t++ tekrarı mutlu değil...

Neden herhangi bir senaryoda t'yi artıralım? Ve genel olarak, burada ne var:

 if (OrderType() > 1 && OrderType() < 6 )
      {
          p++;
          t++;
      }
       else t++;

Emir türü 1'den büyük ve 6'dan küçükse, p'yi artırın, t'yi artırın

Aksi takdirde (sipariş tipi==6 olsa bile) t'yi tekrar artırın

Garip, değil mi?

 
artmedia70 :

Neden herhangi bir senaryoda t'yi artıralım? Ve genel olarak, burada ne var:

Emir türü 1'den büyük ve 6'dan küçükse, p'yi artırın, t'yi artırın

Aksi takdirde (sipariş tipi==6 olsa bile) t'yi tekrar artırın

Garip, değil mi?




Yorumunuzu yazarken, zaten benimkini iletmiştim. Düzeltilmiş versiyonun üstünde.
 
hoz :

Yorumunuzu yazarken, zaten benimkini iletmiştim. Düzeltilmiş versiyonun üstünde.
Emir beklemedeyse t'yi neden artıralım ve sonraki sipariş bir piyasa emriyse t'yi tekrar artıralım?
 
Altı elemanlı bir dizi oluşturun. Referans olarak bir fonksiyona iletin. Sıra seçildiğinde ve tüm filtrelerle (sembol, büyü) eşleştiğinde, sipariş tipi tarafından adreslenen dizi hücresini artırın. İşlev çalıştırıldıktan sonra diziniz, türlerine göre sıralanmış siparişlerin sayısını içerecektir.
 
artmedia70 :
Emir beklemedeyse t'yi neden artıralım ve sonraki sipariş bir piyasa emriyse t'yi tekrar artıralım?


t , tüm siparişlerin sayısıdır.

p - mevduat sayısı

Eğer koşul:

 if (OrderType() > 1 && OrderType() < 6 )

doğrudur, o zaman hem t hem de p artar çünkü 2'den 5'e kadar olan herhangi bir emir, hem bekleyen bir emir hem de genel olarak bir emirdir. Bu yüzden her iki sayacı da artırmak gerekir. Ve koşul doğruysa:

 else if (OrderType() < 2 )

O zaman gecikme yok ama piyasa emri var. O halde şimdiki sayacı artıralım t yani. toplam sipariş sayısı sayacı.

Şey, eğer hiçbir şey yoksa, o zaman sipariş olmadığını yazdırırız ...

 
artmedia70 :
Altı elemanlı bir dizi oluşturun. Referans olarak bir fonksiyona iletin. Sıra seçildiğinde ve tüm filtrelerle (sembol, büyü) eşleştiğinde, sipariş tipi tarafından adreslenen dizi hücresini artırın. İşlev çalıştırıldıktan sonra diziniz, türlerine göre sıralanmış siparişlerin sayısını içerecektir.

Burada bir dizinin tercih edilebileceğini zaten anladım)) Yukarıda anlattığım versiyonda bir yanlışlık var mı?
 
hoz :

Burada bir dizinin tercih edilebileceğini zaten anladım)) Yukarıda anlattığım versiyonda bir yanlışlık var mı?

Belki bu yüzden

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders( int & t, int & p)
{
   t = 0 ;
   p = 0 ;
 
   for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
      {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() > 1 && OrderType() < 6)   p++;
       if (OrderType() < 6 )  t++;
       }
  pr ( "FindOrders(): " + "t = " + t);
  pr ( "FindOrders(): " + "p = " + p);
}