WHILE 연산자의 이상한 동작 - 페이지 4

 
lord_hiro :


그게 다야!

부끄럽다... :-)

또한 WHILE을 처음 사용하는 것은 아니지만 반대로 생각하기 시작했고 MY OWN 루프에서 나오지 않았습니다.-/

그래서 deVries의 교체 제안 || &&로 우회전.

이 주제에서 처리해야 할 다른 많은 것들이 나왔습니다. 즉, IF( == )가 작동합니다.

인내심과 시간을 내어 나를 이해해 주셔서 감사합니다.

우리는 모두 비슷한 일을 했어 lol ...

예, deVries가 말한 대로 하거나 객체를 그린 후 while 루프에서 벗어나기 위해 중단을 추가할 수 있습니다.

break를 사용하면 첫 번째 while 조건이 필요하지 않기 때문에 좀 더 효율적인 코드를 만들 수 있습니다.

또한 GumRai가 말했듯이 EMPTY_VALUE 를 호출하는 것이 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 );
  }