Ungewöhnliches Verhalten des WHILE-Operators - Seite 4

 
lord_hiro:


Das war's!

Schande über mich... :-)

Außerdem ist es nicht das erste Mal, dass ich WHILE verwende, aber ich habe angefangen, in umgekehrter Richtung zu denken und bin nie aus MEINER EIGENEN Schleife herausgekommen :-/

Und so wird der Vorschlag von deVries, || durch && zu ersetzen, richtig.

Eine Menge anderer Dinge, um die man sich kümmern muss, haben sich aus diesem Thema ergeben, z.B. wie das IF( == ) funktioniert.

Ich danke euch allen für eure Geduld und die Zeit, die ihr aufgewendet habt, um mich zu verstehen.

Wir haben alle ähnliche Dinge getan, lol...

Ja, du könntest tun, was deVries gesagt hat, oder du könntest einfach eine Pause einfügen, um aus der while-Schleife herauszukommen, nachdem das Objekt gezeichnet wurde.

Allerdings könnte man mit einem Break den Code etwas effizienter gestalten, da die erste while-Bedingung nicht mehr nötig wäre.

Und wie GumRai schon sagte, ist der Aufruf von EMPTY_VALUE ein besserer Vergleichswert als der Aufruf von 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);
  }