English Русский 中文 Español Deutsch Português
検証の可視化:トレード履歴

検証の可視化:トレード履歴

MetaTrader 4テスター | 15 3月 2016, 12:58
867 0
Andrey Khatimlianskii
Andrey Khatimlianskii

1. 動機

ビルド 196 より、MetaTrader 4 クライアントターミナルは検証可視化関数を提供します。それにより Expert Advisor の検証をまったく新しいレベルで制御できるようになるのです。今ではトレーディングのプログラマーは自分の Expert Advisor が履歴上で動作を確認するのを見ることができるのです。

MetaTrader 4 クライアントターミナルにおける Expert Advisorの検:概要で可視化機能の利用法について読むことができます。私の検証可視化:機能強化という題名の先行記事では、検証用に『トレード』タブを実装する方法を説明しています。今回はそこに『アカウント履歴』タブを追加します。

2. タスクとその実現方法

まず、『アカウント履歴』のシャドーコピーを取ることはできない ということを受け入れる必要があります。それをするには、dll を複数使った複雑なプログラムを書かなければならないでしょう。ただ、テスターの『検証結果』タブには行われた処理の情報がほとんどすべて入っているので、それは必要ありません。

われわれの仕事は実情報を表示することです。Expert Advisor の作業を分析する上で、これはひじょうに便利です。つねにタブを切り替える必要はなくなるのです。

画面にはそれほどスペースがないので、スクロールを実現することはあまり簡単なタスクではありません。直近のイベントを表示するだけにします。

残りは、それを思い出すために、履歴が表示されるサブウィンドウを作成することです。インディケータを作成することは必要です。それをチャートにアタッチしたら、tester.tpl という名前のテンプレートを作成するか、またはテンプレート <expert_name>.tpl 内にインディケータを作成します(インディケータは本稿kら直接ダウンロードできます)。

検証用テンプレートの保存

検証用テンプレートの保存

これからExpert Advisor の準備を始めます。

これもあまりむつかしいことではありません。
-VisualTestingTools.mq4 ファイルを ...\MetaTrader 4\experts\include\という名前のディレクトリに保存します。
-Expert に#include <VisualTestingTools.mq4> 行を追加します。-これでファイルの内容は Expert のコードにインクルードされました。
- Expert の関数 init() および start() にトレード履歴更新を行う関数呼び出しを挿入します。

...
double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1;
 
#include <VisualTestingTools.mq4>
 
int init()
  {
    if(FastEMAPeriod >= SlowEMAPeriod)
        return(-1);
    vTerminalInit();
    vHistoryInit();
    return(0);
  }
 
int start()
  {
    if(FastEMAPeriod >= SlowEMAPeriod)
        return(-1);
    vTerminalRefresh();
    vHistoryRefresh();
 
    int _GetLastError = 0;
...



3. 検証

新しいExpert を検証してみます。このために、ストラテジーテスタウィンドウを開き、Expert のメニューでCrossMACD_DeLuxe_VisualHistory を選択してそのプロパティボタンを押します。

ストラテジーテスタウィンドウ

ストラテジーテスタウィンドウ


Expert はいくつか新しい外部関数を取得しています。それらは VisualTestingTools.mq4 という名前のインクルードファイル内で宣言されます。『ターミナル』タブを制御するものもあれば、『アカウント履歴』タブ用もありますが、ほとんどは共通です。
- TerminalRows -表示される『ターミナル』タブの最大行数TerminalRows = 0 にすれば、ターミナルは更新されません。
- HistoryRows -表示される『アカウント履歴』の最大行数If you make HistoryRows = 0にすれば、アカウント履歴は更新されません。
- BigText -フォントを大きくしたければ真に設定します。
- SignalPoints -未決注文のストップロス、ストッププロフィット、始値フィールドを開始する距離のポイント表示たとえば、SignalPoints = 10 であれば、価格がポジションのストップロスから10ポイントの距離にあれるとき、ストップロスフィールドは色を変えます。
- ShowCancelled -トレード履歴で取り消し済みオーダーを確認したければ、真に設定します。
- ShowExpired -トレード履歴で期限切れの未決注文を確認したければ、真に設定します。
- MainColor -ターミナルとアカウント履歴の見出し色。ターミナルのtradeアカウント情報バー(残高、資産等)も同様です。
- BuyColor -買いポジション情報の色
- BuyOPColor -ターミナルタブの始値フィールド色。この色は、現行価格が逆指値買い注文や指値買い注文の開始レベルに近づくと主要色と入れ替わります。
- BuySLColor -ターミナルタブについては、価格が買いポジションのストップロスレベルに近づくと主要色と入れ替わる色です。アカウント履歴タブについては、買いポジションがストップロスによりクロ―0図されると主要色と入れ替わる色です。
- BuyTPColor -BuySLColor 同様でポジションのテイクプロフィットに適用されます。
- SellOPColor、SellSLColorSellTPColor -同売りポジションに対して。

変数に望みの値を設定して OK を押します。可視化が有効になっているか確認し、検証を開始します。

検証可視化:「ターミナル」ウィンドウと「アカウント履歴」ウィンドウがロードされました。

EA はポジションをオープンし、これが「ターミナル」ウィンドウに表示されています。

ポジションがクローズされるとすぐに、それは「アカウント履歴」に移動し、別のポジションと入れ替わりました。ストップロスフィールドは赤で強調表示されていることに注意します。ポジションはストップロスによってクローズ済みです。

2番目のポジションはテイクプロフィットによってクローズされました。直近のポジションはアカウント履歴の一番上に表示されることに留意します。よって、つねに一番最近のイベントを確認することとなります。

これが数分後のわれわれの仮想ターミナルです。



4. 潜在的問題

私の記事 Testing Visualization: Functionality Enhancementで述べられている問題はvHistoryインディケータにも当てはまります。インディケータがテスターが使用するテンプレート内の2番目のサブウィンドウになければ、アカウント履歴を更新する関数の適切な動作は、明示的に指定されたサブウィンドウ番号によって行われます。

    vHistory_win = WindowFind( "vHistory" );
    if ( IsTesting() ) { vHistory_win = 2; }

5. おわりに

今回はそこに『アカウント履歴』タブを追加します。

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

添付されたファイル |
vHistory.mq4 (0.78 KB)
トレーディングにおける数学:トレード結果の推定方法 トレーディングにおける数学:トレード結果の推定方法
「過去に得た利益は将来の成功を保証するものではない」ということを誰しも解っています。それでも、トレーディングシステムを推定することができるのは大事なことです。本稿ではトレード結果を推定するのに役立つ簡単で便利な方法を取り上げます。
エキスパートアドバイザの取引結果の評価 エキスパートアドバイザの取引結果の評価
この記事では、テスターのレポートに表示されるデータの計算方法や式を提案しています。
ヘッジ EA の検証でストラテジーテスタの限界を打ち破る ヘッジ EA の検証でストラテジーテスタの限界を打ち破る
ストラテジーテスタによってヘッジ Expert Advisors を検証するという考え
テクニカル分析:不可能を可能にする! テクニカル分析:不可能を可能にする!
本稿は疑問に答えます。多くが違うことを示す場面でなぜ不可能が可能になるのか?テクニカル分析推論