【MQL4定数】マーケット情報の定数​(MODE)

【辞書】MQLリファレンス

マーケット情報の定数​(MODE)

マーケット情報の定数は、マーケット情報を取得するときに使用します。

主に、MarketInfo関数で使います。

マーケット情報には、自動売買を作る上で、かなり重要な情報があります。

重要な情報を取得するテンプレートを作っておくと良いでしょう。

 

それぞれ、MarketInfo関数のtype引数の入力値として、マーケット情報の定数を使うことができます。

 

マーケット情報の定数​(MODE)

定数説明
MODE_LOW当日の安値
MODE_HIGH当日の高値
MODE_TIME最新のサーバー時間
MODE_BID最新の売値
MODE_ASK最新の買値
MODE_POINT通貨ペアのポイント
MODE_DIGITS通貨ペアの小数点桁数
MODE_SPREAD通貨ペアのスプレッド(0.1pips単位)
MODE_STOPLEVEL通貨ペアのストップレベル(0.1pips単位)
MODE_LOTSIZE1ロットあたりの通貨数
MODE_TICKVALUE通貨ペアのポイント
MODE_TICKSIZE通貨ペアのtick値(pips単位)
MODE_SWAPLONG通貨ペアの買いスワップ
MODE_SWAPSHORT通貨ペアの売りスワップ
MODE_STARTINGマーケット開始日
MODE_EXPIRATIONマーケット期日
MODE_TRADEALLOWEDトレード可能な通貨ペア
MODE_MINLOT最小ロット数
MODE_LOTSTEPロットステップ
MODE_MAXLOT最大ロット数
MODE_SWAPTYPEスワップの計算方法
0:FX, 1:CFD, 2:先物, 3:CFDインデックス
MODE_PROFITCALCMODE損益計算モード
0:FX, 1:CFD, 2:先物
MODE_MARGINCALCMODE証拠金計算モード
0:FX, 1:CFD, 2:先物, 3:CFDインデックス
MODE_MARGININIT1ロットの初期証拠金
MODE_MARGINMAINTENANCE1ロットの初期証拠金(計算モード)
MODE_MARGINHEDGED1ロットの必要証拠金
MODE_MARGINREQUIRED1ロットの余剰証拠金
MODE_FREEZELEVEL注文凍結レベル(pips単位)
MODE_CLOSEBY_ALLOWED両建て同時決済の可否

 

マーケット情報の定数​(MODE)の使い方

主に、MarketInfo関数で使います。

それぞれ、MarketInfo関数のtype引数の入力値として、マーケット情報の定数を使うことができます。

上記の定数を入力しましょう。

すると、その定数に対応したマーケット情報を取得することができます。

例えば、以下のように使用します。

  //MarketInfo関数
  //最大ロット数を取得する
   double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

 

プログラム例:主要なマーケット情報を一括取得する

以下は、MarketInfo関数とマーケット情報の定数を使って、主要なマーケット情報をまとめて取得・表示するサンプルプログラムです。

//+------------------------------------------------------------------+
//| マーケット情報取得スクリプト                                       |
//+------------------------------------------------------------------+
void OnStart()
{
   string sym = Symbol(); // 現在の通貨ペア

   // 価格情報
   double bid       = MarketInfo(sym, MODE_BID);
   double ask       = MarketInfo(sym, MODE_ASK);
   double high      = MarketInfo(sym, MODE_HIGH);
   double low       = MarketInfo(sym, MODE_LOW);

   // 通貨ペアの基本情報
   double point     = MarketInfo(sym, MODE_POINT);
   int    digits    = (int)MarketInfo(sym, MODE_DIGITS);
   double spread    = MarketInfo(sym, MODE_SPREAD);
   double stopLevel = MarketInfo(sym, MODE_STOPLEVEL);

   // ロット関連情報
   double lotSize   = MarketInfo(sym, MODE_LOTSIZE);
   double minLot    = MarketInfo(sym, MODE_MINLOT);
   double maxLot    = MarketInfo(sym, MODE_MAXLOT);
   double lotStep   = MarketInfo(sym, MODE_LOTSTEP);

   // スワップ情報
   double swapLong  = MarketInfo(sym, MODE_SWAPLONG);
   double swapShort = MarketInfo(sym, MODE_SWAPSHORT);

   // 証拠金情報
   double marginReq = MarketInfo(sym, MODE_MARGINREQUIRED);
   double freezeLvl = MarketInfo(sym, MODE_FREEZELEVEL);

   // tick情報
   double tickValue = MarketInfo(sym, MODE_TICKVALUE);
   double tickSize  = MarketInfo(sym, MODE_TICKSIZE);

   // トレード可否
   double tradeOK   = MarketInfo(sym, MODE_TRADEALLOWED);

   // ログ出力
   Print("========== マーケット情報 [", sym, "] ==========");
   Print("【価格情報】");
   Print("  Bid(売値)       : ", DoubleToStr(bid, digits));
   Print("  Ask(買値)       : ", DoubleToStr(ask, digits));
   Print("  当日高値          : ", DoubleToStr(high, digits));
   Print("  当日安値          : ", DoubleToStr(low, digits));

   Print("【通貨ペア基本情報】");
   Print("  ポイント          : ", DoubleToStr(point, digits));
   Print("  小数点桁数        : ", digits);
   Print("  スプレッド        : ", spread, "(0.1pips単位)");
   Print("  ストップレベル    : ", stopLevel, "(0.1pips単位)");

   Print("【ロット関連】");
   Print("  1ロットの通貨数   : ", lotSize);
   Print("  最小ロット        : ", minLot);
   Print("  最大ロット        : ", maxLot);
   Print("  ロットステップ    : ", lotStep);

   Print("【スワップ情報】");
   Print("  買いスワップ      : ", swapLong);
   Print("  売りスワップ      : ", swapShort);

   Print("【証拠金・その他】");
   Print("  1ロット必要証拠金  : ", marginReq);
   Print("  注文凍結レベル    : ", freezeLvl);
   Print("  Tick値            : ", tickValue);
   Print("  Tickサイズ        : ", DoubleToStr(tickSize, digits));
   Print("  トレード可否      : ", (tradeOK == 1) ? "可能" : "不可");
   Print("==============================================");
}

 

このスクリプトを実行すると、エキスパートタブに現在の通貨ペアの主要なマーケット情報が一覧で表示されます。

自動売買を開発する際に、ロット計算やストップレベルの確認などで頻繁に使用する情報ばかりですので、テンプレートとして活用してください。