
MQL4MQL5 銘柄・レート情報
SymbolInfoDouble()
- できること
- 銘柄の Bid・Ask・ロット・ポイントなど小数の情報を取得する
- 対応
- MQL4・MQL5
SymbolInfoDouble() とは
銘柄の小数の情報(現在の Bid・Ask、ポイントの大きさ、最小ロット・最大ロット・刻み幅、ティックの価値など)を取得する関数です。MQL5 で現在の価格を取る基本の関数で、MQL4 でも使えます。
SymbolInfoDouble() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
double SymbolInfoDouble(
string name,
ENUM_SYMBOL_INFO_DOUBLE prop_id
)
bool SymbolInfoDouble(
string name,
ENUM_SYMBOL_INFO_DOUBLE prop_id,
double &double_var
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
name | string | 必須 | 銘柄名。 |
prop_id | ENUM_SYMBOL_INFO_DOUBLE | 必須 | 取得する項目。SYMBOL_BID、SYMBOL_ASK、SYMBOL_POINT、SYMBOL_VOLUME_MIN(最小ロット)、SYMBOL_VOLUME_MAX、SYMBOL_VOLUME_STEP(刻み幅)、SYMBOL_TRADE_TICK_VALUE、SYMBOL_TRADE_TICK_SIZE など。 |
double_var | double & | 必須 | 2つ目の書き方で、値を受け取る変数。 |
戻り値
1つ目の書き方は値そのもの(取得できないと 0)。2つ目の書き方は成功したら true を返し、値は double_var に入ります。
SymbolInfoDouble() の使い方(コード例)
MQL4・MQL5 共通
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double minL = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
Print("Ask=", ask, " Bid=", bid, " 最小ロット=", minL, " 刻み=", step);
// 取得に成功したか確認する書き方
double usdjpyBid;
if(!SymbolInfoDouble("USDJPY", SYMBOL_BID, usdjpyBid))
Print("USDJPY の価格が取れません error=", GetLastError());OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
SymbolInfoDouble() の注意点
- ほかの通貨ペアの情報を取るときは、その銘柄が気配値表示に入っている必要があります。入っていなければ SymbolSelect(銘柄, true) で追加します。
- 桁数(SYMBOL_DIGITS)・スプレッド(SYMBOL_SPREAD)・ストップレベル(SYMBOL_TRADE_STOPS_LEVEL)は整数なので SymbolInfoInteger() で取得します。
MQL4 と MQL5 の違い
MQL4 の Ask・Bid(定義済み変数)や MarketInfo(銘柄, MODE_ASK) の代わりに使います。MQL4 でも使えるので、両方で動くコードを書くときに便利です。












