English Русский 中文 Español Deutsch Português
テストビジュアライゼーション:口座状況チャート

テストビジュアライゼーション:口座状況チャート

MetaTrader 4テスター | 16 3月 2016, 12:03
611 0
Andrey Khatimlianskii
Andrey Khatimlianskii

はじめに

よりたくさんの情報が得られる形でビジュアライゼーションモード中のテスト時に口座状況に関しての情報を見たいと多くの方が思われていると思います。
最後のポジションを持つ前、自由なマージンの量はどれほどだったのでしょうか?バランスカーブはどの方向に向かっているのでしょうか?最終日において資産の縮小はどれほどだったでしょうか?

これらの質問のいくつかは以下の記事にてすでに議論されています:Testing Visualization: Functionality EnhancementTesting Visualization: Trade Historyしかし、口座の情報をより早く簡単に確認するためのツールについては記載されていません。この記事では、ビジュアライゼーションモード中のテスト時に口座状況のチャートを描画するプログラムを紹介します。例として、バランス、エクイティチャートを用います。この記事は、その他の口座の属性のチャートを構築する方法も含んでいます。



簡単でしょうか?

インジケーターを記述するよりも、残高を表示する方が簡単では、と考えるかもしれません。唯一のバッファーは、バーの受理時のあまり知られていないBalance値により満たされます。これがそのアルゴリズムです。
しかし、一つ問題があります:テストビジュアライゼーションチャートに表示されているそのインジケータは、テスト中のアカウントの状況へのアクセス権を持ちません。この情報に応じるすべての関数は、実際のアカウントの値を返します。
この記事では、この「特異性」を避けれるようになります。このため以下を行う必要があります:

  • エキスパートアドバイザーから口座状況を受け取る;
  • それをインジケーターに渡し、視覚化する。

関連データを渡すために、ターミナルのグローバル変数を用い、視覚化のためにカスタムインジケーターの標準関数を用います。



簡単です!

テストされるエキスパートアドバイザーにグローバル変数にBalanceを保存するコードを追加する必要があります。関数start()の最初に一行加えるだけです。

int start()
{
   // saving the last value of the balance into the global variable
   GlobalVariableSet( "vGrafBalance", AccountBalance() );
 
   // Expert Advisor code
 
   return(0);
}

そのインジケーターコードは全く難しくありません:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
 
double balance[];
 
int init()
{
    IndicatorShortName( "vGrafBalance" );
    IndicatorDigits( 2 );
 
    SetIndexStyle( 0, DRAW_LINE );
    SetIndexBuffer( 0, balance );
    SetIndexLabel( 0, "Balance" );
}
int start()
{
    balance[0] = GlobalVariableGet( "vGrafBalance" );
    return(0);
}

これで全てです!インジケーター、新しいエキスパートアドバイザーをコンパイルし、テストを開始できます!

Startボタンをクリックし、インジケーターをチャートにくっつけると、以下のようなものをご覧になれます:




バランスカーブが実際の変化を反映しています。各トレードのクローズ時にその値が変化しています。



他に何ができるでしょうか?

他のグラフは同じように構築されます:

  • 必要なグローバル変数の値を更新する行をエキスパートアドバイザーに追加します;
  • この変数の値をよみ、チャートに反映するシンプルなインジケーターを作成します。

それぞれの特徴に対して、変数名はユニークである必要があります。つまり、その他の変数名と同一ではいけません。
さらに、インジケーターに読み取られるその変数の名前と同一である必要があります。


二つ目の例は、エクイティチャートをバランスチャートにどのように追加するかについて示しています。
エキスパートアドバイザーのコード:

int start()
{
   // saving the last value of the balance into the global variable
   GlobalVariableSet( "vGrafBalance", AccountBalance() );
   // saving the last value of the equity into the global variable 
   GlobalVariableSet( "vGrafEquity", AccountEquity() );
 
   // Expert Advisor code
 
   return(0);
}

インジケーターコード:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
 
double equity[];
 
int init()
{
    IndicatorShortName( "vGrafEquity" );
    IndicatorDigits( 2 );
 
    SetIndexStyle( 0, DRAW_LINE );
    SetIndexBuffer( 0, equity );
    SetIndexLabel( 0, "Equity" );
}
int start()
{
    equity[0] = GlobalVariableGet( "vGrafEquity" );
    return(0);
}

使用例:




二つの特徴の相関関係を見るため一つインジケーターを別のものにくっつけても良いでしょう:




まとめ

この記事は、アカウント状況を視覚化するインジケータの作成プロセスを記載しました。バランス・エクイティインジケーターという最もシンプルなインジケーターを分析しました。
他のグラグも作成できます:利益を生むトレードの確率、予想される支払い、平均ロット、1ポジションの利益、などすべてが可能です。

それらの情報は美しく示すことができます!

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

30のインジケーターとオシレーターの比較分析 30のインジケーターとオシレーターの比較分析
この記事は、トレーディングのための効果的なインデックスパッケージの作成を目的として30のインジケーターとオシレーターの比較分析を行うエキスパートアドバイザーについてです。
マーチンゲールとは何で、試用するのは妥当なのか? マーチンゲールとは何で、試用するのは妥当なのか?
この記事は、マーチンゲールシステムを詳しく説明すると同時に、「マーチンゲールを試用することは妥当なのか?」という質問に答えるために必要な正確な数学的計算を紹介します。
拡張MACD分析に基づいたトレーダーアシスタント 拡張MACD分析に基づいたトレーダーアシスタント
トレーダーアシスタントが、いかなるタイムフレームでの実際のトレーディングの最後の3つのバーにおいて、MACDステータスの拡張分析に基づいて、オープンポジションの判断を手伝います。バックテスティングにも使用できます。
ZUP - ペサベントパターンのZigZag パート2 ZUP - ペサベントパターンのZigZag パート2
ZUP - ペサベントパターンのZigZag パート2 - 組み込みツールの詳細