Comportamento estranho do operador WHILE - página 4

 
lord_hiro:


É isso aí!

Que vergonha para mim... :-)

Além disso, não é a primeira vez que uso QUANDO, mas comecei a pensar ao contrário e nunca saí do Meu Próprio loop :-/

E assim a sugestão dos deVries de substituir ||| por && vira à direita.

Muitas outras coisas para cuidar saíram deste tópico, ou seja, com o IF( === ) funcionando.

Obrigado a todos por sua paciência e pelo tempo que vocês gastaram para me fazer entender.

Todos nós já fizemos coisas semelhantes rs...

Sim, você poderia fazer como deVries disse ou você poderia apenas acrescentar uma pausa para sair do loop depois que ele desenha o objeto.

Dito isto, se você usasse a pausa, poderia fazer um código um pouco mais eficiente, pois não haveria necessidade da primeira condição de enquanto.

Também como GumRai disse, chamar EMPTY_VALUE é um valor de comparação melhor do que chamar 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);
  }