Hangi tasarım doğru?

 

Çok

 void Close_All()
{
  int Total = OrdersTotal ();
  for ( int i= 0 ; i < Total; i++)   //требует уточнения эта строка                                                     
  {                                                                                          
    if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch (OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid, 5 ); break ;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask, 5 ); break ;
        default     : break ;
      }        
    }
  }  
} 

ya da böyle...

 void Close_All()
{
  int Total = OrdersTotal ();
  for ( int i= 1 ; i <= Total; i++)                                                        
  {                                                                                          
    if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch (OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid, 5 ); break ;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask, 5 ); break ;
        default     : break ;
      }        
    }
  }  
}

ve bu işlev tüm siparişleri kapatacak mı?

Nedense benim için sadece bir sipariş kapanıyor, nedenini anlayamıyorum.

 
Her iki meme.
 
TheXpert :
Her iki meme.


Pachim?
 
valenok2003 :


Pachim?


Ve patamushta böyle daha iyi:

 int Total = OrdersTotal ();
  for ( int i=Total; i>= 1 ; i--)
   if ( OrderSelect (i- 1 ,SELECT_BY_POS,MODE_TRADES)==true)
...
 
valenok2003 :


Pachim?
1'den fazla olması durumunda seçeneklerinizden hiçbirinin TÜM siparişleri kapatmayacağı PATAMU.
 

tek bir sipariş bile... kapanmayabilir...

 

OrdersTotal() - Açık ve bekleyen siparişlerin toplam sayısını verir

OrderSelect() için - numaralandırma birden mi yoksa sıfırdan mı başlıyor?

 
valenok2003 :

OrdersTotal() - Açık ve bekleyen siparişlerin toplam sayısını verir

OrderSelect() için - numaralandırma birden mi yoksa sıfırdan mı başlıyor?

En az bir siparişi kapattıktan sonra numaralandırmaya ne olduğunu düşünün.

Numaralandırma sıfırdan başlar.

 
İlki prensipte doğrudur, tüm emirleri kapatır, sadece kapanış fiyatlarının normalleştirilmesi gerekir. İkinci flop, tüm siparişler kapatılmayacaktır (döngü doğru bir şekilde derlenmemiştir)
 

Evet, taşındım, tatillerin çoğu beyni kötü etkiliyor. ))))

Teşekkür ederim!

 
Techno :
İlki prensipte doğrudur, tüm emirleri kapatır, sadece kapanış fiyatlarının normalleştirilmesi gerekir. İkinci flop, tüm siparişler kapatılmayacaktır (döngü doğru bir şekilde derlenmemiştir)


kapanmayacak.

Bana inanmıyorsanız, bir demo deneyin.