エラー、バグ、質問 - ページ 744 1...737738739740741742743744745746747748749750751...3185 新しいコメント --- 2012.05.27 19:39 #7431 IgorM: そうなんです、実行エラーにならないコードを引用したのですが、スクリプトをループさせるは最後のプリントが出力されないのでしょうか?それともペンタックス?また、最後の指数 呼び出しはフリーズしないのですか?アルゴリズムが到達するラインは?プリントをあちこちに貼ったのですか? Igor Makanu 2012.05.27 19:47 #7432 sergeev: は、最後のプリントが 出力されないのでしょうか?はい、そうではありません。2012.05.27 23:44:15 34 (EURUSD,M15) Abnormal termination 2012.05.27 23:44:14 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][3][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][2][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][1][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][0][7] = 0.02401042497265053 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][6][7] = 0.6115035058049522 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][5][7] = 0.6315711056280579 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][4][7] = 0.2054980719299829 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][3][7] = 0.5596305561874292 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][2][7] = 0.3623413658485376 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][1][7] = 0.8933844140595046 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][0][7] = 0.9005057454076223 2012.05.27 23:44:14 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][3][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][2][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][1][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][0][7] = 0.02401042497265053 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][6][7] = 0.6115035058049522 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][5][7] = 0.6315711056280579 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][4][7] = 0.2054980719299829 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][3][7] = 0.5596305561874292 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][2][7] = 0.3623413658485376 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][1][7] = 0.8933844140595046 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][0][7] = 0.9005057454076223 2012.05.27 23:44:14 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][3][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][2][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][1][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][0][7] = 0.02401042497265053 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][6][7] = 0.6115035058049522 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][5][7] = 0.6315711056280579 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][4][7] = 0.2054980719299829 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][3][7] = 0.5596305561874292 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][2][7] = 0.3623413658485376 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][1][7] = 0.8933844140595046 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][0][7] = 0.9005057454076223 2012.05.27 23:44:14 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][3][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][2][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][1][7] = 0.5 2012.05.27 23:44:14 34 (EURUSD,M15) out[2][0][7] = 0.02401042497265053 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][6][7] = 0.6115035058049522 2012.05.27 23:44:14 34 (EURUSD,M15) out[1][5][7] = 0.6315711056280579 2012.05.27 23:44:10 34 (EURUSD,M15) out[1][3][7] = 0.5596305561874292 2012.05.27 23:44:10 34 (EURUSD,M15) out[1][2][7] = 0.3623413658485376 2012.05.27 23:44:10 34 (EURUSD,M15) out[1][1][7] = 0.8933844140595046 2012.05.27 23:44:10 34 (EURUSD,M15) out[1][0][7] = 0.9005057454076223 2012.05.27 23:44:10 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:10 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:10 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:10 34 (EURUSD,M15) out[2][3][7] = 0.5 2012.05.27 23:44:10 34 (EURUSD,M15) out[2][2][7] = 0.5 2012.05.27 23:44:09 34 (EURUSD,M15) out[0][1071644672][7] = 0.5 2012.05.27 23:44:09 34 (EURUSD,M15) out[2][5][7] = 0.5 2012.05.27 23:44:09 34 (EURUSD,M15) out[2][4][7] = 0.5 2012.05.27 23:44:09 34 (EURUSD,M15) out[2][3][7] = 0.5 --- 2012.05.27 19:50 #7433 IgorM:はい、そうではありません。繰り返し質問ですが、2/3/8の指数は計算されているのでしょうか?とか、見た目がおかしいとか。1071644672 それはどこから来ているのか? Igor Makanu 2012.05.27 19:57 #7434 sergeev: 質問を繰り返しますが、2/3/8の指数は計算されているのでしょうか?は、このようにしました。int i1,i2,i3; double out[3][7][7]; for(i1=0;i1<7;i1++) out[0][0][i1] = inp[i1]; double sum; sum = 0.0; for(i3=0;i3<3;i3++){ for(i2=0;i2<7;i2++){ for(i1=1;i1<7;i1++) sum += W[i3][i2][i1] * out[i3][i2][i1-1]; if(i3==2 && i2==3 && i1==8) Print("неправильный вызов exp!!!!"); out[i3][i2][i1] = f(sum + WT[i3][i2]); sum = 0.0; Print("out[",i3,"][",i2,"][",i1,"] = ",out[i3][i2][i1]); } } Print("sum = ",sum);をログに残す。2012.05.27 23:55:30 34 (EURUSD,M15) array out of range in '34.mq5' (180,7)if commented out:// if(i3==2 && i2==3 && i1==8)Print("incorrect exp!!! call"); 再び無限ループが発生します :) Valerii Mazurenko 2012.05.27 20:38 #7435 IgorM:を空白にした場合。// if(i3==2 && i2==3 && i1==8) Print("wrong exp!!! call"); また無限ループになります :)i1はループ終了後に7となるが、3次元の最大インデックスは6である。範囲外のはずなのですが、そうでない場合は、かなりの確率で、文字列のout[i3][i2][i1] = f(sum + WT[i3][i2]);は、例えばi2の値を上書きしてしまうかもしれません。しかし、この場合は、mql-compilerのエラーです。例えば、配列の定義をグローバル変数 に移動させることができます。 Документация по MQL5: Основы языка / Переменные / Глобальные переменные www.mql5.com Основы языка / Переменные / Глобальные переменные - Документация по MQL5 --- 2012.05.27 21:27 #7436 IgorM: また無限ループになるんだろうなぁ :) プリンター本体にエラーがあるのでは?その前の行に何があるのかを調べます。問題はあなたのコードにあると思います。 Документация по MQL5: Математические функции / MathExp www.mql5.com Математические функции / MathExp - Документация по MQL5 Igor Makanu 2012.05.27 21:33 #7437 sergeev: 問題はあなたのコードにあると思います。 添付しました。スクリプトは次のような無限ループになります。 ファイル: 34.mq5 7 kb Vladimir Gomonov 2012.05.28 02:37 #7438 sergeev: と、見た目も変です。1071644672 どこから来たんだ? この数字を2進数で書き直すと、少しは手がかりになると思うのですが。 Valerii Mazurenko 2012.05.28 06:02 #7439 IgorM: 添付しています、この形だとスクリプトが無限ループになります。プリントの有無にかかわらず、Zero Devideをオンにしています。double f(double x){return(1/(1+MathExp(-1*x)));} 一般に、i1 は誤った値をとります。out[][]7では圏外になるはずですが。どうやら、コンパイラは、各次元ではなく、すべての次元の乗算から生じる制約(3 * 7 * 7 = 147)を計算するようです。例えば、i1 に 8 を代入しても、Print はいくつかの値を表示する。明らかに、配列の境界をチェックする際のコンパイラーエラーです。 Slava 2012.05.28 06:07 #7440 notused: どうやら、コンパイラは、各次元ではなく、すべての次元の乗算(3 * 7 * 7 = 147)から生じる制約を計算するようです。例えば、i1に8を代入しても、Printは何らかの値を生成する。明らかに、配列の境界をチェックする際のコンパイラーエラーです。範囲外はコンパイラからではありません。これはRuntimeエラー です。ランタイムシステムは愚かにもオフセットを計算してしまい、不正なインデックスが計算に関与していたとしても何も起こりません。しかし、あなたは配列の限界を超えてはいません。しかし、スマートな方法でインデックスをそれぞれ個別にチェックすれば、実行時に具体的なラグが発生します。 Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения www.mql5.com Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5 1...737738739740741742743744745746747748749750751...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そうなんです、実行エラーにならないコードを引用したのですが、スクリプトをループさせる
は最後のプリントが出力されないのでしょうか?
それともペンタックス?
また、最後の指数 呼び出しはフリーズしないのですか?
アルゴリズムが到達するラインは?
プリントをあちこちに貼ったのですか?
はい、そうではありません。
はい、そうではありません。
繰り返し質問ですが、2/3/8の指数は計算されているのでしょうか?
とか、見た目がおかしいとか。
1071644672
それはどこから来ているのか?は、このようにしました。
をログに残す。
if commented out:// if(i3==2 && i2==3 && i1==8)Print("incorrect exp!!! call");
再び無限ループが発生します :)
を空白にした場合。// if(i3==2 && i2==3 && i1==8) Print("wrong exp!!! call");
また無限ループになります :)
i1はループ終了後に7となるが、3次元の最大インデックスは6である。範囲外のはずなのですが、そうでない場合は、かなりの確率で、文字列の
は、例えばi2の値を上書きしてしまうかもしれません。しかし、この場合は、mql-compilerのエラーです。
例えば、配列の定義をグローバル変数 に移動させることができます。
また無限ループになるんだろうなぁ :)
プリンター本体にエラーがあるのでは?
その前の行に何があるのかを調べます。
問題はあなたのコードにあると思います。
と、見た目も変です。
1071644672
どこから来たんだ?添付しています、この形だとスクリプトが無限ループになります。
プリントの有無にかかわらず、Zero Devideをオンにしています。
一般に、i1 は誤った値をとります。out[][]7では圏外になるはずですが。どうやら、コンパイラは、各次元ではなく、すべての次元の乗算から生じる制約(3 * 7 * 7 = 147)を計算するようです。例えば、i1 に 8 を代入しても、Print はいくつかの値を表示する。明らかに、配列の境界をチェックする際のコンパイラーエラーです。どうやら、コンパイラは、各次元ではなく、すべての次元の乗算(3 * 7 * 7 = 147)から生じる制約を計算するようです。例えば、i1に8を代入しても、Printは何らかの値を生成する。明らかに、配列の境界をチェックする際のコンパイラーエラーです。
範囲外はコンパイラからではありません。これはRuntimeエラー です。
ランタイムシステムは愚かにもオフセットを計算してしまい、不正なインデックスが計算に関与していたとしても何も起こりません。しかし、あなたは配列の限界を超えてはいません。しかし、スマートな方法でインデックスをそれぞれ個別にチェックすれば、実行時に具体的なラグが発生します。