Un errore di divisione per zero è apparso in un indicatore - pagina 2

 
Vladimir Karputov:

Avete bisogno del codice minimo riproducibile dal problema. Non un pezzo di codice.

Il problema è instabile - può non esistere per ore e poi apparire. Ho mostrato il pezzo dove avviene la divisione per zero e il pezzo che forma il divisore. Non è ancora chiaro cos'altro possa essere la causa.

 
Aleksey Vyazmikin:

Il problema è instabile - può non esistere per ore e poi apparire. Ho mostrato il pezzo dove avviene la divisione per zero e il pezzo che forma il divisore. Non è ancora chiaro cos'altro possa essere la causa.

Tu, invece, hai il NUMERO DI LINEA e la POSIZIONE DI CORSA della divisione per zero. Ma purtroppo non siamo telepati.

È difficile per voi evidenziare la linea e la posizione del cursore?
 
Aleksey Vyazmikin:

In quale linea si trova l'errore? Evidenziatelo nel codice.

 
Aleksey Vyazmikin:

Il problema è instabile - può non esistere per ore e poi apparire. Ho mostrato il pezzo dove avviene la divisione per zero e il pezzo che forma il divisore. Non è ancora chiaro cos'altro potrebbe essere la causa.

Forse è una questione di conversione del tipo (int) - da qualche parte si forma un numero frazionario durante la divisione e l'int diventa zero. Naturalmente, il divisore viene convertito in intero, ma la conversione di tipo era già stata lamentata con la nuova versione.

 
Vladimir Karputov:

Tu, invece, hai il NUMERO DI LINEA e la POSIZIONE DEL CURSORE della divisione per zero. Ma, purtroppo, non siamo telepati.

È difficile per voi selezionare la linea e la posizione del cursore?
Alexey Kozitsyn:

In quale linea si trova l'errore? Evidenziatelo nel codice.

Ecco cosa ho scritto.

Qui diventa zero.TimeFrames==PERIOD_H1

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

Il debugger mostra queste date

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

Condizioni per la stampa

         if (limit>0){limit=2;Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES));}
 
Si scopre che le date sono in ordine...
 
Sergey Savinkin:

Forse è una questione di conversione del tipo (int) - da qualche parte durante la divisione si forma un numero frazionario che viene convertito a zero dall'int. Naturalmente, il divisore viene convertito in intero, ma la conversione di tipo era già stata lamentata con la nuova versione.

Forse abbiamo bisogno di pensarci.

 
Aleksey Vyazmikin:

Ovviamente, è necessario controllare il limite per 0. La condizione per la stampa non è corretta, credo. Si dovrebbe stampare quando limit=0.

 
Alexey Kozitsyn:

Ovviamente, devi controllare il limite per 0. La condizione per la stampa non è corretta, credo. Dovrebbe stampare quando limit=0.

Grazie - sono ammutolito quando sono sveglio.

 
In generale, il profiling sui dati storici non rivela errori.