Помогите разобраться - неправильно работает if

 

Строка вывода имеет слевующий вид:

Print("Found buy! --- open = ",open," --- otp = ",otp," --- open+TPr*p = ",open+TPr*p," --- otp==open+TPr*p = ",otp==open+TPr*p," ---------------------------");
значения переменных:

otp=OrderTakeProfit();
open=OrderOpenPrice();

В итоге получаю следующее:

2008.12.25 16:39:19 2008.05.01 11:40 эксперт USDCHF,H1: Found buy! --- open = 1.0425 --- otp = 1.0475 --- open+TPr*p = 1.0475 --- otp==open+TPr*p = 0 ---------------------------

Прошу заметить:

otp==open+TPr*p... то есть... 1.0475 == 1.0475... выводит результат... 0...

То есть 1.0475 == 1.0475 не правда (false) ?


Где зарыта собака?


МТ4, билд 220.

 
Shinigami >>:

Где зарыта собака?

В сравнении double.
 

see mt4\experts\libraries\stdlib.mq4

bool CompareDoubles(double number1,double number2);

 

Наберите в поиске "Нормализация" или "сравнение double", многое проясница

 

Спасибо, буду пробовать.

Кстати пока значение цены не перевалило за 1.0000 все работало нормально...


Благодарю за ответы.После нормализации обоих значений 1.0475 == 1.0475 выдал результат 1.

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