Bei einem Indikator trat ein Fehler bei der Division durch Null auf - Seite 2

 
Vladimir Karputov:

Sie benötigen den Mindestcode, der durch das Problem reproduzierbar ist. Nicht ein Stück Code.

Das Problem ist unbeständig - es kann stundenlang nicht vorhanden sein und dann wieder auftauchen. Ich habe den Teil gezeigt, in dem die Division durch Null stattfindet, und den Teil, der den Teiler bildet. Es ist noch nicht klar, was sonst die Ursache sein könnte.

 
Aleksey Vyazmikin:

Das Problem ist unbeständig - es kann stundenlang nicht vorhanden sein und dann wieder auftauchen. Ich habe den Teil gezeigt, in dem die Division durch Null stattfindet, und den Teil, der den Teiler bildet. Es ist noch nicht klar, was sonst die Ursache sein könnte.

Sie hingegen haben die ZEILENNUMMER und die KURSPOSITION der Division durch Null. Aber leider sind wir keine Telepathen.

Ist es für Sie schwierig, die Zeile und die Cursorposition zu markieren?
 
Aleksey Vyazmikin:

In welcher Zeile liegt der Fehler? Markieren Sie es im Code.

 
Aleksey Vyazmikin:

Das Problem ist unbeständig - es kann stundenlang nicht vorhanden sein und dann wieder auftauchen. Ich habe den Teil gezeigt, in dem die Division durch Null stattfindet, und den Teil, der den Teiler bildet. Es ist noch nicht klar, was sonst die Ursache sein könnte.

Vielleicht ist es eine Frage der Typkonvertierung (int) - irgendwo wird bei der Division eine Bruchzahl gebildet und int wird zu Null. Natürlich wird der Divisor in eine Ganzzahl umgewandelt, aber die Typkonvertierung wurde bereits bei der neuen Version bemängelt.

 
Vladimir Karputov:

Sie hingegen haben die Zeilennummer und die CURSOR-POSITION der Division durch Null. Aber leider sind wir keine Telepathen.

Ist es für Sie schwierig, die Zeile und die Cursorposition auszuwählen?
Alexey Kozitsyn:

In welcher Zeile liegt der Fehler? Markieren Sie es im Code.

Hier ist, was ich geschrieben habe.

Hier wird er zu Null.TimeFrames==PERIOD_H1

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

Der Debugger zeigt diese Daten an

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

Bedingung für den Druck

         if (limit>0){limit=2;Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES));}
 
Es stellt sich heraus, dass die Daten in Ordnung sind...
 
Sergey Savinkin:

Vielleicht ist es eine Frage der Typkonvertierung (int) - irgendwo während der Division wird eine Bruchzahl gebildet, die durch den int in Null umgewandelt wird. Natürlich wird der Divisor in eine Ganzzahl umgewandelt, aber die Typumwandlung wurde bereits bei der neuen Version bemängelt.

Vielleicht müssen wir darüber nachdenken.

 
Aleksey Vyazmikin:

Offensichtlich müssen Sie die Grenze von 0 überprüfen. Die Bedingung für den Druck ist meiner Meinung nach falsch. Sie sollten drucken, wenn Limit=0.

 
Alexey Kozitsyn:

Offensichtlich müssen Sie die Grenze für 0 überprüfen. Die Bedingung für den Druck ist meiner Meinung nach falsch. Es sollte gedruckt werden, wenn Limit=0.

Danke - ich bin verblüfft, wenn ich wach bin.

 
Im Allgemeinen werden bei der Erstellung von Profilen anhand historischer Daten keine Fehler festgestellt.
Grund der Beschwerde: