Apareció un error de división por cero en un indicador - página 2

 
Vladimir Karputov:

Necesita el código mínimo reproducible por el problema. No es un trozo de código.

El problema es inestable: puede no existir durante horas y luego aparecer. He mostrado la pieza donde se produce la división por cero y la pieza que forma el divisor. Todavía no está claro qué otra cosa podría estar causando esto.

 
Aleksey Vyazmikin:

El problema es inestable: puede no existir durante horas y luego aparecer. He mostrado la pieza donde se produce la división por cero y la pieza que forma el divisor. Todavía no está claro qué otra cosa podría estar causando esto.

Usted, por el contrario, tiene el NÚMERO DE LÍNEA y la POSICIÓN DEL CURSO de la división por cero. Pero desgraciadamente no somos telépatas.

¿Le resulta difícil resaltar la línea y la posición del cursor?
 
Aleksey Vyazmikin:

¿En qué línea está el error? Resalte en el código.

 
Aleksey Vyazmikin:

El problema es inestable: puede no existir durante horas y luego aparecer. He mostrado la pieza donde se produce la división por cero y la pieza que forma el divisor. Todavía no está claro qué otra cosa podría ser la causa.

Tal vez sea una cuestión de conversión de tipo (int) - en algún lugar se forma un número fraccionario durante la división y se convierte en int en cero. Por supuesto, el divisor se convierte a entero, pero la conversión de tipo ya se quejó con la nueva versión.

 
Vladimir Karputov:

Usted, en cambio, tiene el NÚMERO DE LÍNEA y la POSICIÓN DEL CURSOR de la división por cero. Pero, por desgracia, no somos telépatas.

¿Le resulta difícil seleccionar la línea y la posición del cursor?
Alexey Kozitsyn:

¿En qué línea está el error? Resalte en el código.

Esto es lo que escribí.

Aquí se convierte en cero.TimeFrames==PERIOD_H1

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

El depurador muestra estas fechas

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

Condición para la impresión

         if (limit>0){limit=2;Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES));}
 
Resulta que las fechas están en orden...
 
Sergey Savinkin:

Tal vez sea una cuestión de conversión de tipos (int) - en algún lugar durante la división se forma un número fraccionario y es convertido a cero por el int. Por supuesto, el divisor se convierte a entero, pero la conversión de tipo ya se quejó con la nueva versión.

Tal vez debamos reflexionar sobre ello.

 
Aleksey Vyazmikin:

Evidentemente, hay que comprobar el límite por 0. La condición de la impresión es incorrecta, creo. Debe imprimirse cuando el límite es 0.

 
Alexey Kozitsyn:

Evidentemente, hay que comprobar el límite de 0. La condición de la impresión es incorrecta, creo. Debería imprimirse cuando el límite es 0.

Gracias - Me quedo boquiabierto cuando estoy despierto.

 
En general, la elaboración de perfiles sobre datos históricos no revela errores.