Quel modèle est correct ?

 

Comme ceci

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

ou comme ça...

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

et cette fonction fermera-t-elle tous les ordres ?

Je n'ai qu'une seule commande fermée pour une raison quelconque, je n'arrive pas à en trouver la raison.

 
Les deux sont une perte de temps.
 
TheXpert:
Les deux sont une perte de temps.


Pourquoi ?
 
valenok2003:


Pourquoi ?


Parce que c'est mieux comme ça :

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


PATHY Pourquoi ?
PATAMU qu'aucune de vos options ne fermera TOUS les ordres s'il y en a plus d'un.
 

même une seule commande... peut ne pas fermer...

 

OrdersTotal() - Retourne le nombre total d'ordres ouverts et en attente.

Pour OrderSelect() - La numérotation commence-t-elle par un ou par zéro ?

 
valenok2003:

OrdersTotal() - Retourne le nombre total d'ordres ouverts et en attente.

Pour OrderSelect() - la numérotation commence-t-elle par un ou par zéro ?

Pensez à ce qui arrive à la numérotation après la clôture d'au moins une commande.

La numérotation commence à partir de zéro.

 
La première est fondamentalement correcte, elle clôturera tous les ordres, mais les prix de clôture doivent être normalisés. Le deuxième échoue, tous les ordres ne seront pas clôturés (le cycle n'est pas correct).
 

Ouais, je l'ai, beaucoup de vacances sont mauvaises pour le cerveau. ))))

Merci !

 
Techno:
La première est fondamentalement correcte, elle fermera tous les ordres, mais nous devons normaliser les prix de clôture. La seconde échoue, tous les ordres ne seront pas fermés (la boucle n'est pas correcte).


Il ne le fera pas.

Si vous ne me croyez pas, faites une expérience sur une démo.