Странное поведение функции и невыполнение условия.

 

Здравствуйте! Подскажите, пожалуйста, в чем тут косяк.

Сокращаю код до самой проблемы с сохранением смысла действия. В случае ниже, переменные MagPartrs и Checking не равны (они равны 3333 и 777, я перепроверяла это через тот же Print). Но условие ниже выполняется, т.е. советник считает эти переменные равными. В чем тут дело?

   int MagPartrs = MagicNumber;
   int Checking = OrderMagicNumber(); 

        if(CheckingOrigMagic == CheckOrigMagPartrs)
           { Print ("variables are equal"); }
 

Ничего не понятно из этого куска текста. Перед проверкой условия напишите

Print("CheckingOrigMagic = "+(string)CheckingOrigMagic);

Print("CheckOrigMagPartrs"+(string)CheckOrigMagPartrs);

Вероятнее всего, они будут равны, тогда ошибка в другом месте.

 
Maria Baburina:

Здравствуйте! Подскажите, пожалуйста, в чем тут косяк.

Сокращаю код до самой проблемы с сохранением смысла действия. В случае ниже, переменные MagPartrs и Checking не равны (они равны 3333 и 777, я перепроверяла это через тот же Print). Но условие ниже выполняется, т.е. советник считает эти переменные равными. В чем тут дело?

Этого кода совсем недостаточно. Во-первых, перед чтением магика ордера, этот ордер должен быть выбран функцией OrderSelect(). А во-вторых, в условии переменные неизвестно откуда взятые.
 
Maria Baburina:

Сокращаю код до самой проблемы 

сделайте полную распринтовку, слипы не забывайте ставить - если много принтов, то терминал иногда их пропускает

 int MagPartrs = MagicNumber;
 Print(MagPartrs); Sleep(200);
 int Checking = OrderMagicNumber(); 
 Print(Checking); Sleep(200);
 if(CheckingOrigMagic == CheckOrigMagPartrs) { Print ("variables are equal"); Sleep(200);}
 Print(CheckingOrigMagic," == ",CheckOrigMagPartrs);
 
Maria Baburina:

Здравствуйте! Подскажите, пожалуйста, в чем тут косяк.

Сокращаю код до самой проблемы с сохранением смысла действия. В случае ниже, переменные MagPartrs и Checking не равны (они равны 3333 и 777, я перепроверяла это через тот же Print). Но условие ниже выполняется, т.е. советник считает эти переменные равными. В чем тут дело?

Оредер не выбран.

Здесь у Вас всё равно нулю:

   int MagPartrs = MagicNumber;
   int Checking = OrderMagicNumber(); 

Запишите так и принта уже не будет:

int MagPartrs = 101;
Причина обращения: