WHILE operatörünün garip davranışı - sayfa 4

 
lord_hiro :


Bu kadar!

Yazık bana... :-)

Üstelik bu WHILE'ı ilk kullanışım değil ama tersten düşünmeye başladım ve KENDİ döngüsünden hiç çıkmadım :-/

Ve böylece deVries'in || && ile sağa döner.

Bu konudan halledilmesi gereken başka birçok şey çıktı, yani IF( == ) işe yarıyor.

Sabrınız ve anlamamı sağlamak için harcadığınız zaman için hepinize teşekkür ederim.

Hepimiz benzer şeyler yaptık lol ...

Evet, deVries'in dediği gibi yapabilir veya nesneyi çizdikten sonra while döngüsünden çıkmak için bir ara ekleyebilirsiniz.

Eğer break kullanırsanız, biraz daha verimli kod yazabileceğinizi söyledikten sonra, ilk while koşuluna gerek kalmayacaktır.

Ayrıca GumRai'nin dediği gibi, EMPTY_VALUE öğesini çağırmak, iHigh () öğesini çağırmaktan daha iyi bir karşılaştırma değeridir.

 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 );
  }