В одном индикаторе появилась ошибка деления на ноль - страница 2

 
Vladimir Karputov:

Нужен минимальный код воспроизводимый проблему. А не кусок кода.

Проблема нестабильна - может часами не существовать, а потом появится. Я показал кусок где происходит деление на ноль и кусок, который образует делитель. Пока не ясно, что ещё может быть причиной.

 
Aleksey Vyazmikin:

Проблема нестабильна - может часами не существовать, а потом появится. Я показал кусок где происходит деление на ноль и кусок, который образует делитель. Пока не ясно, что ещё может быть причиной.

У вас же выдаётся НОМЕР СТРОКИ и ПОЗИЦИЯ КУРСОРА деления на ноль. Но мы, к сожалению, не телепаты.

Вам трудно выделить строку и позицию курсора?
 
Aleksey Vyazmikin:

В какой строке ошибка? Выделите ее в коде.

 
Aleksey Vyazmikin:

Проблема нестабильна - может часами не существовать, а потом появится. Я показал кусок где происходит деление на ноль и кусок, который образует делитель. Пока не ясно, что ещё может быть причиной.

Может, дело в преобразовании типов (int) - где-то при делении образуется дробное число и оно интом превращается в ноль. Конечно, к целому приводится делимое, но к преобразованию типов уже были нарекания с новым релизом.

 
Vladimir Karputov:

У вас же выдаётся НОМЕР СТРОКИ и ПОЗИЦИЯ КУРСОРА деления на ноль. Но мы, к сожалению, не телепаты.

Вам трудно выделить строку и позицию курсора?
Alexey Kozitsyn:

В какой строке ошибка? Выделите ее в коде.

Так вот же написал

Вот limit становится нулем. TimeFrames==PERIOD_H1

double d1=(delta_price_high-center_line_point)/(limit/2);

В отладчике вот эти даты вылезли

2018.07.04 11:33:11.674 2018.07.01 00:00:00   start_time - 2018.06.28 15:00 stop_time - 2018.06.28 16:00
2018.07.04 11:33:11.688 2018.07.01 00:00:00   start_time - 2018.06.28 16:00 stop_time - 2018.06.28 17:00
2018.07.04 11:33:11.701 2018.07.01 00:00:00   start_time - 2018.06.28 17:00 stop_time - 2018.06.28 18:00
2018.07.04 11:33:11.714 2018.07.01 00:00:00   start_time - 2018.06.28 18:00 stop_time - 2018.06.28 18:44
2018.07.04 11:33:11.727 2018.07.01 00:00:00   start_time - 2018.06.28 19:05 stop_time - 2018.06.28 20:00
2018.07.04 11:33:11.740 2018.07.01 00:00:00   start_time - 2018.06.28 20:00 stop_time - 2018.06.28 21:00
2018.07.04 11:33:11.754 2018.07.01 00:00:00   start_time - 2018.06.28 21:00 stop_time - 2018.06.28 22:00
2018.07.04 11:33:11.767 2018.07.01 00:00:00   start_time - 2018.06.28 22:00 stop_time - 2018.06.28 23:00
2018.07.04 11:33:11.783 2018.07.01 00:00:00   start_time - 2018.06.28 23:00 stop_time - 2018.06.28 23:49
2018.07.04 11:33:11.796 2018.07.01 00:00:00   start_time - 2018.06.29 10:00 stop_time - 2018.06.29 11:00
2018.07.04 11:33:11.810 2018.07.01 00:00:00   start_time - 2018.06.29 11:00 stop_time - 2018.06.29 12:00
2018.07.04 11:33:11.823 2018.07.01 00:00:00   start_time - 2018.06.29 12:00 stop_time - 2018.06.29 13:00
2018.07.04 11:33:11.836 2018.07.01 00:00:00   start_time - 2018.06.29 13:00 stop_time - 2018.06.29 13:59
2018.07.04 11:33:11.850 2018.07.01 00:00:00   start_time - 2018.06.29 14:05 stop_time - 2018.06.29 15:00
2018.07.04 11:33:11.863 2018.07.01 00:00:00   start_time - 2018.06.29 15:00 stop_time - 2018.06.29 16:00
2018.07.04 11:33:11.876 2018.07.01 00:00:00   start_time - 2018.06.29 16:00 stop_time - 2018.06.29 17:00
2018.07.04 11:33:11.893 2018.07.01 00:00:00   start_time - 2018.06.29 17:00 stop_time - 2018.06.29 18:00
2018.07.04 11:33:11.906 2018.07.01 00:00:00   start_time - 2018.06.29 18:00 stop_time - 2018.06.29 19:00
2018.07.04 11:33:11.920 2018.07.01 00:00:00   start_time - 2018.06.29 19:00 stop_time - 2018.06.29 20:00
2018.07.04 11:33:11.933 2018.07.01 00:00:00   start_time - 2018.06.29 20:00 stop_time - 2018.06.29 21:00
2018.07.04 11:33:11.946 2018.07.01 00:00:00   start_time - 2018.06.29 21:00 stop_time - 2018.06.29 22:00
2018.07.04 11:33:11.959 2018.07.01 00:00:00   start_time - 2018.06.29 22:00 stop_time - 2018.06.29 23:00
2018.07.04 11:33:11.973 2018.07.01 00:00:00   start_time - 2018.06.29 23:00 stop_time - 2018.06.30 00:00
2018.07.04 11:33:12.351 2018.07.02 10:00:00   start_time - 2018.06.29 23:00 stop_time - 2018.06.29 23:49
2018.07.04 11:33:12.382 2018.07.02 10:00:00   start_time - 2018.07.02 10:00 stop_time - 2018.07.02 11:00

Условие для принта

         if (limit>0){limit=2;Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES));}
 
Получается, что с датами порядок...
 
Sergey Savinkin:

Может, дело в преобразовании типов (int) - где-то при делении образуется дробное число и оно интом превращается в ноль. Конечно, к целому приводится делимое, но к преобразованию типов уже были нарекания с новым релизом.

Возможно, надо подумать.

 
Aleksey Vyazmikin:

Очевидно, что нужно проверять limit на 0. Условие для принта некорректное, я считаю. Нужно принтовать в том случае, когда limit=0.

 
Alexey Kozitsyn:

Очевидно, что нужно проверять limit на 0. Условие для принта некорректное, я считаю. Нужно принтовать в том случае, когда limit=0.

Спасибо - с просони туплю.

 
В общем профилирование на исторических данных ошибок не выявляет.