MetaTrader 4でアカウント情報を表示するインジケーター解説

Mike 2013.09.25 14:51 53 0 0
添付ファイル

トレードをする上で、アカウント情報は非常に重要です。MetaTrader 4のインジケーターを使うことで、チャート上に利益、残高、エクイティ、フリーマージン、マージン、マージンレベル%を表示することができます。

インジケーターの紹介

  1. インジケーター1: アカウント情報バーティカル 4.01は、アカウント情報を縦に配置します。
  2. インジケーター2: アカウント情報ホリゾンタル 4.01は、アカウント情報を横に配置します。

アカウント情報の表示・非表示

  • 情報を隠す: アカウント情報のテキスト部分をクリックします。
  • 情報を表示: 'Account Info'というテキストをクリックします。
  • 利益のみを表示: Inputsの値から'true'を選択します。

アカウント情報のヘッダー間のスペースは自動で均等に配置され、フォントの重なりもありません。詳細は以下の推奨事項を参照してください。

情報の表示・非表示の反応は、受信するティックやチャートのリフレッシュに依存します。ティックが少ない市場やクローズドマーケットでは、情報の表示・非表示のクリックが機能しないことがありますが、これはティックやチャートのリフレッシュを待っているためです。オートリフレッシュタイマーのインジケーターがダウンロードに含まれており、1つのチャートにのみオートリフレッシュタイマーを付ける必要があります。このタイマーが全てのチャートにおけるアカウント情報の縦・横のインスタンスをリフレッシュします。

オートリフレッシュの頻度を上げても、最新の機器においてはCPUの負荷への影響は最小限です。例えば、Core Tempというプログラムを使うと、タスクバーにCPU負荷、CPU温度、使用中のRAM%を表示して、プログラムのCPU負荷への影響を監視できます。

アカウント情報: 隠すクリック

アカウント情報: 表示クリック

アカウント情報: 隠すクリック

アカウント情報: 表示クリック

推奨事項

アカウント情報のヘッダー間のスペースを自動で均等に配置する

以下の要件を満たす必要があります:

  1. 連続するアカウントヘッダー間のスペースは均等でなければなりません。
  2. フォントサイズを増減させても、縦または横のフォントの重なりが生じてはいけません。

縦の軸でアカウント情報ヘッダー間に均等にスペースを配置する *

* 「均等なスペース」と言う場合は、「アカウントヘッダー間の均等なスペース」を意味します。

縦に配置されたアカウントヘッダー間のスペースは、OBJPROP_YDISTANCEパラメータの数式に依存します。縦のスペースは、フォントサイズに応じて均等に保たれます。具体的には、以下の通りです:

  1. 連続するヘッダーのOBJPROP_YDISTANCE数式では、フォントサイズに基づいて均等にスペースを保つために、2、4、6、8、10、12のように偶数の配列に従って計算されます。
  2. 縦のフォントの重なりは、各均等なスペースがフォントサイズの変化に比例して増加または減少することで回避されます。
  3. OBJPROP_YDISTANCEの縦の軸のシフトは、対応する入力パラメータの値を加えることで維持されます。

以下のaccount_info_verticalのコードは、この解決策を示しています。

input int Up_Down=10; // 上下の距離 ..........
int OnInit()
 { 
   .......... 
   {
    Up_Down_ML=Up_Down+Font_Size*10;
    Up_Down_M =Up_Down+Font_Size*8;
    Up_Down_FM=Up_Down+Font_Size*6;
    Up_Down_E =Up_Down+Font_Size*4;
    Up_Down_B =Up_Down+Font_Size*2;
    Up_Down_P =Up_Down;
   }
   ..........
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],..........)
 {
  .......... 
  // 残高ヘッダーのYDISTANCE
  ObjectSet("Acc_B_v",OBJPROP_YDISTANCE,Up_Down_B);
  .......... 
  // 利益ヘッダーのYDISTANCE
  ObjectSet("Acc_P_v",OBJPROP_YDISTANCE,Up_Down_P);
  ..........


横の軸でアカウント情報ヘッダー間に均等にスペースを配置する

横に配置されたアカウントヘッダー間のスペースは、OBJPROP XDISTANCEパラメータの数式に依存します。

縦の軸のスペースに関するOBJPROP_YDISTANCEの数式は比較的単純ですが、横の軸ではアカウントのマージン、利益、損失、残高などの変化に応じて、先行するヘッダーの長さの合計を考慮する必要があります。

横の軸の均等なスペースは、以下のように数式に含めることで維持されます。

  1. 連続するヘッダーのBJPROP_XDISTANCEの数式では、前のヘッダーの全ての文字列の長さを合計し、適切なフォントサイズに基づいて乗算します。
  2. 横のフォントの重なりは、各均等なスペースがフォントサイズの変化に比例して増減することで回避されます。
  3. OBJPROP_XDISTANCEの横の軸のシフトは、対応する入力パラメータの値を加えることで維持されます。

以下のaccount_info_horizontalのコードは、この解決策を示しています。

input int Left_Right_P=15; // 左右の距離 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],.........)
 {
  double Spacer_Mult=Font_Size*Spacing*0.1;
  .......... 
  .......... 
  // 利益ヘッダーの文字列長
  int StLenP=StringLen(Acc_P_Header+Acc_Curr+Acc_gap_P+Acc_P_hs);
  .......... 
  // 残高ヘッダーの文字列長
  int StLenB = StringLen(Acc_B_Header+Acc_B_hs);
  .......... 
  .........
  // エクイティヘッダーのXDISTANCE
  ObjectSet("Acc_E_h",OBJPROP_XDISTANCE,(StLenP+StLenB)*Spacer_Mult+Left_Right_P);
  .......... 
  // 残高ヘッダーのXDISTANCE
  ObjectSet("Acc_B_h",OBJPROP_XDISTANCE,StLenP*Spacer_Mult+Left_Right_P);
  .......... 
  // 利益ヘッダーのXDISTANCE
  ObjectSet("Acc_P_h",OBJPROP_XDISTANCE,Left_Right_P);
  ..........
リスト
コメント 0