64 bit MT5 build 858 ロックする...

cowil  

こんにちは。

私のブローカーは昨日64ビット版のMT5ビルド858をリリースしましたが、ビルド842(これまで正常に動作していた)からこの新しいバージョンにアップグレードすると、MT5が散発的にロックアップ(つまり、フリーズして応答しなくなる)します。この現象が発生した後にMT5を終了させる唯一の方法は、タスクマネージャーでMT5を終了させることです。

この問題は、私のMT5デモ機(Windows 7)とMT5ライブVPS機(Windows Server 2008r2)の両方で明らかになりました。これらのマシンは両方とも、以前はMT5ビルド842を問題なく実行していました。

MT5の構成は何も変わっていません。ビルド842で使用したのと同じエキスパートなどが、現在、両方のビルド858のインストールで実行されています。

数週間前、ビルド858をテストするために32ビットマシンも起動しました(どういうわけか、私のブローカーはビルド858の32ビット版を数週間前に、64ビット版を昨日リリースしたばかりです)、これには何の問題もありませんでした。その後、ライブトレードを32ビットプラットフォームに移しましたが、まだ何の問題も起きていません。64bitのデモ版は今日の午後、またクラッシュしてしまった。

MT5が問題を起こしたことを示すログは何もありません。

他にこのような問題を抱えている人はいますか?

Alain Verleyen  
この問題をサービスデスクに報告したのでしょうか?
cowil  
angevoyageur:
この問題をサービスデスクに報告したのでしょうか?
あ、いえ、急いでいたので、すっかり忘れていました。ご指摘ありがとうございます。
cowil  

この問題の現在の状況 - ロックアップの問題は、ビルド858と現在MetaQuotesのウェブサイトで利用可能な新しいバージョン - ビルド868の両方で発生します。ロックアップの問題は32ビットと64ビットの両方のプラットフォームで発生します。 私は現在、MetaQuotesと私のブローカーの両方で問題レポートを実行しています。

ビルド842より新しいビルドでロックアップの問題を抱えている人が他にいますか?私は多くのExpertsを実行しているので、これらのロックアップの問題が発生するためには、MT5が適度に「ロードアップ」されている必要があるのではないかと思っています。

また、さまざまな異なるマシンとVPS インスタンスにMT5を再インストールしました(基本的にマシンの問題を排除するため)。これらのインストールは新規に行ったので、MT5のインストールを何らかの形で破損させたとは思えません。また、新しいビルドコンパイラでExpertsを再コンパイルしましたが、これも違いはありませんでした。

ちなみに、この1年間、同じマシンで(MT5のさまざまなビルドで)まったく同じExpertsを実行していますが、MT5がロックしたことは一度もありません(実はこれまで、MT5の安定性には非常に感心していました)。問題のないMT5ビルド842をビルド858にアップグレードしたとき、初めてこの問題が発生しました。

Alain Verleyen  
cowil:

この問題の現在の状況 - ロックアップの問題は、ビルド858と現在MetaQuotesのウェブサイトで利用可能な新しいバージョン - ビルド868の両方で発生します。ロックアップの問題は32ビットと64ビットの両方のプラットフォームで発生します。 私は現在、MetaQuotesと私のブローカーの両方で問題レポートを実行しています。

ビルド842より新しいビルドでロックアップの問題を抱えている人が他にいますか?私は多くのExpertsを実行しているので、これらのロックアップの問題が発生するためには、MT5が適度に「ロードアップ」されている必要があるのではないかと思っています。

また、さまざまな異なるマシンとVPSインスタンスにMT5を再インストールしました(基本的にマシンの問題を排除するため)。これらのインストールは新規に行ったので、MT5のインストールを何らかの形で破損させたとは思えません。また、新しいビルドコンパイラでExpertsを再コンパイルしましたが、これも違いはありませんでした。

ちなみに、この1年間、同じマシンで(MT5のさまざまなビルドで)まったく同じExpertsを実行していますが、MT5がロックしたことは一度もありません(実はこれまで、MT5の安定性には非常に感心していました)。問題のないMT5ビルド842をビルド858にアップグレードしたとき、初めて問題が発生しました。

これらのビルド858/868のBars()関数に バグがあることがわかりました。このバグは、コードの実行をかなり遅くします。もしかしたら、あなたもこの問題を抱えているかもしれません。
Documentation on MQL5: Timeseries and Indicators Access / Bars
Documentation on MQL5: Timeseries and Indicators Access / Bars
  • www.mql5.com
