通貨ペアのプロパティ(double型)を取得 SymbolInfoDouble 関数

関数

マーケット情報関数

SymbolInfoDouble 関数

この関数は、指定した通貨ペアに関するプロパティ情報(double型)を取得します。

この関数で取得する通貨ペアのプロパティ情報の識別子は ENUM_SYMBOL_INFO_DOUBLE 列挙値から選択します。

データ型と構成・戻り値

この関数には 2つの型があります。

double SymbolInfoDouble(①,②);
bool   SymbolInfoDouble(①,②,③);

戻り値は、指定した通貨ペアに関するプロパティ情報を double型 または bool型で返します。

発生するエラーについては、GetLastError関数で取得することができます。

  • 4106 — 通貨ペアが「気配値表示」で選択されていない(利用可能な通貨ペアのリストにない)
  • 4051 — 取得する通貨ペア情報の無効な識別子
  • 4024 — 内部エラー

関数が直近の Tickに関する情報を取得するために使用される場合は SymbolInfoTick関数を使用することをお勧めします。ターミナルが取引口座に接続されているため、単一の情報がまだ表示されていない可能性があります。このような場合、要求した値は不定値になります。

多くの場合、SymbolInfoTick関数を使用するだけで十分です。これにより、ユーザーは、1回の呼び出しで、Ask、Bid、Last、Volume の値と直近の Tickの到着時刻を受け取ることができます。

引数 [3]

SymbolInfoDouble関数は 2~3個の引数で構成されます。

番号引数名データ型単位初期値説明
namestringプロパティ情報を取得する通貨ペア名。
prop_idenum取得するプロパティ情報の識別子。
ENUM_SYMBOL_INFO_DOUBLE から選択します。
long_varlong&指定した通貨ペア情報の値を受け取る double型の変数。
関数が bool型の時に設定します。

使用例

SymbolInfoDouble関数による通貨ペアプロパティ情報の取得

SymbolInfoDouble関数を使って通貨ペアのプロパティ情報を取得します。

コード

// SymbolInfoDouble関数による通貨ペア情報の取得
#property strict
void OnInit() {

Print("①売値:",                   SymbolInfoDouble(Symbol(), SYMBOL_BID));                                        //  1
Print("②買値:",                   SymbolInfoDouble(Symbol(), SYMBOL_ASK));                                        //  4
Print("③1Pointの値:",             SymbolInfoDouble(Symbol(), SYMBOL_POINT));                                      // 16
Print("④決済通貨の基準価格(円):", SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE) / (100 * Point() / 0.001)); // 26
Print("⑤最小変更幅:",             SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE));                            // 27
Print("⑥1ロットの通貨量:",        SymbolInfoDouble(Symbol(), SYMBOL_TRADE_CONTRACT_SIZE));                        // 28
Print("⑦取引最小ロット数:",       SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN));                                 // 34
Print("⑧取引最大ロット数:",       SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX));                                 // 35
Print("⑨ロット数の最小値幅:",     SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP));                                // 36
Print("⑩買いスワップ:",           SymbolInfoDouble(Symbol(), SYMBOL_SWAP_LONG));                                  // 38
Print("⑪売りスワップ:",           SymbolInfoDouble(Symbol(), SYMBOL_SWAP_SHORT));                                 // 39
Print("⑫初期証拠金:",             SymbolInfoDouble(Symbol(), SYMBOL_MARGIN_INITIAL));                             // 42
Print("⑬必要証拠金:",             SymbolInfoDouble(Symbol(), SYMBOL_MARGIN_MAINTENANCE));                         // 43
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

各行の後ろにあるコメントの数値は、引数②の識別子に対応する値です。識別子の代わりにこの値を使うこともできます。

④は決済通貨の基準価格を日本円で表しています。上記の決済通貨はJPY(日本円)です。EURUSDの場合はUSD(米ドル)が決済通貨となるので、この時点でのUSDJPYの価格157.834が表示されることになります。通貨ペアの表示桁数に違いがあるので価格を正確に表示するためには上記のような計算式を組み込んでください。

結果

bool型SymbolInfoDouble関数による通貨ペアプロパティ情報の取得

bool型SymbolInfoDouble関数を使って通貨ペアのプロパティ情報を取得します。bool型の場合、引数③にセットする変数を用意する必要があります。

コード

// bool型SymbolInfoDouble関数による通貨ペア情報の取得
#property strict
void OnInit() {

double a,b; // SymbolInfoDouble関数の引数③に設定する変数

Print("①売値:", SymbolInfoDouble(Symbol(), SYMBOL_BID, a)); // 1
Print("②買値:", SymbolInfoDouble(Symbol(), SYMBOL_ASK, b)); // 4
Print("①の変数:", a);
Print("②の変数:", b);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

各行の後ろにあるコメントの数値は、引数②の識別子に対応する値です。識別子の代わりにこの値を使うこともできます。

結果

タイトルとURLをコピーしました