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

関数

マーケット情報関数

SymbolInfoInteger 関数

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

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

データ型と構成・戻り値

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

long SymbolInfoInteger(①,②);
bool SymbolInfoInteger(①,②,③);

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

 発生するエラーについては、GetLastError関数で取得することができます。
・4106 — 通貨ペアが「気配値表示」で選択されていない(利用可能な通貨ペアのリストにない)
・4051 — 取得する通貨ペア情報の無効な識別子
・4024 — 内部エラー

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

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

引数 [3]

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


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

使用例

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

SymbolInfoInteger関数を使って通貨ペアのプロパティ情報を取得します。
一部の結果については情報を読み取りやすいようにキャストしています。

コード

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

string symbol = Symbol();

Print("①選択通貨ペア:",                  (bool)    SymbolInfoInteger(symbol, SYMBOL_SELECT));             // 0
Print("②直近のサーバー時間:",            (datetime)SymbolInfoInteger(symbol, SYMBOL_TIME));               // 15
Print("③通貨ペア価格の小数点以下の桁数:",          SymbolInfoInteger(symbol, SYMBOL_DIGITS));             // 17
Print("④スプレッド:",                              SymbolInfoInteger(symbol, SYMBOL_SPREAD));             // 18
Print("⑤約定価格計算モード:",                      SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE));    // 29
Print("⑥取引モード:",                              SymbolInfoInteger(symbol, SYMBOL_TRADE_MODE));         // 30
Print("⑦ストップレベル:",                          SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL));  // 31
Print("⑧取引停止価格幅:",                          SymbolInfoInteger(symbol, SYMBOL_TRADE_FREEZE_LEVEL)); // 32
Print("⑨取引実行モード:",                          SymbolInfoInteger(symbol, SYMBOL_TRADE_EXEMODE));      // 33
Print("⑩スワップ計算方法:",                        SymbolInfoInteger(symbol, SYMBOL_SWAP_MODE));          // 37
Print("⑪3日間ロールオーバー請求曜日:",             SymbolInfoInteger(symbol, SYMBOL_SWAP_ROLLOVER3DAYS)); // 40
Print("⑫変動スプレッド:",                (bool)    SymbolInfoInteger(symbol, SYMBOL_SPREAD_FLOAT));       // 41
Print("⑬選択通貨ペア(気配値表示):",      (bool)    SymbolInfoInteger(symbol, SYMBOL_VISIBLE));            // 76
}

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

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

結果

次の結果の数字は各列挙値を参考にしてください。
⑥取引モード : ENUM_SYMBOL_TRADE_MODE
⑨取引実行モード : ENUM_SYMBOL_TRADE_EXECUTION
⑪3日間ロールオーバー請求曜日: ENUM_DAY_OF_WEEK

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

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

コード

// bool型SymbolInfoInteger関数による通貨ペアプロパティ情報の取得
#property strict
void OnInit() {

long a,b; // bool型SymbolInfoInteger関数の引数③に設定する変数
string symbol = Symbol();

Print("③通貨ペア価格の小数点以下の桁数:", SymbolInfoInteger(symbol, SYMBOL_DIGITS, a)); // 17
Print("④スプレッド:",                     SymbolInfoInteger(symbol, SYMBOL_SPREAD, b)); // 18

Print("③の変数:", a);
Print("④の変数:", b);
}

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

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

結果

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