[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1071

 
eddy:
c'est à ça que ça sert, c'est pourquoi c'est dans if()
Oui, mais vous entrez dans une boucle et, si la condition n'est pas remplie, vous ne sortez jamais de la boucle avec votre construction de code, elle devient infinie et n'est pas interrompue. On ne peut pas voir ce qu'est le paramètre sec !, il n'est pas déclaré.
 
eddy:
int sec=Seconds();

Comment se fait-il qu'il ne soit pas déclaré ?)

le cycle doit être interrompu lorsque le deuxième change

 
eddy:

Comment se fait-il qu'il ne soit pas déclaré ?)

le cycle doit être interrompu lorsque le deuxième change

Déclaré sec, mais sec ! (avec un point d'exclamation) ?
 
!=
c'est "pas égal"
 
eddy:
est "non égal".
sec sera toujours égal à Seconds(), car ce dernier est une constante et vous assignez la valeur de la constante à "sec".
 
cette boucle dans init(), sec déclaré au même endroit
 
Où sont stockés les messages d'"alerte" et jusqu'à quand ? Est-il possible de les lire non pas dans la fenêtre "Signal", mais en ouvrant l'endroit où ils se trouvent dans le terminal (il arrive que la fenêtre soit fermée lorsque l'on passe à une autre application et qu'il faille relancer l'Expert Advisor pour les voir, ce qui n'est pas pratique) ?
 

Pourquoi ce code fonctionne-t-il bien pour un dc, mais pour un autre OrderModify erreur 4051 (ticket invalide) ?

 void Modify ()
      int total = OrdersTotal();
      for(int i=total-1;i>=0;i--)
      {
       OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
       if   (OrderModify (OrderTicket(),OrderOpenPrice(),
            OrderOpenPrice()-NormalizeDouble(300*Point,Digits),
            OrderTakeProfit(),0,CLR_NONE)== false)
         {
          Modify();
         }
       }
 
         int sec=Seconds();
       while(true)
         if(sec!=Seconds()) break;   // new sec

Pourquoi le cycle n'est-il pas interrompu ?

 
eddy:

pourquoi la boucle n'est pas interrompue ?

essayer while (false)

la boucle fonctionnera tant que sec!=Seconds()

ou comme ceci

while(true)

if(sec==Seconds()) break; // nouveau sec

Raison: