Многократно уже говорили о том, что нельзя просто так сравнивать числа с двойной точностью (типа double).
В Вашем случае произошло вот что. Когда Вы выставили 0.7 лота, в записи об ордере сохранилочь не 0.7, а целое число 70 (количество лотов, умноженное на 100). Это сделано для убыстрения (причём очень значительного) расчётов. Когда Вы вызываете функцию OrderLots, хранящееся в поле количества лотов число сначала делится на 100, а потом уже отдаётся Вам.
Особенности операций с плавающей точкой в процессоре Intel таковы, что после деления 70 на 100 получается число 0.7000000000000001.
Такие дела.
В Вашем случае произошло вот что. Когда Вы выставили 0.7 лота, в записи об ордере сохранилочь не 0.7, а целое число 70 (количество лотов, умноженное на 100). Это сделано для убыстрения (причём очень значительного) расчётов. Когда Вы вызываете функцию OrderLots, хранящееся в поле количества лотов число сначала делится на 100, а потом уже отдаётся Вам.
Особенности операций с плавающей точкой в процессоре Intel таковы, что после деления 70 на 100 получается число 0.7000000000000001.
Такие дела.
Когда Вы вызываете функцию OrderLots, хранящееся в поле количества лотов число сначала делится на 100, а потом уже отдаётся Вам.
Похоже, что нам надо самостоятельно делать нормализацию до второго знака при выдаче OrderLots().
Похоже, что нам надо самостоятельно делать нормализацию до второго знака при выдаче OrderLots().
....и других параметров ордеров - было бы очень неплохо
Когда Вы вызываете функцию OrderLots, хранящееся в поле количества лотов число сначала делится на 100, а потом уже отдаётся Вам.
Похоже, что нам надо самостоятельно делать нормализацию до второго знака при выдаче OrderLots().
Наконец-то.
Желательно и во всех других случаях (Бид, Аск и пр).
И на сервере.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Открываем на любой валюте (я пробовал на EURUSD) позицию в 0,7 лота и пишем советник, состоящий из следующего кода.
Очевидно коде представлено, что если число, которое дает MT>0.7, то выдаст сообщение BAD LOT!!!, если =0,7 - GOOD LOT.
Присоединяем советник к графику, и что видим?
Не правильно - видим BAD LOT!!!
Такое замтно только на 0,7.