Comportement étrange de l'opérateur WHILE - page 4

 
lord_hiro:


C'est tout !

Honte à moi... :-)

De plus, ce n'est pas la première fois que j'utilise WHILE mais j'ai commencé à penser à l'envers et je ne suis jamais sorti de MA PROPRE boucle :-/

Et donc la suggestion de deVries de remplacer || par && s'avère juste.

Beaucoup d'autres choses à prendre en compte sont ressorties de ce sujet, comme par exemple le fonctionnement de IF( == ).

Merci à tous pour votre patience et le temps que vous avez passé à me faire comprendre.

Nous avons tous fait des choses similaires lol...

Oui, vous pouvez faire comme deVries a dit ou vous pouvez simplement ajouter un break pour sortir de la boucle while après avoir dessiné l'objet.

Cela dit, si vous utilisez break, vous pouvez faire un code un peu plus efficace car il n'y aurait pas besoin de la première condition while.

De plus, comme l'a dit GumRai, appeler EMPTY_VALUE est une meilleure valeur de comparaison qu'appeler iHigh().

extern int SwingBarCount=100;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int SwingHighShift=0;
   string StringHighStatus="False";
   int SwingHigh=0;
   while(SwingHighShift<=SwingBarCount)
     {
      if(iFractals(NULL,0,MODE_UPPER,SwingHighShift)!=EMPTY_VALUE && iFractals(NULL,0,MODE_UPPER,SwingHighShift)>Close[0])
        {
         StringHighStatus="True";
         SwingHigh=SwingHighShift;
         ObjectDelete("SwingHigh");
         ObjectCreate("SwingHigh",OBJ_VLINE,0,Time[SwingHigh],0);
         ObjectSet("SwingHigh",OBJPROP_COLOR,Red);
         break;
        }
      else SwingHighShift++;
     }
   return(0);
  }