Особенности языка mql5, тонкости и приёмы работы - страница 146
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Он был закрыт с первого же поста. Когда минимальное число умножается на что-то меньшее единицы, то получается ноль.
как будет выглядеть правильный код?
как будет выглядеть правильный код?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2019.10.28 11:42
компиляция: expression not boolean
по моему не самый лучший вариант
У себя так не делаю.
ЗЫ Для эстетов можно создать DOUBLE-структуру с соответствующими операторами. Но это все к практике отношения мало имеет. В исходном практическом примере
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2019.10.28 07:24
Способ нарваться на деление на ноль даже с проверкой.Ошибка понятна по факту. Но во время написания подобного кода не всегда очевидно, что такой проверки не достаточно, чтобы избежать деления на ноль.
Нужно просто обнулить создаваемый элемент массива. Именно из-за отсутствия инициализации и возникают коллизии в данном случае. Поэтому у себя просто сделал обнуление. Заморочиваться с общим видом нет никакого желания.
компиляция: expression not boolean
по моему не самый лучший вариант
Что-то вас куда-то не туда.
Тут больше непонятно - почему деление на ноль даёт исключение fpu, для меня во всяком случае.
Что-то вас куда-то не туда.
fxsaber:
Да тут нет проблемы
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) 2.224851351121351e-308 --> true
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) -nan --> true
UPD:
проверка на inf
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 1. dev = inf ---> false
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 2. dev = inf ---> true
Да тут нет проблемы
прогуглил "C++ double zero divide", в Вашем коде не будут не нормализованные числа работать, нужно так:
скрипт для медитации )))
Интересная тема. Нарыл вот тут кое-что. Особенно примечательно в блоке про теорию.
abs(u - v)/abs(u) <= epsilon && abs(u - v)/abs(v) <= epsilon; // (4)
abs(u - v)/abs(u) <= epsilon || abs(u - v)/abs(v) <= epsilon; // (5)
This way all underflow and overflow conditions can be guarded safely. The above however, will not work when v or u is zero. In such cases the solution is to resort to a different algorithm, e.g. (1).
К чему? Вижу лишь идиотское предупреждение, if абсолютно валидный.
Boolean conversions
A prvalue of integral, floating-point, unscoped enumeration, pointer, and pointer-to-member types can be converted to a prvalue of type bool.
The value zero (for integral, floating-point, and unscoped enumeration) and the null pointer and the null pointer-to-member values become false. All other values become true.
Вообще, полное невежство писать такие IsEqual(), IsInf(), IsZerro(). В дискуссию втягиваться не буду.
К чему? Вижу лишь идиотское предупреждение, if абсолютно валидный.
Вообще, полное невежство писать такие IsEqual(), IsInf(), IsZerro(). В дискуссию втягиваться не буду.
IsInf() и IsNaN() рабочие,
IsEqual() и IsZerro() под вопросом, нагугленные из неких источников как "trick for double"