EAやインジケータの処理にDLLを含んでいる場合、『DLLの使用を許可する』にチェックを入れなければ不具合の原因となってしまいます。
チャートを挿入した時点で正しくチェックをされているかを判別するサンプルコードをご紹介します。
目次
MT4自体(ターミナル)側のDLL許可を確認する
TerminalInfoInteger()関数を使用することで、MT4(ターミナル)に関する様々な情報を取得することが出来ます。
int MQLInfoInteger(int property_id);引数の意味は以下です。
| 引数名 | 詳細 |
|---|---|
| property_id | プロパティIDを指定します。 DLLのチェックを確認する場合は『TERMINAL_DLLS_ALLOWED』 その他のプロパティはこちらから確認できます。 |
インジケータ・またはEA側のDLL許可を確認する
MQLInfoInteger()関数を使用することで、MQL4プログラムに関する様々な情報を取得することが出来ます。
int MQLInfoInteger(int property_id);引数の意味は以下です。
| 引数名 | 詳細 |
|---|---|
| property_id | プロパティIDを指定します。 DLLのチェックを確認する場合は『MQL_DLLS_ALLOWED』 その他のプロパティはこちらから確認できます。 |
サンプルコード(コピペでOK)
DLLがチェックされていない場合はアラートを表示して、EA,インジケータが挿入されるのを防ぎます。
int OnInit(){
if(!TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)){
Alert("DLL not allowed\n\nMT4の設定から「DLLの使用を許可する」をチェックしてください。");
return(INIT_FAILED);
}
if (MQLInfoInteger(MQL_DLLS_ALLOWED) != 1) {
Alert("DLL not allowed\n\nEAの設定から「DLLの使用を許可する」をチェックしてください。");
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}