Причина в десятичных числах )
Попробуй нормализовать TPBuy, TPSell и OrderTakeProfit() перед сравнением - по идее поможет.
И на всякий случай..... TPBuy и TPSell объявлены как double?)
Попробуй нормализовать TPBuy, TPSell и OrderTakeProfit() перед сравнением - по идее поможет.
И на всякий случай..... TPBuy и TPSell объявлены как double?)
Причина в десятичных числах )
Попробуй нормализовать TPBuy, TPSell и OrderTakeProfit() перед сравнением - по идее поможет.
Попробуй нормализовать 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)
В чем причина?
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. Может быть, она подойдёт Вам в качестве решения.
Посмотрите нашу функцию CompareDoubles в библиотеке stdlib.mq4. Может быть, она подойдёт Вам в качестве решения.
Используйте нормализацию NormalizeDouble перед сравнением или сравнение на дельту:
if( MathAbs(var2-var1) < Point ) ...
if( MathAbs(var2-var1) < Point ) ...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
if (OrderTakeProfit() == TPBuy || OrderTakeProfit() == TPSell),
сравнение проходит
правильно при TPSell=0.0555 (т.е. OrderTakeProfit()=0.0555 при сравнении с 0.0555 возвращает True)
не правильно при TPSell=0.6012 (т.е. OrderTakeProfit()=0.6012 при сравнении с 0.6012 возвращает FALSE)
В чем причина?