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個の引数で構成されます。
番号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | name | string | - | - | プロパティ情報を取得する通貨ペア名。 |
② | prop_id | enum | - | - | 取得するプロパティ情報の識別子。 ENUM_SYMBOL_INFO_STRING から選択します。 |
③ | long_var | long& | - | - | 指定した通貨ペア情報の値を受け取る 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);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
各行の後ろにあるコメントの数値は、引数②の識別子に対応する値です。識別子の代わりにこの値を使うこともできます。