【MQL4定数】MQLプログラム実行設定を取得するための定数:Integer型(ENUM_MQL_INFO_INTEGER)

【辞書】MQLリファレンス

MQLプログラム実行設定を取得するための定数:Integer型

MQLプログラムの設定の定数:Integer型は、MQLプログラムに設定されている状態を取得するときに使用します。

主に、MQLInfoInteger関数で使用されます。

それぞれ、MQLInfoInteger関数の property_id引数の入力値として使用されます。

またMQLInfoInteger関数は、入力する値によって、返り値の型が異なります。

 

MQLプログラム実行設定を取得するための定数:Integer型(ENUM_MQL_INFO_INTEGER)

定数返り値の型説明
MQL_CODEPAGECP_プログラムから出力されたコードページ
MQL_PROGRAM_TYPEENUM_PROGRAM_TYPEプログラムの種類
MQL_DLLS_ALLOWEDboolDLLの許可
MQL_TRADE_ALLOWEDboolトレードの許可
MQL_SIGNALS_ALLOWEDboolシグナルの許可
MQL_DEBUGboolデバッグモード
MQL_PROFILERboolプロファイラモード
MQL_TESTERboolテストモード
MQL_OPTIMIZATIONbool最適化モード
MQL_VISUAL_MODEboolビジュアルモード
MQL_FRAME_MODEboolフレームモード
MQL_LICENSE_TYPEENUM_LICENSE_TYPEライセンスタイプ

 

MQLプログラム実行設定を取得するための定数:Integer型の使い方

主に、MQLInfoInteger関数で使用されます。

それぞれ、MQLInfoInteger関数の property_id引数の入力値として使用されます。

例えば、以下のように使用します。

  //MQLInfoInteger関数
  //DLLの許可設定を取得
   bool mqlInfoInteger = MQLInfoInteger( MQL_DLLS_ALLOWED ); 

 

返り値の型は 入力する定数によって変わります。

 

サンプルプログラム

以下は、ENUM_MQL_INFO_INTEGERの各定数を使ってMQLプログラムの実行設定情報を取得し、エキスパートログに出力するサンプルプログラムです。

//+------------------------------------------------------------------+
//| ENUM_MQL_INFO_INTEGER サンプルプログラム                          |
//+------------------------------------------------------------------+
void OnStart()
{
   // コードページを取得
   int codePage = (int)MQLInfoInteger(MQL_CODEPAGE);
   Print("コードページ: ", codePage);

   // プログラムの種類を取得
   ENUM_PROGRAM_TYPE programType = (ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
   string programTypeStr = "";
   switch(programType)
   {
      case PROGRAM_SCRIPT:    programTypeStr = "スクリプト";          break;
      case PROGRAM_EXPERT:    programTypeStr = "エキスパートアドバイザー"; break;
      case PROGRAM_INDICATOR: programTypeStr = "インジケーター";       break;
      default:                programTypeStr = "不明";                break;
   }
   Print("プログラムの種類: ", programTypeStr);

   // DLLの許可設定を取得
   bool dllsAllowed = (bool)MQLInfoInteger(MQL_DLLS_ALLOWED);
   Print("DLLの許可: ", dllsAllowed ? "許可" : "不許可");

   // トレードの許可設定を取得
   bool tradeAllowed = (bool)MQLInfoInteger(MQL_TRADE_ALLOWED);
   Print("トレードの許可: ", tradeAllowed ? "許可" : "不許可");

   // シグナルの許可設定を取得
   bool signalsAllowed = (bool)MQLInfoInteger(MQL_SIGNALS_ALLOWED);
   Print("シグナルの許可: ", signalsAllowed ? "許可" : "不許可");

   // デバッグモードかどうかを取得
   bool isDebug = (bool)MQLInfoInteger(MQL_DEBUG);
   Print("デバッグモード: ", isDebug ? "ON" : "OFF");

   // プロファイラモードかどうかを取得
   bool isProfiler = (bool)MQLInfoInteger(MQL_PROFILER);
   Print("プロファイラモード: ", isProfiler ? "ON" : "OFF");

   // テストモードかどうかを取得
   bool isTester = (bool)MQLInfoInteger(MQL_TESTER);
   Print("テストモード: ", isTester ? "ON" : "OFF");

   // 最適化モードかどうかを取得
   bool isOptimization = (bool)MQLInfoInteger(MQL_OPTIMIZATION);
   Print("最適化モード: ", isOptimization ? "ON" : "OFF");

   // ビジュアルモードかどうかを取得
   bool isVisualMode = (bool)MQLInfoInteger(MQL_VISUAL_MODE);
   Print("ビジュアルモード: ", isVisualMode ? "ON" : "OFF");

   // フレームモードかどうかを取得
   bool isFrameMode = (bool)MQLInfoInteger(MQL_FRAME_MODE);
   Print("フレームモード: ", isFrameMode ? "ON" : "OFF");

   // ライセンスタイプを取得
   ENUM_LICENSE_TYPE licenseType = (ENUM_LICENSE_TYPE)MQLInfoInteger(MQL_LICENSE_TYPE);
   string licenseTypeStr = "";
   switch(licenseType)
   {
      case LICENSE_FREE:  licenseTypeStr = "フリー";  break;
      case LICENSE_DEMO:  licenseTypeStr = "デモ";    break;
      case LICENSE_FULL:  licenseTypeStr = "フル";    break;
      case LICENSE_TIME:  licenseTypeStr = "期限付き"; break;
      default:            licenseTypeStr = "不明";    break;
   }
   Print("ライセンスタイプ: ", licenseTypeStr);
}

このサンプルプログラムでは、ENUM_MQL_INFO_INTEGERに含まれる全ての定数を使い、MQLInfoInteger関数でそれぞれの値を取得しています。

返り値の型が定数によって異なるため、適切な型にキャストして使用している点がポイントです。

 

【補足】MQLプログラム実行設定を取得するための定数:Integer型の列挙型(ENUM_MQL_INFO_INTEGER)

MQLプログラム実行設定を取得するための定数:Integer型は、ENUM_MQL_INFO_INTEGER​という列挙型に含まれています。

列挙型は、定数群をひとまとめにしたものです。

以下のように使います。

ENUM_MQL_INFO_INTEGER mqlInfoInteger = MQL_DLLS_ALLOWED;

上記のようにプログラムすると、mqlInfoInteger変数に MQL_DLLS_ALLOWEDの数値が代入されます。