![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
float это кастрация чисел не дающая никаких преимуществ. Лучше разберитесь со всеми потерями в преобразованиях и используйте наивысшую из возможных точностей - double.
Спасибо. Попробую все таки разобраться где у меня была ошибка. А пока float работает тьфу тьфу. Не привык бросать начатое. Но эта ошибка вывела меня из колеи.
Лично я никогда не использую в вычислениях и при сравнении чисел приёмы сравниявая разность с каким то минимальным принятым значением, всегда работаю с максимально возможной точностью вплоть до 16-го знака, и только в самой последней операции делаю нормализацию. При правильном обращении с double проблем не возникает, чего и Вам советую делать, иначе будете сталкиваться с трудно уловимыми проблемами в искажении результатов связанных с потерей точности на каком то из шагов вычислений/преобразований.
Дело конечно хозяйское, но обратите внимание на то, что ВСЕ стандартные математические функции работают с числами double и выдают результат double. Применяя эти функции к числам float происходит всё равно внутреннее преобразование к double, так что в любом случае будете терять в точности, достоверности в полученных результататов.
Лично я никогда не использую в вычислениях и при сравнении чисел приёмы сравниявая разность с каким то минимальным принятым значением, всегда работаю с максимально возможной точностью вплоть до 16-го знака, и только в самой последней операции делаю нормализацию. При правильном обращении с double проблем не возникает, чего и Вам советую делать, иначе будете сталкиваться с трудно уловимыми проблемами в искажении результатов связанных с потерей точности на каком то из шагов вычислений/преобразований.
цена рейтинга в 2017 непричесанно верна
цена рейтинга в 2017 непричесанно верна
вот так должно быть
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
вот так должно быть
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
Вы поменяли свой код несколько раз.
Я точно также делал. эксперементировал, понимая, что такое double и int но при явных вычислениях получал не то что нужно .
первая строчка то что ВЫ предложили
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
так всё верно 105143.5000000000 округляется вниз 43 получается...
(46-41)/2=2,5 , округляем вниз = 2
так всё верно 105143.5000000000 округляется вниз 43 получается...
(46-41)/2=2,5 , округляем вниз = 2
эт да,
но при разных спредах (2,3,4,5,6,7) округление вниз - разное и иногда не совсем точное. проблема в этом.