Ошибки, баги, вопросы - страница 3755

 

По причине ошибки деления на ноль советник был сброшен с окна, что самое смешное также был сброшен и другой советник с соседнего окна, а остальные с таким же кодом остались, в логах такая запись только от одного/первого советника

zero divide, 320,44

В одной строке есть деление но не на ноль, ссылка на другую строку явно ошибочна, этот же код без изменений прекрасно работает уже несколько лет и пару дней назад успешно отработал

Какова причина?

 
VVT #:

По причине ошибки деления на ноль советник был сброшен с окна, что самое смешное также был сброшен и другой советник с соседнего окна, в логах такая запись только от одного/первого советника

zero divide, 320,44

Делений на ноль в коде нет, этот же код без изменений прекрасно работает уже несколько лет и пару дней назад успешно отработал

Какова причина?

Ну вы хоть одну эту строку кода показали бы…
 
VVT #:

По причине ошибки деления на ноль советник был сброшен с окна, что самое смешное также был сброшен и другой советник с соседнего окна, в логах такая запись только от одного/первого советника

zero divide, 320,44

Делений на ноль в коде нет, этот же код без изменений прекрасно работает уже несколько лет и пару дней назад успешно отработал

Какова причина?

Forum on trading, automated trading systems and testing trading strategies

Problem with Update Build 5800

Vladislav Boyko, 2026.04.19 08:43

A recent build fixed an issue where division by 0 might not result in a "zero divide" error at runtime. The problem is in your code; a runtime crash is the expected result of division by 0.

You can disable the floating point dividers check in the project properties, then your advisor will stop crashing at runtime:

But this will only mask the real problem - your code is unreliable.

(перейдите к посту по ссылке и используйте встроенный переводчик - он нормально справляется)
 
Alexey Viktorov #:
Ну вы хоть одну эту строку кода показали бы…
NormalizeDouble(Free*MaxRiskCalc/(100*One_Lot) должен выдавать многозначное значение и без 0 в начале
 
Vladislav Boyko #:
(перейдите к посту по ссылке и используйте встроенный переводчик - он нормально справляется)
Спасибо но этого никогда не происходило и при тестах тоже
 
VVT #:
этого никогда не происходило и при тестах тоже

Проверка деления на 0 была улучшена 3 месяца назад

Вы можете прочитать всю цепочку комментариев по этому поводу, кликая на #:

 
VVT #:
NormalizeDouble(Free*MaxRiskCalc/(100*One_Lot) должен выдавать многозначное значение и без 0 в начале

Это меньше одной строки даже.

В любом случае, вы можете либо добавить проверку того делителя в коде, либо отключить проверку вещественных делителей в рантайме (тогда советник не будет крашиться при возникновении деления на 0):

https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects#properties

  • Проверять вещественные делители — приложения с отключенной проверкой работают несколько быстрее, поскольку ошибки деления на ноль не проверяются при исполнении кода.
Вторая опция проще. Но если деление на 0 приведет к багу (с отключенной проверкой в рантайме), то у вас потом практически не будет шансов выяснить выяснить причину бага.
 
VVT #:
должен выдавать
С чего это?
 
VVT #:
NormalizeDouble(Free*MaxRiskCalc/(100*One_Lot) должен выдавать многозначное значение и без 0 в начале
Вероятно One_Lot принимает нулевое значение при каких-то обстоятельствах.
 
VVT #:
NormalizeDouble(Free*MaxRiskCalc/(100*One_Lot)

Возможно это не та строка. Или у вас 12 пробелов в начале строки?

А вероятную причину вам уже сказали. Проверяйте…