Эксперт не вылетает при делении на 0.

 
При делении на 0 эксперт не вылетает, а кладет в double nan, хотя в старых версиях вылетал. Это баг или разработчики решили что "деление на 0 не страшно и пусть эксперт продолжает работу"?
 
DrSky:
При делении на 0 эксперт не вылетает, а кладет в double nan, хотя в старых версиях вылетал. Это баг или разработчики решили что "деление на 0 не страшно и пусть эксперт продолжает работу"?

Интересно. В тестере вылетает. В реале пока не ловил. 

 
DrSky:
При делении на 0 эксперт не вылетает, а кладет в double nan, хотя в старых версиях вылетал. Это баг или разработчики решили что "деление на 0 не страшно и пусть эксперт продолжает работу"?
Можете код показать, который производит деление на 0 не преводя к завершению работы эксперта?
Может быть, нет там деления на 0?
 
Sergey Gridnev #:
Можете код показать, который производит деление на 0 не преводя к завершению работы эксперта?
Может быть, нет там деления на 0?

Вылетает только в тестере. Можете проверить собрав 

void OnTick()
{
  int zero = 0; // Если компилятор увидит пямое деление на ноль - не даст собрать, по этому через переменную.
  
  double not_fail = 10 / zero;
}

Такая конструкция будет вылетать только в режиме дебагера. В режиме теста, когда собран не под дебаггер - вылетать не будет не смотря на флаг "проверять вещественные делители". 

 
Valeriy Yastremskiy #:

Интересно. В тестере вылетает. В реале пока не ловил. 

Прпробуйте не в режиме дебаггера (даже в режиме тестера, когда собрано не в режиме дебаг) код выше. 


При всем при этом, в версиях годичной давности вылетал.

 

Привет!

на тестере выйдет - критическая ошибка и остановится.

А на торговле напишет в комментариях - на нуль делить нельзя, но бот будет дальше работать.

 
Alexander Ivanov #:

Привет!

на тестере выйдет - критическая ошибка и остановится.

А на торговле напишет в комментариях - на нуль делить нельзя, но бот будет дальше работать.

Если бот собран в релиз и прогнан на тестере (без дебага) - то не остановится. Если есть сомнения - могу записать на видео. 

А то, что на торговле пишет в комментариях - это никуда не годится. Это исключительная ситуация (обработчиков которых до сих пор нет) при которой как минимум должен быть вылет, особенно, в финансовом софте. Очевидно, что теперь бот работает не так как было задумано и не предсказуемо.

При этом всем, есть опция в настройках проекта, которая по факту не работает. Так же, раньше бот вылетал, но в один момент это в тихую убрали. Что так же никуда не годится.
 
эм, разве не от "проперти стрикт" зависит реакция на критические ошибки - без "стрикта" будет на пример игнорить ошибку array out of range и просто положит ноль при обращении к несуществующей ячейке массива
 
Aleksey Semenov #:
эм, разве не от "проперти стрикт" зависит реакция на критические ошибки - без "стрикта" будет на пример игнорить ошибку array out of range и просто положит ноль при обращении к несуществующей ячейке массива

Может когда то и зависил, но теперь деление на ноль игнорирует в любом случае. Можете проверить.

 
Aleksey Semenov #:
эм, разве не от "проперти стрикт" зависит реакция на критические ошибки - без "стрикта" будет на пример игнорить ошибку array out of range и просто положит ноль при обращении к несуществующей ячейке массива
Это к компилятору свойство. В работе не учитывается.
 
Aleksey Semenov #:
эм, разве не от "проперти стрикт" зависит реакция на критические ошибки - без "стрикта" будет на пример игнорить ошибку array out of range и просто положит ноль при обращении к несуществующей ячейке массива

в MQL5 нет этгого свойства, вернее оно всегда включено, в 4-ке да, нужно не забывать включать 

по сабжу, история давняя, обещали, что по умолчанию будет отключена такое "увеличение производительности"

вот нашел, где обсуждали https://www.mql5.com/ru/forum/371494/page40#comment_24339250