English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
MQL5クラウドネットワークを使った速度アップ

MQL5クラウドネットワークを使った速度アップ

MetaTrader 5 | 7 10月 2015, 15:53
10 573 0
MetaQuotes
MetaQuotes

MetaTrader 5のマルチスレッドテスティング

MetaTrader 5トレーディングプラットフォームには優れた点が列挙しきれないほどあります。テクニカル分析や金融市場で取引するための最良のプラットフォームだということもできるでしょう。このプラットフォームにはもう1つ明確に優れた点があります。その最後のテーマは MetaTrader 5 クライアントターミナルのストラテジーテスターです。この記事では、その優れた機能となぜMetaQuotes Software Corpの技術者がとても自信を持っているのかを説明したいと思います。

5世代目のクライアントターミナルはパワフルで素早いトレーディングストラテジーをプログラムするためのMQL5言語を得ただけでなく、何もない所からデザインされた完全に新しいストラテジーテスターを装備しています。テスターはヒストリカルデータを使いテストされたトレーディングストラテジーの結果を得るだけでなく、最適化することができます:例.最適パラメータ。

ストラテジーの最適化は同じ時間枠で異なるパラメータを持つトレーディングストラテジーの複数回の実行により行われます。これは大きな計算を行う時の標準的なタスクで、平行化できます。ご想像されたかもしれませんがMetaTrader 5はマルチスレッドです!これにはどういう意味があるのでしょうか?それでは、標準デリバリーパックの最適化のExpert Advisorの具体例を見てみましょう。


テストコンディション

前述のとおりIntel Core i7 (8 cores, 3.07 GHz)と12 GBのメモリ、ビットのWindows 7搭載のパソコンにMetaTrader 5 build 1075をインストールしたものを使います。

以下の設定の標準デリバリーパックのExpert Advisor Moving Average.mq5をテストします。

  • シンボル: EURUSD H1
  • テストインターバル:2011.01.01から2011.01.01まで
  • プライスシミュレーションモード: 1分OHLC (1分足のO・始値、H・高値、L・安値とC・終値を使用)
  • 最適化タイプ: スロー・コンプリート・アルゴリズム、合計14,040パス

最適化パラメータ:

最適化パラメータ:


ローカルエージェントの最適化

まずは、ローカルエージェントで最適化を実行しましょう。8つのテスト用エージェントがあります。- コア数による最適ナンバーです。ローカルネットワークのリモートエージェントとMQL5クラウドネットワークのエージェントの使用を無効にします:

_Enable/disable groups of agents

最適化が終わったら、ジャーナルを見てみましょう: 8つのローカルエージェントの14,040パスが1時間3分44秒かかっています。

2015.02.05 16:44:38   Statistics  locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2015.02.05 16:44:38 Statistics  optimization passed in 1 hours 03 minutes 46 seconds
2015.02.05 16:44:38 Tester  optimization finished, total passes 14040


ローカルファームエージェントを使った最適化

より多くのをタスクをパラレルで行うにはどうしたら良いでしょうか?もちろんよりコア数の大きいプロセッサを購入するのも良いでしょう。しかし、それでは同時に行うタスク数を増やすことはできません。ストラテジーテスターがこの問題を解決します。ローカルネットワークに独自の処理エージェントのファームを作成することができます。

ファームエージェントはどう作成するのでしょうか?

エージェントはそれぞれのパソコンのローカルネットワークにインストールされていなければいけません。MetaTrader 5がパソコンにインストールされている場合は、ツールメニューから対応するテスティングエージェントマネージャーを開いてください。

ストラテジーテスター・エージェントマネージャー

あるいは、MetaTrader 5 ストラテジーテストエージェントをダウンロードし、簡単にインストールを行うこともできます。

MetaTrader 5 ストラテジーテストエージェント

マネージャーのエージェントタブを開いてください:

  1. インストールするエージェントの数を選択してください。エージェントは論理コア数に基づいてインストールされます。
  2. エージェントを使用する時に使うパスワードを入力してください。
  3. 接続に使うポートの範囲を選択してください。
  4. 追加するをクリック。

これで終了です。ローカルネットワーク上にある他のパソコンのエージェントが利用できるようになりました。

エージェントの接続の仕方?