Timeseries and Indicators Access / Bars - Documentation on MQL5
cowil  
angevoyageur:
ビルド858/868のBars()関数に バグを発見しました。このバグはコードの実行をかなり遅くしています。もしかしたら、あなたもこの問題を抱えているかもしれません。

こんにちは - ご指摘ありがとうございます。

私のコードでは実際にBars()関数を使用していませんが、そのような一般的に使用される関数にそのような深刻なバグが忍び込んでいることが少し気になります - 特に以前はなかったのですから...おそらく、私が使っている関連する関数が、Bars()関数が呼び出すのと同じ基本的なコードを呼び出しているのではないでしょうか?

どのようにしてこれを検出し、分離することができたのでしょうか?Bars()がその機能を完了するのにかかる時間は、特別に長いものだったのでしょうか?もしそうなら、どのような時間のことを話しているのですか - 100の数ミリ秒?

現在、MetaQuotesまたは私のブローカーにビルド842またはそれ以前のバージョンを提供するよう依頼していますが、まだ成功していません...。

Alain Verleyen  
cowil:

こんにちは - ご指摘ありがとうございます。

私のコードでは実際にBars()関数を使用していませんが、そのような一般的に使用される関数にそのような深刻なバグが忍び込んでいることが少し気になります - 特に以前はなかったのですから...おそらく、私が使っている関連する関数が、Bars()関数が呼び出すのと同じ基本的なコードを呼び出しているのではないでしょうか?

どのようにしてこれを検出し、分離することができたのでしょうか?Bars()がその機能を完了するのにかかる時間は、特別に長いものだったのでしょうか?もしそうなら、どのような時間のことを話しているのですか - 100の数ミリ秒?

現在、MetaQuotesまたは私のブローカーにビルド842またはそれ以前のバージョンを提供するよう依頼していますが、まだ成功していません...。

まず最初に、EAが各ティックでチャートに表示される情報を更新しないことを確認しました。そこで私はコードのデバッグを始め、OnTick()イベントハンドラが各ティックで呼び出されていないことを発見しました、つまり、前のティックのOnTickがまだ実行されているということです。

そこで、プロファイラを使ってOnTick()で何が起こっているのかを分析したところ、Bars()関数の 実行に多くの秒数がかかっていることがわかりました。その後、MT5/mql5のバグであることを確認するために、非常に単純なコードでBars()関数をチェックしました。同じコードはビルド842で問題なく動作しています。

Profilerは とても使いやすく、強力なツールです。

cowil  
angevoyageur:

まず、EAが各ティックでチャートに表示される情報を更新していないことを確認しました。そこで私はコードのデバッグを始め、OnTick()イベントハンドラが各ティックで呼び出されていないことを発見しました。

プロファイラを使ってOnTick()で何が起こっているのかを分析したところ、実行に多くの秒数を要するBars()関数 であることがわかりました。その後、MT5/mql5のバグであることを確認するために、非常に簡単なコードでBars()関数をチェックしました。同じコードはビルド842で問題なく動作しています。

Profilerは とても使いやすく、強力なツールです。

まず、情報をどうもありがとうございました。:)

秒単位とは......?それは確かに深刻な問題ですね。私も同じようにして、私のExpertがどうなっているか見てみようと思います。同じExpertを8つのチャートで動かしているので、それぞれのExpertでそのような遅延が発生しているとしたら、何が起こっているのか考えたくありません。

MetaQuotesからビルド842以前を取得しようとしても、喜びはない。引用元: "いいえ、ビルド842へのリンクは ありません。古いバージョンはどこにも保存していません".信じられない... :( そこにビルド842があると言うことは、インストール可能なバージョンではなく、既にインストールされたバージョンなのでは?

Alain Verleyen  
cowil:

まず最初に、情報をどうもありがとうございました。:)

えーっ、秒単位って......?それは間違いなく深刻な問題です。私も同じようにして、自分のExpertがどうなっているのか見てみようと思います。同じExpertを8つのチャートで動かしているので、それぞれのExpertでそのような遅延が発生しているとしたら、何が起こっているのか考えたくありません。

