【MQL4勉強プログラミング】通貨ペアに関する様々なマーケット情報を取得する方法!

MarketInfo()関数は、「気配値表示ウィンドウ」に表示されている通貨ペアに関する様々なマーケット情報を取得するために使用します。

MarketInfo()関数は、以下のように定義されています。

double MarketInfo(
string symbol,
int type
);

各引数の意味は、以下のとおりです。

  • string symbol
    マーケット情報を取得したい通貨ペア名を指定します。
    例えば、「”USDJPY”」等と記述します(通貨ペアの指定は、気配値表示ウィンドウに表示されているとおりに記述します。)。
    特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアのマーケット情報を取得したい場合には、「Symbol()」と記述します。
    Symbol()関数の詳細については「こちら」を参照してください。
  • int type
    以下の表に従って、取得したいマーケット情報を指定します。

    種 類
    定 数
    取得される情報
    MODE_LOW
    日足の安値
    MODE_HIGH
    日足の高値
    MODE_TIME
    Tick最終更新時間(サーバー時間)
    MODE_BID
    最新のビッド値
    MODE_ASK
    10
    最新のアスク値
    MODE_POINT
    11
    ポイント(提示レートの最少変動数)
    MODE_DIGITS
    12
    提示レートの小数点以下の桁数
    MODE_SPREAD
    13
    スプレッド(ポイント単位)
    MODE_STOPLEVEL
    14
    ストップレベル(ポイント単位)
    MODE_LOTSIZE
    15
    基本通貨でのロットサイズ
    MODE_TICKVALUE
    16
    ティックバリュー(口座資金が1ロット当たりいくら変動するかを示す値)
    MODE_TICKSIZE
    17
    直前に動いたティック幅(ポイント単位)
    MODE_SWAPLONG
    18
    買いポジションのスワップポイント
    MODE_SWAPSHORT
    19
    売りポジションのスワップポイント
    MODE_STARTING
    20
    マーケット開始日時
    MODE_EXPIRATION
    21
    マーケット有効日時
    MODE_TRADEALLOWED
    22
    トレードが許可されているか否か
    MODE_MINLOT
    23
    最少取引ロット数
    MODE_LOTSTEP
    24
    ロットの単位
    例えば、「0.01」刻みでロット数を指定できれば、「0.01」を返す
    MODE_MAXLOT
    25
    最大取引ロット数
    MODE_SWAPTYPE
    26
    スワップの計算方法
    0:ポイント単位
    1:基準通貨単位
    2:百分率
    3:証拠金通貨単位
    MODE_PROFITCALCMODE
    27
    利益計算モード
    0:為替
    1:CFD
    2:先物
    MODE_MARGINCALCMODE
    28
    証拠金計算モード
    0:為替
    1:CFD
    2:先物
    3:インデックス
    MODE_MARGININIT
    29
    1ロット当たりに必要となる基準証拠金
    MODE_MARGINMAINTENANCE
    30
    1ロット当たりに必要となる維持証拠金
    MODE_MARGINHEDGED
    31
    1ロットの両建てに必要となる証拠金
    MODE_MARGINREQUIRED
    32
    1ロット当たりに必要となる余剰証拠金
    MODE_FREEZELEVEL
    33
    注文のフリーズレベル(ポイント単位)
    執行価格がフリーズレベルに定義された範囲内にある場合、注文の変更・取消し・決済はなされない
    MODE_CLOSEBY_ALLOWED
    34
    OrderCloseBy()関数の使用が許可されているか否か

戻り値

気配値表示ウィンドウに表示されている通貨ペアに関する様々なマーケット情報が返されます。

EA等を適用している通貨ペアに関する様々なマーケット情報の一部は、定義済み変数に格納されています。

具体例

  • 特定の通貨ペアの少数点以下の桁数を取得したい場合は、以下のように記述します。

double Symbol_Digits = MarketInfo(“USDJPY”,MODE_DIGITS);
  • EAを稼動させる通貨ペアのスプレッドを取得したい場合は、以下のように記述します。

double Symbol_Spread = MarketInfo(Symbol(),MODE_SPREAD);