プログラム情報の定数
プログラム情報の定数は、プログラムの情報を取得したいときに使用されます。
主に、MQLInfoInteger関数で使用されます。
それぞれ、MQLInfoInteger関数の MQL_PROGRAM_TYPEの返り値として使用されます。
プログラム情報の定数(ENUM_PROGRAM_TYPE)
| 定数 | 説明 |
| PROGRAM_SCRIPT | 実行中のプログラムがスクリプト |
| PROGRAM_EXPERT | 実行中のプログラムがEA |
| PROGRAM_INDICATOR | 実行中のプログラムがインジケータ |
プログラム情報の定数の使い方
主に、MQLInfoInteger関数で使用されます。
それぞれ、MQLInfoInteger関数の MQL_PROGRAM_TYPEの返り値として使用されます。
MQL_PROGRAM_TYPE型の変数を作り、その変数にMQLInfoIntegerの返り値を代入しましょう。
例えば、以下のように使用します。
MQLInfoIntegerの返り値を ENUM_PROGRAM_TYPE型にキャスト(型変換)し、変数に代入しています。
//MQLInfoInteger関数
//プログラムがスクリプト・EA・インジケータのどれなのか取得
ENUM_PROGRAM_TYPE programType = (ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
返り値は ENUM_PROGRAM_TYPE型です。
サンプルプログラム
ENUM_PROGRAM_TYPEを使って、実行中のプログラムの種類を判定するサンプルプログラムです。
スクリプトとしてチャートにドラッグ&ドロップすると、プログラムの種類がアラートで表示されます。
//+------------------------------------------------------------------+
//| サンプル:プログラム情報の定数(ENUM_PROGRAM_TYPE) |
//+------------------------------------------------------------------+
void OnStart()
{
// MQLInfoInteger関数でプログラムの種類を取得
ENUM_PROGRAM_TYPE programType = (ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
// プログラムの種類に応じてメッセージを表示
switch(programType)
{
case PROGRAM_SCRIPT:
Alert("このプログラムはスクリプトです。");
break;
case PROGRAM_EXPERT:
Alert("このプログラムはEA(エキスパートアドバイザー)です。");
break;
case PROGRAM_INDICATOR:
Alert("このプログラムはインジケータです。");
break;
default:
Alert("プログラムの種類を判定できませんでした。");
break;
}
}
上記のサンプルでは、MQLInfoInteger関数にMQL_PROGRAM_TYPEを渡し、返り値をENUM_PROGRAM_TYPE型にキャストしています。
その後、switch文で定数ごとに処理を分岐させ、プログラムの種類をアラートで表示しています。
【補足】プログラム情報の定数の列挙型(ENUM_PROGRAM_TYPE)
プログラム情報の定数は、ENUM_PROGRAM_TYPEという列挙型に含まれています。
列挙型は、定数群をひとまとめにしたものです。
以下のように使います。
ENUM_PROGRAM_TYPE programType = PROGRAM_SCRIPT;上記のようにプログラムすると、programType変数に PROGRAM_SCRIPTの数値が代入されます。





