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

 
Vitalii Ananev:
В mql явно не хватает конструкции try ... catch 

Решается через возврат функцией true/false, а значение возвращается через параметр по ссылке. Этого try ... catch  могло бы вообще в природе не существовать, потому что ничего полезного он не несет собой, кроме невероятного увеличения количества кода при обработке ошибок. На каждую ошибку писать класс с информацией об ошибке - вот жешь чудо мысли человеческой.

 
Aliaksandr Maksimau:

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

Там работы ровно на 5 секунд.

 
Georgiy Merts:

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

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

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

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

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

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

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

Спасибо за информацию-очень полезно--попробую. Я просто не программист--заказчик. Не я писал код.  

 
Dmitry Fedoseev:

Там работы ровно на 5 секунд.

Он может не понимает в коде.

 
Dmitry Fedoseev:

Там работы ровно на 5 секунд.

Спасибо. Попробую исправить.

 
Georgiy Merts:

...

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

...

А встречается она на каждом открытии бара.
 
Uladzimir Izerski:

Он может не понимает в коде.

Так да верно)--Я заказчик. Все бы было проще гораздо исправить--если бы разбирался))

 
Dmitry Fedoseev:
А встречается она на каждом открытии бара.

Нет не на каждом 

 
Aliaksandr Maksimau:

Спасибо. Попробую исправить.

if(telo==0){

 cl=0;
 ho=0;

}

else{

  // сюда вставить те две строки, а все это вместо тех двух строк

}

 
Aliaksandr Maksimau:

Нет не на каждом 

В момент открытия бара всегда. Просто в советнике еще какие-то предварительные проверки, поэтому он не всегда нарывается на ошибку или проверяется первый бар, тогда не всегда.

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