Why does Bars in my code freeze my mt4?

 

Here is the portion of my code in question

/*
    int counted_bars = IndicatorCounted();
    i=Bars;
      if(counted_bars>i) i=Bars-counted_bars-1;
     */ 
     
    i = 100;
     while(i > 0)
     {
       string match = List[0];
      
       m = 0;
       for(j = size - 1; j >= 0; j--)
       {
         if( (Close[i+j] - Open[i+j]) > 0)match = StringSetChar(match, m,'u');
         else match = StringSetChar(match, m,'d');
         //Print("Time of Hour "+TimeHour(Time[i+j]));for debugging

if I use the commented code to initialize i and compile, my mt4 freezes.

On the other hand if I initialize i to any other number as above it will work.

Pretty Please, How do I solve this problem?

 
i is always greater than 0 . . you while loop never ends.
 
try
// i = 100;
//     while(i > 0)
//     {
for(i=100; i>=0; i--){
 
WHRoeder:
try
List is an array of type string

I tried that. now it freezes on numbers that it worked on a day before. Here is the code

i = 100;
    Print("Year: "+TimeYear(Time[i])+" Month: "+TimeMonth(Time[i])+" Day: "+TimeDay(Time[i])+"Hour: "+TimeMonth(Time[i]));
     while(i > 0)
     {
       string match = List[0];
      
       m = 0;
       for(j = size - 1; j >= 0; j--)
       {
         if( (Close[i+j+1] - Open[i+j+1]) > 0)match = StringSetChar(match, m,'u');
         else match = StringSetChar(match, m,'d');
         //Print("Time of Hour "+TimeHour(Time[i+j]));for debugging
         m++;
       }
      // Print("pattern found is "+match+" at hour " +TimeHour(Time[i]) );//for debugging
      /*Data to check closing up/down
       for(j = 0; j<ArraySize(List); j++)
       {
          if( (List[j] == match)&&( (Close[i-1] - Open[i-1]) < 0) )
          {
              Frequency[j]++;
              ListData[j][0]++;
          }
          else if( (List[j] == match)&&((Close[i-1] - Open[i-1]) >= 0) )
          {
              Frequency[j]++;
              ListData[j][1]++;
          }
       }
       */
       for(j = 0; j < ArraySize(List); j++)
       {
         if(List[j] == match)
         {
           
            
            m = (i+1)*60+TimeMinute(iTime(Symbol(),PERIOD_M1,(i+1)*60));
           
            k=m+1;
            while(m>0)
            {
               if(iClose(Symbol(),PERIOD_M1,m) <= iOpen(Symbol(),PERIOD_M1,m) )
               {
                  if((iHigh(Symbol(),PERIOD_M1,m)>= (iClose(Symbol(),PERIOD_M1,k) + UsePoint*3))&&(iLow(Symbol(),PERIOD_M1,m)> (iClose(Symbol(),PERIOD_M1,k) - UsePoint*3)))
                  {
                     //Print("broke up at "+iHigh(Symbol(),PERIOD_M1,m));
                     Frequency[j]++;
                     ListData[j][1]++;
                     break;
                  }
                  else if((iLow(Symbol(),PERIOD_M1,m) <= (iClose(Symbol(),PERIOD_M1,k) - UsePoint*3))&&(iHigh(Symbol(),PERIOD_M1,m)< (iClose(Symbol(),PERIOD_M1,k) + UsePoint*3)))
                  {
                   //Print("broke dn at "+iLow(Symbol(),PERIOD_M1,m));
                   Frequency[j]++;
                   ListData[j][0]++;
                   break;
                  }
               }
               else if(iClose(Symbol(),PERIOD_M1,m) >= iOpen(Symbol(),PERIOD_M1,m))
               {
                   if((iLow(Symbol(),PERIOD_M1,m) <= (iClose(Symbol(),PERIOD_M1,k) - UsePoint*3))&&(iHigh(Symbol(),PERIOD_M1,m)< (iClose(Symbol(),PERIOD_M1,k) + UsePoint*3)))
                  {
                   //Print("broke dn at "+iLow(Symbol(),PERIOD_M1,m));
                   Frequency[j]++;
                   ListData[j][0]++;
                   break;
                  }
                  else if((iHigh(Symbol(),PERIOD_M1,m)>= (iClose(Symbol(),PERIOD_M1,k) + UsePoint*3))&&(iLow(Symbol(),PERIOD_M1,m)> (iClose(Symbol(),PERIOD_M1,k) - UsePoint*3)))
                  {
                     //Print("broke up at "+iHigh(Symbol(),PERIOD_M1,m));
                     Frequency[j]++;
                     ListData[j][1]++;
                     break;
                  }
               
               }
             m--;
            }
         }
       }
       
        
     i--;
     Print("i is: "+i);
     }