エージェントは数クリックで接続することができます。ターミナルのストラテジーテスターを開き、”エージェント”タブをクリックしてください。”ローカルネットワークファーム”を選択しコンテキストメニューの”追加する”をクリックします。

リモートエージェントの追加の仕方

最も簡単で素早くできるのは、ローカルネットワークの複数のIPアドレスとポートを自動スキャンする方法です。それらを選択し、インストール時に決めたエージェント接続パスワードを入力します。

LAN上にあるエージェントの検索

”終了”をクリックし、見つかったすべてのエージェントのテストが可能になりました。

速度テスト

8つのローカルエージェントに20個のリモートエージェントを追加しました。合計で28個のエージェントがあることになります。これは 、元々あった3.5倍です。Expert Advisorを最適化し、どれくらい早くなるか見てみましょう。

2015.02.05 15:14:44 Statistics locals 3412 tasks (24%), remote 10628 tasks (75%), cloud 0 tasks (0%)
2015.02.05 15:14:44 Statistics optimization passed in 15 minutes 47 seconds
2015.02.05 15:14:44 Tester optimization finished, total passes 14040

3/4のタスクはリモートエージェントによって実行されました。最適化時間は15分47秒になり、ほぼ4 倍早くなっています。

素晴らしい速度の向上ですが、このソリューションはすべての人が使えるわけではありません。しかし、心配無用です。EAをさらに最適化する方法があります。-MQL5クラウドネットワークのエージェントを使ってみましょう!


MQL5クラウドネットワークを使った最適化

今回はローカルなエージェントを使わずに、 MQL5クラウドネットワークエージェントだけを使います。”スタート”ボタンをクリックし最適化の経過を見てみましょう。ビデオはリアルタイムで経過を見ることができます。


MQL5クラウドネットワークを使えば、最適化にかかる時間が150倍速くなります!

最適化中には、MQL5クラウドネットワークのノードが、利用可能なエージェントにタスク (単一実行)を割り振ります。最適化は26秒しかかかりませんでした。147(!)倍も早くなっています。トレーダーは何百回、何千回もの最適化パスを短時間で行う必要があるかもしれません。MetaTrader 5のテスターを使えば、通常数日かかるような計算も、MQL5クラウドネットワークを使えば1時間あれば行うことができます。この方法なら、1クリックするだけで何千ものコアを使いタスクを処理することができます。そして、これはすべての人が利用可能です!しかし、どのように行われるのでしょうか?


MQL5クラウドネットワークには何千ものパソコンが含まれています

MQL5クラウドネットワークはノードからなります - テストエージェントがタスクを実行するために接続した専用サーバです。これらのノードは、世界中のエージェントをそれぞれの地理的条件により、大きなプールに集めていることから、マネージャー(プールの管理人)ということになります。アイドルモードでは、それぞれのノードはタスクを実行可能であるというメッセージを送っています。このようなメッセージの間隔は、MQL5クラウドネットワークの現状の負荷によって決まります。

それぞれのノードは、MetaTrader5によってMQL5クラウドネットワークにアクセスするポイントとして同時に処理されます。ターミナルはMQL5.comアカウント情報を使い接続します。MQL5クラウドネットワークのサーバーリストと利用可能なクラウドエージェントの数はターミナルで テスターウインドウの”エージェント”タブから見ることができます。

エージェントが使用されていない時はアイドルモードになっています。ローカルコンピューターやローカルネットワークのタスクを実行しておらず空いている状態ということです。エージェントがビジーな時は、MQL5クラウドネットワークからのタスクを受け取らないようになっています。ローカルの計算を完了し数分経つと、エージェントは直近のMQL5クラウドネットワークのノードに連絡し、タスクを受け取れるようになります。よって、テスティングエージェントを自分で利用しなければ、ネットワークでのみ使用されることになります。もちろん、エージェントのネットワークでの利用は設定された スケジュールに応じて行われます。

簡単なインストール と最小限の設定で済むMetatrader5のエージェントマネージャーにより、数千のテスティングエージェントがネットワーク上であらゆる時間に利用可能です。 MQL5クラウドネットワークエージェントと完了したタスクの統計データはhttps://cloud.mql5.comのプロジェクトのメインページで見ることができます。


MQL5クラウドネットワークエージェントを使用した分散コンピューティング

