потому что нужно нормализовать данные. в мт4 - такая фишка с даблами. вроде бы и 1,11695 а там скрывается червь в 1,11695000000042
if(NormalizeDouble(OrderStopLoss(),Digits)!= NormalizeDouble(OrderOpenPrice(),Digits)) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Aqua); Alert("OrderStopLoss = " + OrderStopLoss() + " OrderOpenPrice() = " + OrderOpenPrice()); }
потому что нужно нормализовать данные. в мт4 - такая фишка с даблами. вроде бы и 1,11695 а там скрывается червь в 1,11695000000042
такая фишка во всех языках программирования.
так что, нельзя сравнивать double переменные вот так прямо используя просто == , !=
попробуй сделай вот так
if(MathAbs(OrderStopLoss() - OrderOpenPrice()) < 0.00000001)
такая фишка во всех языках программирования.
так что, нельзя сравнивать double переменные вот так прямо используя просто == , !=
попробуй сделай вот так
Что могут быть не желаемые результаты при сравнении ненормализованных (или нормализованных до сравнения) double переменных напрямую через ==, !=, < и тому подобное - эт точно, убеждалась на практике.
Но помимо способа сравнения разницы между двумя числами типа double с какой-то малой величиной (по этому способу у меня практического опыта практически нет и поэтому ничего говорить не буду, но согласно Справки, да, он один из рекомендованных), другой обозначенный в Справке способ: сравнение нормализованной в выражении if разницы double переменных с нулевым значением, хороший вариант, имхо, как далеко не раз и не один год убеждалась практически.
Имею в виду сравнение по принципу, подобному как в библиотеке stdlib.mq4 в MetaEditor:
//+------------------------------------------------------------------+ //| right comparison of 2 doubles | //+------------------------------------------------------------------+ bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); }
Само собой разумеется, подразумеваю при этом не обязательно обращение к этой или подобной функции, а именно принцип построения в выражении if, когда именно там нормализованная разница чисел типа double, сравнивается (==, !=, < и тому подобное) с нулевым значением. При этом разница между числами типа double может быть вычислена ещё до указания в выражении, но в выражении if при сравнении полученной ранее разницы с нулевым значением, всё равно нужна её нормализация. Как-то так, если кратко.
Само собой разумеется, подразумеваю при этом не обязательно обращение к этой или подобной функции, а именно принцип построения в выражении if, когда именно там нормализованная разница чисел типа double сравнивается с нулевым значением.
Именно там?
Солнце мое, иди спатки...
Именно там?
Солнце мое, иди спатки...
Я ещё заявки в Сервисдеск не дописала. Одну новую сегодня отправила. Осталось ещё две.
А так, да, нормализация не только в if не лишней может быть, не спорю с вами. Как и не оспариваю, что нормализация в выражении if - это только в выражении if нормализация. Как-то так.
Там в посте в привязке к сравнению кратко просто написала.
Красивая женщина - выспавшееся женщина.
И это верно.
Ты очень красива...
Спасибо.
Алексей, я сейчас отойду от темы. Заявки надо дописать. Потом подремлю какое-то время, а далее решать свои насущные вопросы.
Всего доброго вам. И спокойного доброго сна, если ещё не ложились.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
есть такой if
после тестирование в журнале куча ошибок
не могу понять, почему он срабатывает, когда OrderStopLoss() и OrderOpenPrice() равны