【MQL4テクニック】任意のフォルダに目的のファイルが存在するかを確認する方法

MQL4テクニック

mql4にはFileIsExist()関数が用意されていますが、こちらの関数はFilesフォルダ内での検索しかできません。

では、予めiCustom()関数で使用するインジケータがIndicatorsフォルダに存在するかを確認したい!
という場合はどうすればよいでしょうか。

その方法を紹介いたします。

WindowsAPIを使用する

Filesフォルダ以外を参照するような関数はmql4には用意されていないため、WindowsAPIを使用する必要があります。

WindowsAPIで用意されているPathFileExistsW()関数を使用することで、簡単にファイルの検索が可能になります。

サンプルコード(DLLを使用を許可するにチェック)

#import "shlwapi.dll"
  bool PathFileExistsW(string pszPath);
#import


input string indicatorName = "sample";//読み込むサインツール名


int OnInit(){
   
   string fileName = indicatorName + ".ex4";
   string directory = TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL4\\Indicators\\" + fileName;
   
   if(!PathFileExistsW(directory)){
      string message = "File Check error \n\n" + fileName + " が見つかりませんでした。\n該当ファイルをIndicatorsフォルダに配置して下さい。";
      Alert(message);
      return(INIT_FAILED);
   }
   
   return(INIT_SUCCEEDED);
}

TerminalInfoString()関数の引数に [TERMINAL_DATA_PATH]を指定することで、 使用しているMT4が使用しているフォルダのパスを取得します。

ファイルのパスをPathFileExistsW()関数に渡すことで、Indicatorsフォルダ内にあるの目的ファイルの有無が確認できます。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。