¿Qué diseño es el correcto?

 

Así

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

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

¿y esta función cerrará todos los pedidos?

Sólo tengo un pedido cerrado por alguna razón, no puedo averiguar el motivo.

 
Ambos son una pérdida de tiempo.
 
TheXpert:
Ambos son una pérdida de tiempo.


¿Por qué?
 
valenok2003:


¿Por qué?


Porque es mejor así:

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


PATHY ¿Por qué?
PATAMU que ninguna de sus opciones cerrará TODAS las órdenes si hay más de 1.
 

incluso una sola orden... puede no cerrar...

 

OrdersTotal() - Devuelve el número total de órdenes abiertas y pendientes

Para OrderSelect() - ¿La numeración empieza por uno o por cero?

 
valenok2003:

OrdersTotal() - Devuelve el número total de órdenes abiertas y pendientes

Para OrderSelect() - ¿la numeración empieza por uno o por cero?

Piensa en lo que ocurre con la numeración después de cerrar al menos un pedido.

La numeración comienza desde cero.

 
La primera es básicamente correcta, cerrará todas las órdenes, pero los precios de cierre deben ser normalizados. El segundo falla, no todas las órdenes se cierran (el ciclo no es correcto)
 

Sí, lo tengo, muchas vacaciones son malas para el cerebro. ))))

Gracias.

 
Techno:
La primera es básicamente correcta, cerrará todas las órdenes, pero hay que normalizar los precios de cierre. La segunda falla, no se cierran todos los pedidos (el bucle no es correcto)


No lo hará.

Si no me crees, haz un experimento con una demo.