ある指標でゼロ除算エラーが発生した - ページ 2

 
Vladimir Karputov:

問題によって再現可能な最小限のコードが必要です。コードの一部分ではありません。

問題は不安定で、数時間存在しないこともあれば、現れることもあります。ゼロ除算が 発生する部分と、除算器を形成する部分を示しました。他に何が原因かはまだ不明です。

 
Aleksey Vyazmikin:

問題は不安定で、数時間存在しないこともあれば、現れることもあります。ゼロ除算が 発生する部分と、除算器を形成する部分を示しました。他に何が原因かはまだ不明です。

一方、あなたは、LINE NUMBERとCOURSE POSITIONをゼロで割ったものを持っています。しかし、残念ながら私たちはテレパスではありません。

ラインやカーソル位置の強調表示は難しいですか?
 
Aleksey Vyazmikin:

どの行にエラーがあるのでしょうか?コードで強調表示する。

 
Aleksey Vyazmikin:

問題は不安定で、数時間存在しないこともあれば、現れることもあります。ゼロ除算が 発生する部分と、除算器を形成する部分を示しました。他に何が原因なのかは、まだ明らかになっていません。

多分、型変換(int)の問題だと思うのですが、どこかで割り算の際に端数ができて、intが0になってしまうのでしょう。もちろん、除数は整数に変換されますが、型変換はすでに新リリースで文句を言われました。

 
Vladimir Karputov:

一方、あなたは、ゼロによる除算のLINE NUMBERとCURSOR POSITIONを持っています。しかし、残念ながら私たちはテレパスではありません。

行やカーソル位置の選択は難しいですか?
アレクセイ・コジツィン

何行目にエラーがあるのでしょうか?コードで強調表示する。

こんなことを書いています。

ここでは0になる 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)の問題だと思うのですが、割り算の時にどこかで小数ができて、それがintで0に変換されるのだと思います。もちろん、除数は整数に変換されますが、型変換はすでに新リリースで文句を言われました。

考える必要があるのかもしれません。

 
Aleksey Vyazmikin:

明らかに、0による制限を確認する必要があり、プリントの条件がおかしいと思います。limit=0の時に印刷する必要があります。

 
Alexey Kozitsyn:

明らかに、0による制限を確認する必要があり、プリントの条件がおかしいと思います。limit=0の時に印刷されるはずです。

ありがとうございます~、起きているときは呆然としているんですけどね。

 
一般に、過去のデータに対するプロファイリングでは、エラーは発生しない。