Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У человека проблема не в округлении.
Сравнение 23506.0 и 23568.0 всегда даст правильный результат. Но он не хочет более полный код выкладывать, чтобы проверить можно было.
double ray = ObjectGetValueByTime(0, ray_name, mrate_M5[i].time, 0);
и вот что выдает
2018.08.18 20:40:12.791 2018.07.11 21:45:00 !!!!! mrate_M5[i].high > ray !!!!!! ray_= 23568.0, цена high=23506.0, время =2018.07.10 16:25:00
// однако цена меньше ray , через раз выдает то правильно , то неправильно
Это ошибка терминала?
Сообщите пожалуйста, Вы используете новые MQL5 функции iHigh, iLow и т.д. ?
Если да, сообщите пожалуйста билд терминала.
В реализации данных функций была исправлена ошибка, которая могла привести к подобной ошибке сравнения.
Сообщите пожалуйста, Вы используете новые MQL5 функции iHigh, iLow и т.д. ?
Если да, сообщите пожалуйста билд терминала.
В реализации данных функций была исправлена ошибка, которая могла привести к подобной ошибке сравнения.
2) функции iHigh, iLow не использую
3) NormalizeDouble не помогает ни при каких вариантах
1) терминал 5 версия, 1881
2) функции iHigh, iLow не использую
3) NormalizeDouble не помогает ни при каких вариантах
Без бОльшего кода Вам вряд ли помогут. Пусть не весь, но хотя бы часть, чтобы было можно воспроизвести ошибку.
Эти две строки возвращают разные значения, 23568 и 23506. Они не равны, даже если их сравнивать не как double, а как целые. Почему они должны быть равными, а оказались различными - этот вопрос и поставлен. Дело совсем не в том, как сравнивать double.
Как автор написал остальное, неизвестно. Также, как то, почему значения _ray и ray должны, по его мнению, совпадать в момент вызова ObjectGetValueByTime. Эти строки идут вовсе не подряд, а что происходит между ними, он не сообщает.
Как автор написал остальное, неизвестно. Также, как то, почему значения _ray и ray должны, по его мнению, совпадать в момент вызова ObjectGetValueByTime. Эти строки идут вовсе не подряд, а что происходит между ними, он не сообщает.
Штирлиц никогда не был так близок к провалу. )))
Спасибо кто посоветовал преобразовать число в int - помогло только это. NormalizeDouble не помогает ни при каких вариантах
Спасибо кто посоветовал преобразовать число в int - помогло только это. NormalizeDouble не помогает ни при каких вариантах
Числа Double - числа с плавающий запятой, пример как это работает:
Я сравниваю double так:
Как-то один опытный программист (с опытом 20+ лет) сказал мне, что в безотказных крупных системах (конкретно он пишет софт для нефтезаводов) уходят от типа double в пользу int, потому что с int такой ситуации невозможно
Спасибо!