FXの自動売買EAを設定するときに、よくチェックを入れる「DLLの使用を許可する」という項目。
よくわからないままチェックしていたけど、DLLの意味や使用を許可することの安全性について調べてみました。

知っておいて損はないよね
「DLLの使用を許可する」という項目はMT4のココにある
「DLLの使用を許可する」という項目がMT4のどこにあるのかというと・・・
EAを設定しているMT4のチャート画面を開きます。
チャートの上で右クリックすると以下のような画面になるので、「エキスパートアドバイザ」→「設定」を左クリックします。
次の画面で「DLLの使用を許可する」という項目が現れました。
EAの設定時には、ここにチェックを入れる場合が多いのですが、DLLの意味がわかりません。
また、「セイフティー」という枠組みの中にこの項目があるのも気になります。

ほんまにチェック入れても大丈夫なん?
DLLとは?
ではDLLの意味を見てみましょう。
DLLとは、Dynamic Link Libraryの頭文字です。
DLLの意味は、Windows(ウインドウズ)用の複数のプログラムが同時に利用できるライブラリー(小さなプログラムやデータなどのリソース)のことです。
例えば、「印刷する」という作業は、どんなプログラムを使っていても必要な場合が多いですよね。
DLLを利用できなかった場合には、「印刷する」という一連の動作をプログラムの一部に組み込む必要があります。
パソコンにインストールされているすべてのプログラム(アプリケーション)が、ムダに同じようなコードを書いてしまう羽目になります。
そんなことをしなくても、「印刷する」という基本的な作業については、共有化されたコード(プログラム)を呼び出せば、プログラムの処理スピードを省略できます。
しかも開発者の手間が省けるわけですね。
「DLLの使用を許可する」のは安全なのか?
色んな意味で負荷を軽減できそうなDLLですが、「DLLの使用を許可する」のは本当に安全なのでしょうか?
MT4の開発元のフォーラムには、DLL(ライブラリー)を呼び出すときの順番が記載されています。
すでに別のEAなどによってライブラリーが呼び出されている場合は、それを活用しますが、そうでない場合は以下の順番にディレクトリを読んでいくそうです。
- Directory, from which the module importing dll was started. The module here is an Expert Advisor, a script, an indicator or EX4 library;
- Directory terminal_data_directory\MQL4\Libraries (TERMINAL_DATA_PATH\MQL4\Libraries);
- Directory, from which the MetaTrader 4 client terminal was started;
- System directory;
- Windows directory;
- Current directory;
- Directories listed in the PATH system variable.
参照元:MQL4 Reference >> MQL4 programs >> Call of Imported Functions
設定したEA(エキスパートアドバイザ)が存在するフォルダ(ディレクトリ)のDLLを呼び出すことなどを考えると、悪意あるプログラマーが何等かのコードを仕込んであなたのパソコンに害を与えることはできそうです。

怪しいEAをダウンロードした時点でアウトやな
ということで、魅力的に見えるEAであっても、発行元・開発元に少しでも不信感を感じたなら、ダウンロードしないこと。
怪しげなサイトからEAをダウンロードしないこと。
海外のサイトなどでは、ある程度の経験値がないと怪しいかどうかの判断ができないかもしれません。
国内であっても油断はできませんが、むやみにEAをダウンロードしたり、「DLLの使用を許可する」にチェックを入れたりしないことです。
特にEAについては、EAの名前や開発者・販売者に関する情報を調査してから、導入することを心がけたいものですね。

欲望に振り回されるとすべてを失いかねません。。。
コメント