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

 
hoz :

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

Bunun gibi bir şey kastetmiştim. Yani ... yön nerede düşünülmeli ...

 int i_magic= 123 ;
int OrdersMassive[ 7 ];
//+----------------------------------------------------------------------------+
int start() {
   FindOrders(OrdersMassive);
   int i, num= 0 ;
   for (i= 0 ; i<= 7 ; i++) {
       Print ( "Количество " +GetNameOP(i)+ " = " +OrdersMassive[i]);
      num+=OrdersMassive[i];
      }
   Print ( "Всего ордеров = " +(num-OrdersMassive[ 6 ]));
   return ( 0 );
}
//+----------------------------------------------------------------------------+
void FindOrders( int &mass[]) {
   int i, t, k= OrdersTotal ()- 1 ;
   ArrayInitialize(mass,0);
   for (i=k; i>= 0 ; i--) {
       if (! OrderSelect (i,SELECT_BY_POS))   continue ;
       if (OrderMagicNumber()!=i_magic)     continue ;
       if (OrderSymbol()!= Symbol ())         continue ;
      t=OrderType();
      mass[t]=mass[t]+ 1 ;
      }
}   
//+----------------------------------------------------------------------------+
string GetNameOP( int op) {
   switch (op) {
       case OP_BUY      : return ( "Buy" );
       case OP_SELL     : return ( "Sell" );
       case OP_BUYLIMIT : return ( "Buy Limit" );
       case OP_SELLLIMIT: return ( "Sell Limit" );
       case OP_BUYSTOP  : return ( "Buy Stop" );
       case OP_SELLSTOP : return ( "Sell Stop" );
       case 6            : return ( "Неторговое изменение баланса" );
       default           : return ( "Не знаю, чё за тип такой..." );
   }
}
//+----------------------------------------------------------------------------+

Peki ya sana pek bakmadım ...

 
r772ra :

Belki bu yüzden

Benim versiyonumda işlev daha kısa olacak ... :)

 //+----------------------------------------------------------------------------+
void FindOrders( int &mass[]) {
   int i, t, k= OrdersTotal ()- 1 ;
   ArrayInitialize(mass,0);   
   for (i=k; i>= 0 ; i--) {
       if (! OrderSelect (i,SELECT_BY_POS))   continue ;
       if (OrderMagicNumber()!=i_magic)     continue ;
       if (OrderSymbol()!= Symbol ())         continue ;
      t=OrderType();
      mass[t]=mass[t]+ 1 ;
      }
}   
//+----------------------------------------------------------------------------+
 
r772ra :

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);
}

O da sürmüyor. Orada bir sorunum vardı. Şimdi böyle:

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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++;
       else 
      {
         pr( "Позиций в рвнке нет!" );
      }
      
      pr ( "FindOrders(): " + "t = " + t);
      pr ( "FindOrders(): " + "p = " + p);
   }
}

Piyasada emir olmadığında sayaçlar asla sıfır olmaz. Bok tamamlandı. Burada yanlış olan ne xs. Artyom'un yazdıklarına bakacağım.

 
hoz :

O da sürmüyor. Orada bir sorunum vardı. Şimdi böyle:

Piyasada emir olmadığında sayaçlar asla sıfır olmaz. Bok tamamlandı. Burada yanlış olan ne xs. Artyom'un yazdıklarına bakacağım.


Bunu döngüden çıkar

pr ( "FindOrders(): " + "t = " + t);
pr ( "FindOrders(): " + "p = " + p);
Anladığım kadarıyla, bu bilginin çıktısı .
 
r772ra :


Bunu döngüden çıkar

Anladığım kadarıyla bu bilgi çıktısı.


Aynen öyle. Bana ne oldu. Bazı aptalca hatalar. Ay ile ++ damladı. Şimdi µl'de pervazlar çok aptalca. Görünüşe göre beynim şimdiden kaynıyor :(
 
Genel olarak, her tikte sipariş aramak normal midir? Yoksa her çubukta performans sergilemek daha mı iyi? Henüz kafama girmedim, bir durumda neyin daha iyi, diğerinde neyin daha iyi olduğu.
 
hoz :
Genel olarak, her tikte sipariş aramak normal midir? Yoksa her çubukta performans sergilemek daha mı iyi? Henüz kafama girmedim, bir durumda neyin daha iyi, diğerinde neyin daha iyi olduğu.
Ve çubuğun açılmasını takip ederken çubuğun içinde bir pozisyon kapanırsa, danışman bir sonraki çubuk açılana kadar pozisyon sayısındaki değişikliği bilmeyecek.
[Silindi]  
hoz :


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

p - mevduat sayısı

Eğer koşul:

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:

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 ...


t = Sipariş Toplamı ();

neden say???? hesaplanmış???

 

Merhaba! Bu fonksiyondaki hataları arıyorum.

Teoride, açılmamış bekleyen emirler , verildikten iki gün sonra silinmelidir.

dk=1440;

 if ( OrdersTotal ()< 1 )
{ return ;
 }
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
     {
       if (OrderSymbol()== Symbol ())
       {
         if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
        {
           if ( TimeCurrent ()-OrderOpenTime()>min)            
            {
            OrderDelete(OrderTicket());
           return ;
          }
        }
      }
    }
return ;}
 
pako :



Teşekkürler paco.