ОШИБКА zero divide --возможно ли её УСТРАНЕНИЕ в готовом советнике?

 

Добрый день. Вопрос к программистам: кто нибудь сталкивался с данной ошибкой и возможно ли ее устранить?? Столкнулся с следующей проблемой-- советник (около 3000 строк) периодически выдает ошибку zero divide (2460,33). Советник загружает настройки с set файлов. 

Ранее данная ошибка проявлялась, вначале после установки выдавало несколько раз ошибку, но затем исчезала. Сейчас когда количество set файлов увеличилось-- ошибка проявляется гораздо чаще. 

 
Aliaksandr Maksimau:

Добрый день. Вопрос к программистам: кто нибудь сталкивался с данной ошибкой и возможно ли ее устранить?? Столкнулся с следующей проблемой-- советник (около 3000 строк) периодически выдает ошибку zero divide (2460,33). Советник загружает настройки с set файлов. 

Ранее данная ошибка проявлялась, вначале после установки выдавало несколько раз ошибку, но затем исчезала. Сейчас когда количество set файлов увеличилось-- ошибка проявляется гораздо чаще. 

Если нет кода , то невозможно. Если есть, то нужно ковырять чужой код. А это непросто... тем более с 3мя тысячами строк )
 
Если код есть , то обычно устранить можно, добавив проверки, чтобы исключить эту проблему. Правил коды и по 10 тыс строк.
 
Aliaksandr Maksimau:

Добрый день. Вопрос к программистам: кто нибудь сталкивался с данной ошибкой и возможно ли ее устранить?? Столкнулся с следующей проблемой-- советник (около 3000 строк) периодически выдает ошибку zero divide (2460,33). Советник загружает настройки с set файлов. 

Ранее данная ошибка проявлялась, вначале после установки выдавало несколько раз ошибку, но затем исчезала. Сейчас когда количество set файлов увеличилось-- ошибка проявляется гораздо чаще. 

У Вас где то во время работы програмки происходит деление на нуль вот описание в википедии но смысл и без описания понятен) в общем нужно править код либо проверку поставить. 

 
Yevhenii Levchenko:
Если нет кода , то невозможно. Если есть, то нужно ковырять чужой код. А это непросто... тем более с 3мя тысячами строк )

Спасибо. Код есть--советник мой--не взломан.

 
Alexandr Gavrilin:
Если код есть , то обычно устранить можно, добавив проверки, чтобы исключить эту проблему. Правил коды и по 10 тыс строк.

Спасибо. Код есть--советник мой--не взломан. Если не получится выйти на связь с программистом исполнителем--можно будет к Вам обращаться через фриланс?

 
Andrey Azatskiy:

У Вас где то во время работы програмки происходит деление на нуль вот описание в википедии но смысл и без описания понятен) в общем нужно править код либо проверку поставить. 

Спасибо. Код есть--советник мой--не взломан. Если не получится выйти на связь с программистом исполнителем--можно будет к Вам обращаться через фриланс?


 
Aliaksandr Maksimau:

Спасибо. Код есть--советник мой--не взломан.

Тогда возможно... Вбейте в Print все переменные участвующие в вычислениях в предыдущей (строке) к проблемной строке (2460,33)
 
В mql явно не хватает конструкции try ... catch 
 
Yevhenii Levchenko:
Тогда возможно... Вбейте в Print все переменные участвующие в вычислениях в предыдущей (строке) к проблемной строке (2460,33)

Не особо я разбираюсь в этом) К Вам можно будет (через сервис фриланс) обратиться по этому вопросу (если программист исполнитель не выйдет на связь?

 
Aliaksandr Maksimau:

Не особо я разбираюсь в этом) К Вам можно будет (через сервис фриланс) обратиться по этому вопросу (если программист исполнитель не выйдет на связь?

Интересно, а как ты все эти строки написал ?

Или тебе советник прямо в исходном коде отдали ?

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

Убирается безо всяких фрилансов,  к значению telo прибавляешь один пункт - и вуаля...  Деление уже не даст некорректного результата.

Кстати, следующая строка - точно так же даст ошибку. Так что там тоже надо к переменной telo добавить один пункт.

Только не единицу, а именно пункт - то есть надо понять, в чем там ты получаешь значения, если непосредственно в цене, то просто прибавить значение функции Point()

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

Причина обращения: