Quale disegno è corretto?

 

Come questo

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

o come questo...

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

e questa funzione chiuderà tutti gli ordini?

Ho solo un ordine chiuso per qualche motivo, non riesco a capire il motivo.

 
Entrambi sono una perdita di tempo.
 
TheXpert:
Entrambi sono una perdita di tempo.


Perché?
 
valenok2003:


Perché?


Perché è meglio così:

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


PATHY Perché?
PATAMU che nessuna delle vostre opzioni chiuderà TUTTI gli ordini se ce ne sono più di 1.
 

anche un solo ordine... non può chiudere...

 

OrdersTotal() - restituisce il numero totale di ordini aperti e in sospeso

Per OrderSelect() - La numerazione inizia con uno o con zero?

 
valenok2003:

OrdersTotal() - restituisce il numero totale di ordini aperti e in sospeso

Per OrderSelect() - la numerazione inizia con uno o con zero?

Pensate a cosa succede alla numerazione dopo che almeno un ordine è stato chiuso.

La numerazione parte da zero.

 
La prima è fondamentalmente corretta, chiuderà tutti gli ordini, ma dobbiamo normalizzare i prezzi di chiusura. Il secondo fallisce, non tutti gli ordini si chiudono (il ciclo non è corretto)
 

Sì, ho capito, molte vacanze fanno male al cervello. ))))

Grazie!

 
Techno:
La prima è fondamentalmente corretta, chiuderà tutti gli ordini, ma dobbiamo normalizzare i prezzi di chiusura. Il secondo fallisce, non tutti gli ordini saranno chiusi (il ciclo non è corretto)


Non lo farà.

Se non mi credete, fate un esperimento su una demo.