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

関数

マーケット情報関数

SymbolInfoString 関数

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

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

データ型と構成・戻り値

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

string SymbolInfoString(①,②);
bool   SymbolInfoString(①,②,③);

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

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

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

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

引数 [3]

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

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

使用例

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

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

コード

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

string symbol = "USDCHF";

Print("①通貨ペアの説明:",     SymbolInfoString(symbol, SYMBOL_DESCRIPTION));     // 20
Print("②通貨ペアツリーパス:", SymbolInfoString(symbol, SYMBOL_PATH));            // 21
Print("③通貨ペアの基軸通貨:", SymbolInfoString(symbol, SYMBOL_CURRENCY_BASE));   // 22
Print("④通貨ペアの決済通貨:", SymbolInfoString(symbol, SYMBOL_CURRENCY_PROFIT)); // 23
Print("⑤証拠金通貨:",         SymbolInfoString(symbol, SYMBOL_CURRENCY_MARGIN)); // 24
}

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

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

結果

 ②の通貨ペアのツリーパスとは、MT4のメニューバーの「ツール」→「ヒストリーセンター」から確認できる各通貨ペアが格納されているパスのことです。

「③通貨ペアの基軸通貨」では、エラーで間違った結果が出力されることがあります。例えば、引数①に”USDJPY”、”GBPJPY” 等の対日本円の通貨ペアを使った場合です。「③通貨ペアの基軸通貨」で「EUR」と出力されます。原因は不明です。この関数を使用する際はご注意ください。
確認システムのバージョン:
 MT4   :Version:4.00 build 1355 16 Mar 2022
 MetaEditor:Version:5.00 build 2397 16 Mar 2022

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

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

コード

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

string a,b; // SymbolInfoString関数の引数③に設定する変数
string symbol = "USDCHF";

Print("①通貨ペアの説明:",     SymbolInfoString(symbol, SYMBOL_DESCRIPTION, a)); // 20
Print("②通貨ペアツリーパス:", SymbolInfoString(symbol, SYMBOL_PATH, b));        // 21

Print("①の変数:", a);
Print("②の変数:", b);
}

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

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

結果

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