Comportamento strano dell'operatore WHILE - pagina 4

 
lord_hiro:


Questo è tutto!

Vergogna... :-)

Inoltre non è la prima volta che uso WHILE ma ho iniziato a pensare al contrario e non sono mai uscito dal MIO ciclo :-/

E così il suggerimento di deVries di sostituire || con && risulta giusto.

Un sacco di altre cose di cui occuparsi sono venute fuori da questo topic, cioè come funziona l'IF( == ).

Grazie a tutti per la vostra pazienza e il tempo che avete speso per farmi capire.

Abbiamo fatto tutti cose simili lol...

Sì, potresti fare come ha detto deVries o potresti semplicemente aggiungere una pausa per uscire dal ciclo while dopo che ha disegnato l'oggetto.

Detto questo, se usi la pausa potresti fare un codice un po' più efficiente perché non ci sarebbe bisogno della prima condizione while.

Inoltre, come ha detto GumRai, chiamare EMPTY_VALUE è un valore di confronto migliore che chiamare 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);
  }
Motivazione: