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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aliaksandr Maksimau
1239
Aliaksandr Maksimau  

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

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

Yevhenii Levchenko
3415
Yevhenii Levchenko  
Aliaksandr Maksimau:

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

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

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

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

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

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

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

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

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

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

Aliaksandr Maksimau
1239
Aliaksandr Maksimau  
Andrey Azatskiy:

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

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


Yevhenii Levchenko
3415
Yevhenii Levchenko  
Aliaksandr Maksimau:

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

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

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

Georgiy Merts
9181
Georgiy Merts  
Aliaksandr Maksimau:

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

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

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

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

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

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

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

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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий