Сравнение профита ордера с числом

 
При сравнении профита ордера с соответствующим числом
if (OrderTakeProfit() == TPBuy || OrderTakeProfit() == TPSell),
сравнение проходит
правильно при TPSell=0.0555 (т.е. OrderTakeProfit()=0.0555 при сравнении с 0.0555 возвращает True)
не правильно при TPSell=0.6012 (т.е. OrderTakeProfit()=0.6012 при сравнении с 0.6012 возвращает FALSE)

В чем причина?
 
Причина в десятичных числах )
Попробуй нормализовать TPBuy, TPSell и OrderTakeProfit() перед сравнением - по идее поможет.
И на всякий случай..... TPBuy и TPSell объявлены как double?)
 
Причина в десятичных числах )
Попробуй нормализовать TPBuy, TPSell и OrderTakeProfit() перед сравнением - по идее поможет.

спасибо

И на всякий случай..... TPBuy и TPSell объявлены как double?)

разумеется

К разработчикам.
Как ПРАВИЛЬНО сравнивать два double?
 
При сравнении профита ордера с соответствующим числом
if (OrderTakeProfit() == TPBuy || OrderTakeProfit() == TPSell),
сравнение проходит
правильно при TPSell=0.0555 (т.е. OrderTakeProfit()=0.0555 при сравнении с 0.0555 возвращает True)
не правильно при TPSell=0.6012 (т.е. OrderTakeProfit()=0.6012 при сравнении с 0.6012 возвращает FALSE)

В чем причина?


Dumaju, saidiot takoje:


int TPBuy = 100;
int TPSell = 100;

if ((OrderTakeProfit() - OrderOpenPrice()) == TPBuy * Point || (OrderOpenPrice() - OrderTakeProfit()) == TPSell * Point)
...
...



 
Спасибо.

Хотелось бы получить ответ квотовцев, которые знакомы с этой проблемой и имеют образцовое решение, которым и поделятся со мной (надеюсь сегодня)
 
Эту проблему уже многократно обсуждали. Например, "Косяки с арифметикой?"
Посмотрите нашу функцию CompareDoubles в библиотеке stdlib.mq4. Может быть, она подойдёт Вам в качестве решения.
 
Используйте нормализацию NormalizeDouble перед сравнением или сравнение на дельту:
if( MathAbs(var2-var1) < Point ) ...
Причина обращения: