ある指標でゼロ除算エラーが発生した - ページ 4 1234567891011 新しいコメント Aleksey Vyazmikin 2018.07.04 14:27 #31 の制限で、1/2=0.5の場合、四捨五入で1ではなく0になるようです? 仮説を検証 するために、私はコードを変更しました。 double d1=(delta_price_high-center_line_point)/((double)limit/2); double d2=(center_line_point-delta_price_low)/((double)limit/2); Vladimir Karputov 2018.07.04 14:28 #32 Aleksey Vyazmikin:完全なゴミ - 再びゼロによる除算エラーが発生MEからのコードを画像として表示 - 私の目が悪いのかもしれないが、何が起こっているのか理解できないエラーは同じ行のままです。 印刷用のコードを追加したため、エラー行がずれただけで、ファイルは同じです。スタイラスを 使うべきです。問題の文字列がチェックゾーン内にないことがすぐにわかるでしょう if(limit==0) Aleksey Vyazmikin 2018.07.04 14:30 #33 Vladimir Karputov:スタイラスを 使うべきです。問題の文字列がチェックゾーンにないことがすぐにわかるでしょう if(limit==0)では、入力する必要がないかというと、そうでもない。 Aleksey Vyazmikin 2018.07.04 14:31 #34 このコード int a=1; double test=1/(a/2); 端末を吊り下げる。 Vladimir Karputov 2018.07.04 14:32 #35 Aleksey Vyazmikin:の制限で、1/2=0.5の場合、四捨五入で1ではなく0になるようです? 仮説を検証するために、私はコードを変更しました。 コード //+------------------------------------------------------------------+ //| writeSpicifiedType.mq5 | //| hoz | //| | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "" #property version "1.00" //--- double high=-1.0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- for(int limit=0;limit<4;limit++) { Print("limit (",limit,")/2 ",limit/2); } } //+------------------------------------------------------------------+ 結果 Test_en (EURUSD,M30) limit (0)/2 0 Test_en (EURUSD,M30) limit (1)/2 0 Test_en (EURUSD,M30) limit (2)/2 1 Test_en (EURUSD,M30) limit (3)/2 1 Aleksey Vyazmikin 2018.07.04 14:35 #36 Vladimir Karputov:コード 結果 それが、さっきはどうやら1/2が0ではなく1を出したようなんです。 Vladimir Karputov 2018.07.04 14:36 #37 Aleksey Vyazmikin:それが、以前は1/2が0ではなく1だったはずなんです。いや、いつもそうなんだ。 Aleksey Vyazmikin 2018.07.04 14:39 #38 Vladimir Karputov:いや、いつもそうやって四捨五入しているんだ。結局は別物なんですね...。 Aleksey Vyazmikin 2018.07.04 14:50 #39 プリントのコードを変更しました if(limit/2==0) { limit=2; Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES)); Print("start_index=",start_index, " stop_index=",stop_index); } そして今、私は... 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_time - 2017.08.10 11:00 stop_time - 2017.08.10 11:00 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_index=2012 stop_index=2012 どうして? 削除済み 2018.07.04 14:53 #40 Aleksey Vyazmikin:プリントのコードを変更しましたそして今、私は...どうですか?すべて正解です。limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) の式で算出される場合。 であれば、結果は=0となる。 次に、停止時間と開始時間がどのように形成されるかを見てみましょう。 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
の制限で、1/2=0.5の場合、四捨五入で1ではなく0になるようです?
仮説を検証 するために、私はコードを変更しました。
完全なゴミ - 再びゼロによる除算エラーが発生
MEからのコードを画像として表示 - 私の目が悪いのかもしれないが、何が起こっているのか理解できない
エラーは同じ行のままです。
印刷用のコードを追加したため、エラー行がずれただけで、ファイルは同じです。スタイラスを 使うべきです。問題の文字列がチェックゾーン内にないことがすぐにわかるでしょう if(limit==0)
スタイラスを 使うべきです。問題の文字列がチェックゾーンにないことがすぐにわかるでしょう if(limit==0)
では、入力する必要がないかというと、そうでもない。
このコード
端末を吊り下げる。
の制限で、1/2=0.5の場合、四捨五入で1ではなく0になるようです?
仮説を検証するために、私はコードを変更しました。
コード
結果
コード
結果
それが、さっきはどうやら1/2が0ではなく1を出したようなんです。
それが、以前は1/2が0ではなく1だったはずなんです。
いや、いつもそうなんだ。
いや、いつもそうやって四捨五入しているんだ。
結局は別物なんですね...。
プリントのコードを変更しました
そして今、私は...
どうして?
プリントのコードを変更しました
そして今、私は...
どうですか?
すべて正解です。limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) の式で算出される場合。
であれば、結果は=0となる。
次に、停止時間と開始時間がどのように形成されるかを見てみましょう。