MetaQuotesからビルド842以前を取得しようとしても、喜びはない。引用元: "いいえ、ビルド842へのリンクは ありません。古いバージョンはどこにも保存していません".信じられない... :( そこにビルド842があると言うことは、インストール可能なバージョンではなく、すでにインストールされたバージョンなのでしょうね?

はい、ブローカーから既にインストールされています(あなたのPMを参照してください)。
cowil  

私のブローカーも、古いバージョンを提供することができませんでした。信じられないかもしれませんが、私の(大きな)ブローカーも、実際にソフトウェアを開発している大きなソフトウェア会社(つまりMetaQuotes)も、MT5の1つ前のビルドを提供することができなかったわけです。信じられない!

この記事を読んでいる人は、アップグレードは基本的に片道切符です。信じられないかもしれませんが、問題のあるMT5がリリースされた場合に戻るための、以前のビルドはありません。だから、あなたは新しいリリースにコミットする前に、徹底的にすべてのものをテストすることを確認し、特にライブ(すなわち、実際のお金を使用して)環境では、!

あなたは私のようにずさんなこの時期(すなわち、新しいリリースにコミットする前に徹底的にすべてをテストしない)になっていた場合、私と同じまたは同様の問題を抱えていると他のすべてのオプションを使い果たしてしまった、ここで私は私のために働いてきた使用しているハックです。これはあなたのために働くことを意味しません、私はあなたが(a)完全にネジ止めされているとき(私のように)、(b)コンピュータについてかなり知っているときにのみこれを行うことを誰にでも助言します。

1.1. ビルド842をまだインストールしている人を探す。

2.2. その人に、MT5インストール ディレクトリ全体のコピーを取ってもらい、その人のコンピュータのtempディレクトリに置きます。

3.3. それから、(一時ディレクトリにコピーしたMT5インストールの).../bases/xxx/history/<SymbolPair>ディレクトリを調べ、各ディレクトリの内容をすべて削除するように依頼します(このステップは基本的に、その特定のブローカーの履歴データを削除するものです)。

4.履歴データが削除されたら、一時ディレクトリにあるインストールディレクトリ構造全体をzip圧縮して送信するよう依頼します(私はこのためにdropboxを使用しました)。

5.5.自分のコンピュータに、ビルド858/868をインストールする(これにより、適切なレジストリ設定が行われるようになる)。

6.6.受け取ったMT5インストール全体を自分のコンピュータの一時ディレクトリに解凍し、受け取ったMT5インストールのインストールディレクトリ(一時ディレクトリ内)の名前を、上記の858/868インストールで使用したインストールディレクトリの名前に変更します。

7.7. MT5ビルド858/868インストール・ディレクトリ構造を削除し、現在テンポラリ・ディレクトリにあるものと置き換えます。

8.8. 置換したMT5ディレクトリのファイルは、すべて読み取り専用に設定されている可能性があります。それらを読み取り/書き込みにフラグを立てます。

8.MT5を起動します。これで、842の動作するバージョンができたはずです。もちろん、「ツール」→「オプション」→「サーバー」タブで、ブローカーのサーバー名(受信した842インストールが自分のブローカーとは別のブローカーを使用するように構成されていた場合)、ログイン、パスワードを設定する必要があります。

繰り返しますが、これは最後の手段であり、私自身やMQ、ブローカーが推奨しているわけではありません。しかし、絶望的な時は、絶望的な手段を必要とすることがあります。もし、ビルド842のインストールをドロップボックスで提供する必要があるのなら、私に知らせてください。

cowil  
angevoyageur:
はい、すでにブローカーからインストールしました(あなたのPMを参照してください)。

こんにちは。

842ビルドのために様々なブローカーを試しましたが、私が出会ったものはすでにアップグレードされていました。結局、上記のハックで再び起動することができました。それ以来、(祈るように)私のMT5インストールはもうクラッシュしていません。

すぐに気づいたのは、ビルド842は2つの新しいビルドよりもずっと効率的に動作している(つまり、プロセッサの使用量が少ない)ようなので、Bars()関数で 発生していた問題のバリエーションが、私のエキスパート内でたまたま使っていた別の関数で発生しているのではないかと思います。プロファイラを取り出し、独自のテストを開始する時が来たようです。そして、もしその問題が何であるかわかったら、MetaQuotesはその知識に対して私が失った300ユーロを支払ってくれるでしょう(この問題のあるビルドのために)!:)

とにかく、本当にありがとうございました。

理由: