Нахождение нужного периода баров.(mql4)

 

Взял несколько функций и благодаря ним написал ещё одну:

string BullOrBear (int n_bar){       //функция, которую взял

   if(Open[n_bar] < Close[n_bar])   return "Bull";  

   if(Open[n_bar] > Close[n_bar])   return "Bear";

   return "Додж";}

int SizeBars (int number_of_bar){  //функция, которую взял

   if(fabs(Close[number_of_bar] - Open[number_of_bar])<= MaxShortSizeBarsGlobal) return 1;

   else if(fabs(Close[number_of_bar] - Open[number_of_bar]) >= MinLongSizeBarsGlobal) return 0;

   else return -1;}

extern double MaxShortSizeBarsGlobal = 0.0004;
extern double MinLongSizeBarsGlobal = 0.0006;
extern int MaxBarShow = 100;
extern int BarsToCheck = 3;

int Search_Period ()   // функция, которую написал 

{ int k = 0, i, b;

    for(i=MaxBarShow; i==1; i--){

    if (BullOrBear(i) == "Bull"){

    if (SizeBars(i) == 0){

    for(b=i+1; b==i+BarsToCheck; i++){

    if(SizeBars(b)==1) k++;

    else k--;}

    if(k==BarsToCheck) Command1; } }  // строка с командой

    else if(BullOrBear(i) == "Bear"){

    if (SizeBars(i) == 0){

    for(b=i+1; b==i+BarsToCheck; i++){

    if(SizeBars(b)==1) k++;

    else k--;}

    if(k==BarsToCheck) Command2;}}}  // строка с командой

return 1;}

Функция должна находить определённый период идущих, в данном случае, так баров: 3 бара коротких(SizeBars = 1)  и 1 длинный(SizeBars = 0). И функция должна выполнять команду(Command 1 или 2, определённые команды не стал вбивать, т.к. это ещё одна функция) на следующий бар в том случае, если период из баров подходит под условия. Однако команды не выполняются, я много раз перепроверял себя, и не нахожу ошибок. Помогите пожалуйста!!!

Причина обращения: