【MQL4定数】プログラム情報の定数(ENUM_PROGRAM_TYPE)

【辞書】MQLリファレンス

プログラム情報の定数

プログラム情報の定数は、プログラムの情報を取得したいときに使用されます。

主に、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の数値が代入されます。