
MQL4 銘柄・レート情報
MarketInfo()
- できること
- 銘柄の価格・ロット・ストップレベルなどを取得する
- 対応
- MQL4
MarketInfo() とは
MQL4 で、銘柄のいろいろな情報(Bid・Ask、スプレッド、ストップレベル、最小ロット、ロットの刻み幅、1ロットの必要証拠金など)を取得する関数です。ほかの通貨ペアの価格を取るときにも使います。
MarketInfo() の書式と引数
double MarketInfo(string symbol, int type)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。 |
type | int | 必須 | 取得する項目。MODE_BID、MODE_ASK、MODE_POINT、MODE_DIGITS、MODE_SPREAD、MODE_STOPLEVEL(ストップレベル・ポイント)、MODE_MINLOT、MODE_MAXLOT、MODE_LOTSTEP、MODE_TICKVALUE、MODE_TICKSIZE、MODE_MARGINREQUIRED など。 |
戻り値
指定した項目の値(double 型)。MODE_DIGITS などの整数も double で返るので、必要なら (int) でキャストします。
MarketInfo() の使い方(コード例)
double stopLevel = MarketInfo(_Symbol, MODE_STOPLEVEL) * _Point; // 最小距離(価格)
double minLot = MarketInfo(_Symbol, MODE_MINLOT);
double lotStep = MarketInfo(_Symbol, MODE_LOTSTEP);
int spread = (int)MarketInfo(_Symbol, MODE_SPREAD); // ポイント
Print("stoplevel=", stopLevel, " minlot=", minLot, " step=", lotStep, " spread=", spread);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
MarketInfo() の注意点
- 気配値表示にない銘柄を指定すると値が取れず、エラー4106 になります。
- 損切り・利確はストップレベル(MODE_STOPLEVEL × Point)以上、現在値から離す必要があります。
MQL4 と MQL5 の違い
MQL5 には MarketInfo() はありません。SymbolInfoDouble()(Bid・Ask・ロットなど)と SymbolInfoInteger()(桁数・スプレッド・ストップレベルなど)を使います。例:MODE_STOPLEVEL → SymbolInfoInteger(銘柄, SYMBOL_TRADE_STOPS_LEVEL)、MODE_MINLOT → SymbolInfoDouble(銘柄, SYMBOL_VOLUME_MIN)。












