Build 216のバグ? isConnected()はfalseを返すが、metatraderは接続されたままである。 - ページ 2 1234 新しいコメント [Удален] 2008.05.07 16:28 #11 OK、ええ、私はそれを得た...まあ...それが戻ってくるかどうか見てみましょう;) [Удален] 2008.05.16 19:33 #12 Stringoさん、こんにちは。 残念ながら、このバグはまだ残っています。 下のテストスクリプトを実行して、あるアカウントから別のアカウントに切り替えたとき(私のテストケースでは、2つか3つのブローカーのアカウントを使用して、別のアカウントに切り替えました)、いくつかのアカウント変更(かなりランダムな数)の後、connectionStateが本当に1に戻らず、ターミナルが接続されているにもかかわらず0のままだということがわかると思います。 あなたの目には、これは致命的なバグに見えないかもしれません。しかし、connectionStateを表示するスクリプトを開発している人たちにとっては、このテスト結果はかなり憂慮すべきものなのです。 というわけで、この問題をもう一度見ていただけると幸いです。 テストスクリプトはこちらです。 //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { while(!IsStopped()) { Print("test"+IsConnected()); Sleep(500); } } よろしくお願いします。 ダニエル DrSpock 2008.05.26 02:50 #13 このバグがビルド216に存在することも確認できました。接続に失敗」-「ログイン」を何度か繰り返すと発生するようです。 Slava 2008.05.26 09:20 #14 はい、このスクリプトは既知です。しかし、問題を発見するためには、環境を再現する必要があります。しかし、再現できない Liliput 2008.05.28 06:41 #15 私も同じバグを確認しなければなりません。私のEAでは、接続が存在するかどうかを同時にチェック します。もしそうでなければ、私のスクリプトは終了します。 この回避策を発見された方はいらっしゃいますか? Slava 2008.05.28 07:47 #16 無限ループと受信ティックからの独立のため、スクリプトは問題を判断することができません。 問題はエキスパートだけが表示されます。一行だけの簡単なエキスパート - Print(IsConnected()); ティック受信(端末が接続されていることを意味する) - スタート関数実行 - おっと!IsConnected()は0を返す(つまりfalse) Liliput 2008.05.28 15:36 #17 ありがとうございます はい、使っています。 int start() { while(true) { if(IsConnected()) { ....... i do my work { else {return(-1);} // so if connection was lost i break the infiny loop } } 問題は、接続が戻ったときに、IsConnected() が古い値である false を保持し、true に変更しないことです。しかし、私は価格が移動し、端末が100%接続されているのを見ています。これは無限ループが壊れ、接続が回復した後の最初のティックで何も起こらなかったので、スタートが実行されたため、バグです。しかし、なぜかIs Connected()はまだfalseを返します。EAをチャートから削除し、再びEAを置くと、次に接続が切れるまですべて正常に動作します。 これは私を狂わせます。どうにかしてください。 ありがとうございます。 ukt 2008.05.28 15:50 #18 Liliput - 上記がstart()の使用概要であるなら、なぜinfinitループでその中に留まるのでしょうか? 私は、通常の方法は、入力する > 私は仕事をしたいですか? (もちろん、普通というのは主観的なものです;o) ということで、この質問をさせていただきました。 なぜこのような質問をしたのでしょうか? 私は、例えばEAが、EAが返さないので、Termialがstart()の呼び出しを行わない、おそらく多くの データticksのためにそれを返すことを拒否した場合、Terminalがどのように動作するか全くわからない... または - それは呼び出しを行わず、結局EAのstart()を呼ぶことができなかったことで、多くの データticksが流れて、ターミナルは未知の深さに行き、接続している問題を明示するか? ;) Edi Dimitrovski 2008.05.28 18:02 #19 これで解決できるのか...? string FILE[1]; int MOVE[1]; void init() { FILE[0]=Symbol(); } int start() { //---- check connection if ( !Connection() ) return(0); //---- return(0); } bool Connection() { int d; bool connect; RefreshRates(); for ( d=0; d<ArraySize(FILE); d++) { if ( MOVE[d] != MarketInfo(FILE[d],5) ) { MOVE[d] = MarketInfo(FILE[d],5); /* if ( !connect ) */ connect=1; } } return(connect); } Liliput 2008.05.28 20:49 #20 ukt: Liliput - 上記がstart()の使用概要であるなら、なぜinfinitループでその中に留まるのでしょうか? 私は、通常の方法は、入力する > 私は仕事をしたいですか? (もちろん、普通というのは主観的なものです;o) ということで、この質問をさせていただきました。 なぜこのような質問をしたのでしょうか? 私は、例えばEAが、EAが返さないので、Termialがstart()の呼び出しを行わない、おそらく多くの データticksのためにそれを返すことを拒否した場合、Terminalがどのように動作するか全くわからない... または - それは呼び出しを行わず、結局EAのstart()を呼ぶことができなかったことで、多くの データticksが流れて、ターミナルは未知の深さに行き、接続している問題を明示するか? ;) uktさん、大丈夫です、お答えします。私が無限ループを行うのは、多くの処理を行う必要があり、それらを行うために新しいtickを待つ必要がないからです。そのため、この方法でターミナルからコントロールし、必要なときに必要な作業を行うようにしています。実際のデータを取得するにはRefreshRates()を使っています。 そのため、ブローカーとの接続があるかどうかをチェックするのは論理的なことで、注文を送信/クローズ/変更し、接続がなければ動作しません。 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Stringoさん、こんにちは。
残念ながら、このバグはまだ残っています。
下のテストスクリプトを実行して、あるアカウントから別のアカウントに切り替えたとき(私のテストケースでは、2つか3つのブローカーのアカウントを使用して、別のアカウントに切り替えました)、いくつかのアカウント変更(かなりランダムな数)の後、connectionStateが本当に1に戻らず、ターミナルが接続されているにもかかわらず0のままだということがわかると思います。
あなたの目には、これは致命的なバグに見えないかもしれません。しかし、connectionStateを表示するスクリプトを開発している人たちにとっては、このテスト結果はかなり憂慮すべきものなのです。
というわけで、この問題をもう一度見ていただけると幸いです。
テストスクリプトはこちらです。
よろしくお願いします。
ダニエル
私も同じバグを確認しなければなりません。私のEAでは、接続が存在するかどうかを同時にチェック します。もしそうでなければ、私のスクリプトは終了します。
この回避策を発見された方はいらっしゃいますか?
無限ループと受信ティックからの独立のため、スクリプトは問題を判断することができません。
問題はエキスパートだけが表示されます。一行だけの簡単なエキスパート - Print(IsConnected());
ティック受信(端末が接続されていることを意味する) - スタート関数実行 - おっと!IsConnected()は0を返す(つまりfalse)
ありがとうございます
はい、使っています。
問題は、接続が戻ったときに、IsConnected() が古い値である false を保持し、true に変更しないことです。しかし、私は価格が移動し、端末が100%接続されているのを見ています。これは無限ループが壊れ、接続が回復した後の最初のティックで何も起こらなかったので、スタートが実行されたため、バグです。しかし、なぜかIs Connected()はまだfalseを返します。EAをチャートから削除し、再びEAを置くと、次に接続が切れるまですべて正常に動作します。
これは私を狂わせます。どうにかしてください。
ありがとうございます。
Liliput - 上記がstart()の使用概要であるなら、なぜinfinitループでその中に留まるのでしょうか?
私は、通常の方法は、入力する > 私は仕事をしたいですか?
(もちろん、普通というのは主観的なものです;o)
ということで、この質問をさせていただきました。
なぜこのような質問をしたのでしょうか?
私は、例えばEAが、EAが返さないので、Termialがstart()の呼び出しを行わない、おそらく多くの データticksのためにそれを返すことを拒否した場合、Terminalがどのように動作するか全くわからない... または - それは呼び出しを行わず、結局EAのstart()を呼ぶことができなかったことで、多くの データticksが流れて、ターミナルは未知の深さに行き、接続している問題を明示するか?
;)
これで解決できるのか...?
Liliput - 上記がstart()の使用概要であるなら、なぜinfinitループでその中に留まるのでしょうか?
私は、通常の方法は、入力する > 私は仕事をしたいですか?
(もちろん、普通というのは主観的なものです;o)
ということで、この質問をさせていただきました。
なぜこのような質問をしたのでしょうか?
私は、例えばEAが、EAが返さないので、Termialがstart()の呼び出しを行わない、おそらく多くの データticksのためにそれを返すことを拒否した場合、Terminalがどのように動作するか全くわからない... または - それは呼び出しを行わず、結局EAのstart()を呼ぶことができなかったことで、多くの データticksが流れて、ターミナルは未知の深さに行き、接続している問題を明示するか?
;)
uktさん、大丈夫です、お答えします。私が無限ループを行うのは、多くの処理を行う必要があり、それらを行うために新しいtickを待つ必要がないからです。そのため、この方法でターミナルからコントロールし、必要なときに必要な作業を行うようにしています。実際のデータを取得するにはRefreshRates()を使っています。
そのため、ブローカーとの接続があるかどうかをチェックするのは論理的なことで、注文を送信/クローズ/変更し、接続がなければ動作しません。