従来の最適化と同じように、テストのオプションとExpert Advisorのパラメータを設定しなければいけません。しかしその前に、MQL5.communityのログインをターミナルの設定で決めることと、 MQL5クラウドネットワークの使用を許可することを忘れないでください。4つの必要なステップが以下の図で表されています。

 MQL5クラウドネットワークを使用した最適化の実行

”スタート”ボタンをクリックすると最適化のプロセスが開始します。ターミナルはテスティングエージェントのためのタスクを、以下のように準備します:

  • EX5の拡張子がついた、コンパイル済みExpert Advisorファイル
  • #property tester_indicator#property tester_library などのディレクティブを使用し有効化されたインディケーターやEX5ライブラリ(DLLはクラウドでは許可されていません。)
  • #property tester_fileのディレクティブを使用し有効化されたテストに必要なデータファイル
  • テスト/最適化情報(金融商品名、テスト期間、シミュレーションmodなど。)
  • トレード環境(通貨ペアプロパティ、トレード環境など。)
  • 必要なパス(すなわちタスク)の全体集合を決めるExpert Advisorのパラメータの設定。

MetaTrader 5のターミナルはMQL5クラウドネットワークのノードと通信し、それぞれの特定のパスを実行するタスクパッケージを割り当てます。タスクやパスパッケージを受け取り、接続されたエージェントに割り当てることから、それぞれのノードはプロキシサーバーということができます。[fuzzy]このケースでは、Expert Advisorsやインディケータ、ライブラリのファイルやデータファイルはハードディスクではなくMQL5クラウドネットワークのサーバーに保存されています。

また、EX5ファイルは機密性の理由によりクラウドエージェントのハードディスクに保存されていません。データファイルはディスクに保存されますが、最適化の終了後削除されます。

これがあなたのクライアントターミナルとMQL5クラウドネットワークの間で起こることのすべてです。実際には、タスクパッケージをネットワークに送信し結果を待っています。


クラウドの同期とヒストリーのエージェントへの配布

MQL5クラウドネットワークのそれぞれのノードは必要な通貨ペアの過去のデータを保存し接続されたエージェントに求められれば送信します。もしもブローカーABCによるシンボルXYZの過去のデータを持っていない場合、ノードは自動的に必要なデータをあなたのターミナルからダウンロードします。そのため、データを提供する準備をしておかなければなりません。

MQL5クラウドネットワークにストラテジーを送信する前に、ご自身のパソコンでのテストを行うことを推奨します。この方法により必要な過去のデータのトレーディングサーバーからのダウンロードと同期が行われます。

原則として、4から8のエージェントが最近のパソコンにはインストールされています。しかし、過去のデータはMQL5 Strategy Tester Agent installation ディレクトリの1つのフォルダに格納されます。MQL5ストラテジーテストエージェントマネージャーによってインストールされた全てのクラウドエージェントは、このフォルダから過去のデータを受け取ります。もしも8つのエージェントがインストールされていて、MQL5クラウドネットワークで利用可能であれば、必要な過去データのダウンロードは一度で済みます。これによりトラフィックとハードディスクスペースの節約ができます。また、クラウドエージェントとコンピューターネットワークのノードとの間での同期を行う時も便利です。

このように、決められた時間内に指定されたシンボルに対するトレーディングストラテジーの最適化を行うすべてのエージェントは、自動的に同じく同期された過去のデータと市場環境を得ることになります。


ウォームアップ

ローカルコンピューターでの最適化はどう行われるのか?コア数が8であれば、通常8つのローカルエージェントが利用可能です。”開始する”をクリックすると、タスクがローカルエージェントに割り当てられ、(必要であれば)ダウンロードされ、プロセスが開始します。この場合は、最適化はほぼ同時に開始します。もし、タスクをMQL5クラウドネットワークに割り当てた場合、少し方法が変わります。

クラウドエージェントは永久にネットワークマネージャーに接続されているわけではないので、技術的に十分ではなくコストがかかります。代わりに、エージェントは定期的にMQL5クラウドネットワークのサーバーに、新しいタスクがあるかどうかを確認します。この結果、ほとんどの場合、必要なエージェントの動員が行われ、確認のためのメッセージによるネットワークトラフィックの過負荷が起こることはほとんどありません。ですから、最適化を実行すると、タスクを完了するために接続されるエージェントの数が増加するのが分かるはずです。これがクラウドエージェントがMQL5クラウドネットワークにアクセスし、特定のパスの為のタスクを受け取るリアルタイムプロセスです。

