
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не с точностью double в mql все нормально. Это уже мой косяк. Не учел особенности используемой функции. Функция график которой выглядит как гипербола от -1.0 до 1.0. Я хочу на выходе получить -1.0 и запускаю процесс подбора коэффициентов, но не учел особенности этой функции. На самом деле функция ни когда не достигает -1.0 или 1.0, а только стремится к ним. В результате получается что то типа -0.999999999999999999(9) , число превышающие максимально допустимую точность числа типа double.
Выход за пределы точности не даст NaN.
Можно получить inf при переполнении экспоненты дабла, и дальнейшие действия с бесконечностью уже могут дать nan (0*inf, inf/inf, ...). Но переполнить экспоненту - это надо очень постараться -307 <= exp <= 308.
Выход за пределы точности не даст NaN.
Можно получить inf при переполнении экспоненты дабла, и дальнейшие действия с бесконечностью уже могут дать nan (0*inf, inf/inf, ...). Но переполнить экспоненту - это надо очень постараться -307 <= exp <= 308.
Долго ли умеючи. :)
функция Y = F(X) = (Exp(X)-Exp(-X))/(Exp(S)+Exp(-X)) меняя X можно получить Y. Я в коде подбираю такой X что бы в результате Y был равным -1. Но функция ни когда не достигает абсолютно точного значения -1. В результате X стремится к минус бесконечности, а Y приближается к -1. А условие завершения цикла Y=-1. Если использовать округление до все нормально работает.
Решение проблемы очень простое:
Находим переменную в алгоритме где раньше всего замечено значение -nan(ind)
с помощью функции Print() и просмотра логов.
Потом после переменной делаем в коде так: NormalizeDouble(переменная,10);
И проблема испаряется.