【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フォルダ内にあるの目的ファイルの有無が確認できます。