タスクがない場合は、エージェントがマネージャーにコンタクトを取ることはまれです。しかし、何千もの(何万もの)計算タスクの注文がある場合は、全く別です。MQL5クラウドネットワークのアクティビティは増加し、タスクの完了後には新しいタスクのためのエージェントのアプリケーションの数は減少します。そしてもし、例えばヨーロッパからの、タスクが完了し次のオーダーがアジアから来た場合、ネットワークはすぐにスタートする準備ができています。このネットワークの動作を”ウォームアップ”と呼びます。

MQL5クラウドネットワークでの計算の実行

このように、MQL5クラウドネットワークは短い時間で、次のタスクを受け入れる準備ができています。


MQL5クラウドネットワークを利用する!

"時は金なり"ということわざは、近年より話題となってきました。重要な計算を何十時間もあるいは何日間も待つことはできませこん。これを書いている時点では、MQL5クラウドネットワークによる計算は100倍になっています。今後のさらなる増加により、私たちが節約できる時間は数千倍以上になるでしょう。さらに、コンピュータのネットワークが解決するのはストラテジー最適化のタスクだけではありません。

巨大な数学的計算から成り、多くのCPU資源を必要とするプログラムをMQL5で開発することができます。MetaTrader 5 が書かれているMQL5言語はC++にとても近く、他の高レベル言語で書かれたアルゴリズムを利用できるようにすることは簡単です。

MetaTrader 5のターミナルテスターの重要な機能は 、巨大なインプット変数の集合から答えを見つけるための難しい数学的タスクをテスティングエージェントにより簡単に平行化できるということです。そして、そのために特別なコードを書く必要はありません。MQL5クラウドネットワークの分散コンピューティングに接続するだけで良いのです!

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/341

MetaTrader 5テスターのストラテジーのビジュアル化 MetaTrader 5テスターのストラテジーのビジュアル化
”百聞は一見にしかず”ということわざがあります。パリやヴェニスに関する本を読んだとしても、心のイメージに関して言えばこれらの美しい都市を夜に実際に歩いてみるのと同じ感覚を得ることはできません。ビジュアル化の利点は、私たちの生活のあらゆる部分で見つけることができます。それには市場も含まれます。例えば、チャートのプライスアナリストはインディケーターや、ストラテジーテスティングのビジュアル化ももちろん利用します。この記事ではMetaTrader 5のストラテジーテスターのすべてのヴィジュアライゼーション機能の説明をしていきます。
カスタムグラフィックコントロールパート2コントロールライブラリ カスタムグラフィックコントロールパート2コントロールライブラリ
「カスタムグラフィックコントロール」シリーズ第2弾となる本稿では、プログラム(エキスパートアドバイザ、スクリプト、インディケータ)とユーザ間のインタラクションにおいて起こる主要な問題を処理するコントロールライブラリを紹介します。このライブラリにはたいへん多くのクラス(CInputBox、CSpinInputBox、CCheckBox、CRadioGroup、CVSсrollBar、CHSсrollBar、CList、CListMS、 CComBox、CHMenu、CVMenu、CHProgress、CDialer、CDialerInputBox、CTable)と、それらの使用例が含まれています。
MQL5でのオブジェクトポインターの使用 MQL5でのオブジェクトポインターの使用
デフォルトで、MQL5ではすべてのオブジェクトがレファレンスによって渡されますが、オブジェクトポインターを使用する可能性があります。しかし、オブジェクトは初期化されないかもしれないので、ポインター 確認が必要です。 この場合、 MQL5はクリティカルエラーでアップロードされずにプログラムが終了します。自動作成されたオブジェクトはこのようなエラーが発生しないのでその意味で安全です。本記事ではオブジェクトレファレンスとオブジェクトポインターの違いを理解し、ポインターを使うセキュアコードの書き方を考察します。
MQL5でトレンドを見つけるいくつかの方法 MQL5でトレンドを見つけるいくつかの方法
あらゆるトレーダーが、所定の時点におけるトレンドを正確に見つけるための多くの機会を提供することができます。これはおそらく、誰もが探している聖杯です。本稿では、トレンドを見つけるいくつかの方法を検討していきます。それはより正確に言えば-MQL5を用いてトレンドを見つけるいくつかの伝統的な方法をプログラムする方法、です。