![可視化検証:機能強化](https://c.mql5.com/i/articles/overlay.png)
可視化検証:機能強化
1. モチベーション
ビルド 196 から始まり、 MetaTrader 4 クライアントターミナルは検証可視化関数を提供しています。それはまったく新しいレベルで Expert Advisor の検証管理を可能とします。今日、トレーディングのプログラマ―は自分の Expert Advisor が履歴上での処理を確認するアクションをすべて見ることができます。
記事『MetaTrader 4 クライアントターミナルにおけるExpert Advisor の検証:外面』でビジュアライザの使用方法を読むことができます。本稿ではストラテジーテスタをターミナルターミナルに近づける方法について説明します。
では、テスターの主な仕様は何か?可視化に不足しているのは何か?おそらくもっとも重要な不測は『トレード』タブの不足です。
ポジションがいくつオープンしていたか?未決注文はどのくらいすぐに実行されるのか?ポジションのストップロスは移動したか?現時点でのマージンはいくらか?マージンコールレベルに行くまでどのくらいか?こういった質問と、ターミナルの『トレード』タブのその他数多くの質問に対する答えを見つけます。ですが、検証時に何ができるのでしょうか?
本稿はこの疑問の解決のためにあるのです。
2. 技術的側面
いつものように課題定義のコード化を始めます。どんな結果を望んでいるのでしょうか?
-前述のとおり、『トレード』タブのなんらかの類似体を作る、すなわちオープンしているポジションと未決注文すべてに関する情報を可視化するのです。
-情報はつねに更新され読みやすいものであるべきです。
-プログラムはひじょうに使うのが簡単でなければなりません。 Expert Advisor と接続するのに労力はあまり必要としないことです。
ここで技術的な側面をお話しします。プログラムはどのように作成されるのか、インディケータとしてか、また外部関数ライブラリとしてか?
個別ウィンドウのインディケータがベストな解決法であるのは明らかです。それはつねに目に見え、価格チャートを作成せず、ティックごとに更新します。ただ、そうすると、インディケータを使うとき、新しい問題に直面します。それは「仮想」(検証)ターミナルではなく、通常のターミナルからオーダーにかかわるデータをすべて取り込みます。すなわち、検証中、検証自体に対する反応はなく、現在のアカウント状態についての情報を表示するのです。
今の問題を解決するために、代替策、一種の後戻りですが、を見つける必要があります。
まだインディケータを作成するつもりですが、『チャートのサブウィンドウ作成機能』の関数を作成するに留めます。それは何も表示しません、すなわちつねに「予約済み」のチャート部分を持つことになります。作成されたサブウィンドウがテンプレートの独自の名前 tester.tpl で、またはテンプレート<expert_name>.tpl に保存されるために必要なことです。
情報の表示と更新は、インクルードされたファイルを作成した関数ライブラリに割り当てられます。
3. 使用
まず、ビジュアライザを使用するチャートのテンプレートを作成する必要があります。チャートを調整し(色、グリッド、スケール)、vTerminal.mq4をチャートにアタッチし、「テンプレートを保存する」コマンドを使います。
可視化のために、tester.tpl または<expert_name>.tpl という名前のテンプレートが使われます。テンプレートの保存に使用されるのはこの名前です。
4. Expert Advisor との統合
ポジション情報を表示する関数は VisualTestingTools.mq4 という名前のインクルードファイルに保存されます。それは ...\MetaTrader 4\experts\include\ ディレクトリにあります。まず、それをにアタッチする必要があります。関数開始前に #include <VisualTestingTools.mq4> 行を挿入します。そうすると以下のようになります( CrossMACD_DeLuxeの例)。
... double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1; #include <VisualTestingTools.mq4> int start() { if ( FastEMAPeriod >= SlowEMAPeriod ) { return(-1); } int _GetLastError = 0; ...
これでプログラムのどこでもこの関数を使うことができます。そのうちの一つ、 vTerminalInit() の呼び出しは Expert Advisor の init() 関数に入れます。これはそれがオブジェクト作成と情報表示のタスクのために一度だけ呼び出されるためです。もう一つ、vTerminalRefresh() はティック毎に呼び出されます。それはオープンポジションに関する情報を更新します。以下が関数を使用する EA のコードです。
... double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1; #include <VisualTestingTools.mq4> int init() { if ( FastEMAPeriod >= SlowEMAPeriod ) { return(-1); } vTerminalInit(); return(0); } int start() { if ( FastEMAPeriod >= SlowEMAPeriod ) { return(-1); } vTerminalRefresh(); int _GetLastError = 0; ...
必要な変更がすでに加 Expert Advisor の CrossMACD_DeLuxe_Visual.mq4 をダウンロードすることが可能です。
5. 検証
ここで、取得したものを見ます。
最初に、Expert Advisor に新しい外部変数が追加されています。
その行先は直観的ですが、もっと詳しくお話しします。
-Rows -画面に表示される行の最大数ほとんどの戦略では10行で十分です。
- BigText -フォントを拡大したい場合は真に設定- SignalPoints -ポイント間の距離。そこから開始して、ストップロス、テイクプロフィット、未決注文の開始価格のフィールドが強調表示されます。. たとえば、SignalPoints = 10 であれば、価格がポジションのストップロスから10ポイントのとき、ストップロスフィールドが色を替えます。
- MainColor -ターミナルの見出しとアカウント情報(バランス、資金など)バーの色
- BuyColor -買いポジション情報の色
- BuyOPColor -現行価格が逆指値買いと指値買いの開始レベルに近づくとき主要色を入れ替える始値フィールドの色
- BuySLColor -価格が買いポジションのストップロスレベルに近づくとき主要色を入れ替える色
- BuyTPColor -価格が買いポジションのテイクプロフィットレベルに近づくとき主要色を入れ替える色
- SellOPColor, SellSLColor および SellTPColor -売りポジションに対し、それぞれ前項同様
MainColor = Black に設定し、OKを押します。エキスパートはこれで検証準備ができました。開始ボタンを押す前に、『可視化』をチェックし、結果を楽しみます。
オープポジションがなくなるまで、われわれの『ターミナル』は見出しとアカウント状況バーのみ表示します。シグナルが出現し、エキスパートがポジションをオープンするまで待ちます。
売りポジションが1番目のポジションとしてオープンしています。ごらんのように、線は赤です。
アカウント状況バーに注意を向けてください。そこにはターミナルの『トレード』タブで見慣れたものすべてがあります。情報全体がティック毎に更新され、ポジションの利益がどのように変化するか確認できます。
価格がポジションのストップロスレベルに近づくとき、ストップロスフィールドはユーザーがあらかじめ設定した色に変わります。
私にとっては、いじょうによい出来です。
6. 潜在的問題
インディケータ vTerminal で tester.tpl を利用するもうひとつの特徴をお話しします。:検証中、インディケータウィンドウを検索する関数(WindowFind())は無効化する必要があります。それは、サブウィンドウ数がコードで明示的に設定されるためです。
win = WindowFind( "vTerminal" ); if ( IsTesting() ) { win = 1; }
テンプレートに別ウィンドウに描かれる他のインディケータがあれば、それに関する情報全体は上側のウィンドウに表示されます。すなわち、vTerminal を一番上に入れるか、win = 1;の代わりに win = subwindow number; を書きます。
インディケータで作業する際、それ以外の問題は見つかりませんでした。
7. おわりに
すばらしい結論とするために、スクリーンショットを何枚かお見せしたいと思います。
![](https://c.mql5.com/2/14/visual3_1.gif)
![](https://c.mql5.com/2/14/visual4_1.gif)
![](https://c.mql5.com/2/14/visual5_1.gif)
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/1420
![MetaTrader 4 クライアントターミナルの秘密:インディケータ編](https://c.mql5.com/2/13/180_6.png)
![トレーディング初心者の10の「エラー」?](https://c.mql5.com/2/13/193_3.png)
![初心者のトレーディングにおける基本エラー](https://c.mql5.com/2/13/173_1.png)
![MQL5 - MetaTrader 5クライアントターミナルにビルトインされたトレードストラテジーの言語](https://c.mql5.com/i/registerlandings/logo-2.png)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索