DLLの設定



MT4では、EAがDLLを使っていることがあります。
DLLを使っているEAには、DLLファイルが付属している物と、Windowsに標準で装備されているDLLを使っている物のがあります。

EAにDLLファイルが付属されている場合は、MT4にDLLファイルを入れる必要があります。

Windowsに装備されているDLLを使っている場合はDLLファイルをMT4に入れる作業などは必要ありません。

GogoJungle(旧fx-on)で販売しているEAはweb認証でWindowsに装備されているDLLを使っているようなので「DLLの使用を許可する」にチェックを入れる必要があります。

 

MT4にDLLファイルを入れる方法

EAに付属されているDLLファイルをMT4に入れる方法を説明します。

EAにDLLファイルが付属されている場合は、「.ex4」ファイルの他に「.dll」ファイルが付属されています。

画像は、今回の説明用に作った「Test.ex4」と「Test.dll」です。

「Test.dll」もフォルダの中に入れれば良いのですが、EAによって入れる場所が違うので、付属の説明書などを読んで指定場所に入れてください。

ここでは、一番多いと思われる場所で説明します。

 

MT4のメニューにある「ファイル」をクリックします。

 

「データフォルダを開く」をクリックしてデータフォルダを開きます。

※フォルダを開くときは必ず「データフォルダを開く」から開いて下さい。MT4をインストールしたフォルダとは違う場所の可能性が高いです。

 

「MQL4」を開きます。

 

青枠の部分は、「Test.ex4」を入れる場所です。
赤枠の「Libraries」を開きます。

 

ここに「Test.dll」を入れます。(Librariesのフォルダの中です。)

 


DLLの使用を許可する

DLLファイル付属のEAもWindowsのDLLファイルを使っているEAも設定の仕方は同じです。

DLLファイルを使っているEAは、2か所ある「DLLの使用を許可する」にチェックをつける必要があります。

 

ツールバーからオプションを選びます。

エキスパートアドバイザのタブを選択して、「DLLの使用を許可する」にチェックをつけます。

 

もう一か所は、EAをチャートにセットするときに出てくるウィンドウです。

「全般」タブを選んで「DLLの使用を許可する」にチェックを入れます。
以上でDLLの設定は完了です。

 


DLLファイルを使っているEAがうまく動かない場合

多分この記事を見ている人は、DLLファイルを使っているEAで、うまく動いていないのではないかと思います。

DLLファイルについて、出来るだけ多くの情報を書こうと思いますが、EAによって違っていたり、PCの環境などでも違いが出るので、あくまでも参考程度にしてください。

DLLファイルを使っているEAと使っていないEAの設定の違いは、付属のDLLファイルを指定フォルダの中に入れる事と、「DLLの使用を許可する」のチェックボックスを2か所チェックするだけです。

DLLファイルは、指定フォルダに入っていれば良いだけで、DLLファイル自体の設定などはありません。また、ナビゲーターに表示もされません。

 

DLLファイルが設定できていない時の検証

DLLファイルがうまく設定出来ていないと、どうなるかを実際に検証してみます。

今回検証に使用したMT4のバージョンは、「version:4.00 Build 1090」で、Windows10(64bit)です。検証用に作った「Test.ex4」と「Test.dll」を使います。「Test.dll」には「TestFunction」と言う名前の関数が1つ入っているだけです。

二つの「DLLの使用を許可する」のチェックボックスと、DLLファイルを入れる場所が違うとどうなるかを検証します。

 

ツール→オプション→エキスパートアドバイザのタブの検証

ツール→オプション→エキスパートアドバイザのタブの「DLLの使用を許可する」のチェックがされていない場合、どうなるのかを検証します。

どうやらここのチェックは、チャートにEAをセットするときに出てくる「DLLの使用を許可する」の初期状態の設定のようで、ここにチェックが入っていると、チャートにEAをセットするときの「DLLの使用を許可する」は最初からチェックが入っていて、ここにチェックが入っていないとチャートにEAをセットするときの「DLLの使用を許可する」はチェックが入っていない状態になります。

私が確認したところ、ここのチェックは付いていなくても、チャートにEAをセットするときの「DLLの使用を許可する」にチェックが入っていればEAは問題なく動きました。

MT4のバージョンなどで違う可能性もあるので、ここのチェックは付けておいた方が無難だと思います。

DLLを使ったEAをバックテストするときは、エキスパート設定に「DLLの使用を許可する」が無いので、ここのチェックが必要なようです。また、バックテスト時の、ここにチェックはMT4を再起動またはストラテジーテスターを再表示しないと反映されないようです。

 

EAをチャートにセットするときの「DLLの使用を許可する」を検証

次に、EAをチャート上にセットするときに出てくる画面の全般タブにある「DLLの使用を許可する」のチェックがされていない場合、どうなるかを検証します。

ここのチェックがされていないとEAはDLL内の関数が呼ばれた時にエラーになります。OnInitと言う初期処理をするところで、関数が呼ばれれば顔のマークは消えますが、それ以外で関数が呼ばれると顔のマークはスマイルのままEAは停止します。どこで関数が呼ばれるかはEAによって違います。
OnInitとか関数とか言われてもわからない人の方が多いと思いまが、重要なのは、顔のマークがスマイルでも、このエラーが出ているとEAは止まっていると言うことです。

確認方法は、ターミナルのエキスパートタブからエラーの確認が出来ます。
実際にチェックを外してEAをセットすると下の画像のようなエラーになります。

「Cannot call ‘Test.dll::TestFunction’, DLL is not allowed」ここの「Test.dll」はDLLファイル名で、「TestFunction」は関数名なので、EAによって表示されている名前は違っています。エラーの内容は、DLLを使うことが許可されていないので、Test.dllのTestFunction関数を呼び出すことが出来ません。みたいなエラーです。
上の画像の2つのエラーメッセージが出た後、EAは顔のマークがスマイルのまま停止した状態になります。
※この画像はOnInit以外で関数を読んでいます。

 

DLLファイルを入れる場所が違う時の検証

最後は、DLLファイルの置き場所が違う場合、どうなるのかを検証します。

ここでも、DLL内の関数が呼ばれた時にエラーになるのですが、その前に警告メッセージが表示されます。

Cannot load ‘Test.dll’ [126] この警告メッセージの段階ではEAは稼働しています。この後、関数が呼ばれたところでエラーになりEAは停止します。

ここでもOnInit部分で関数が呼び出されていたら顔のマークは消えますが、それ以外だと顔のマークはスマイルのままEAは停止します。
「Cannot call ‘Test.dll::TestFunction’, ‘Test.dll’ is not loaded」
DLLを読み込むことが出来ないので、Test.dllのTestFunction関数を呼び出すことが出来ません。みたいな内容のエラーです。

このエラーとその前の警告メッセージが出ているときは、DLLファイルの置き場所が違う可能性が高いのですが、DLLが読み込めないと言うエラーなので、他の原因かもしれません。

 


DLLファイルを入れる場所

DLLファイルを入れる場所が違っている場合以下の警告、エラーメッセージが出ます。
「Cannot load ‘Test.dll’ [126]」
「Cannot call ‘Test.dll::TestFunction’, ‘Test.dll’ is not loaded」
この時、Test.dll(Testの部分はEAによって違います。)とファイル名だけ出ていれば、DLLファイルを入れる場所は「Libraries」の中になります。ファイル名の他にパス名が書かれていればそこのフォルダになります。

例えば、下の画像のように「..¥Experts¥Test.dll」になっていればDLLファイルを入れる場所は「Experts」の中です。

「..¥」は「Libraries」から一つ上のフォルダの意味で、この場合「MQL4」になり、そこの中にある「Experts」の中を読みに行くという意味になります。「..¥Files¥Test.dll」なら「Files」の中で、「..¥Include¥Test.dll」ならDLLファイルを入れる場所は「Include」の中になります。

おすすめ記事

リアル口座のトレード収支結果です。   EA名:KonohaUSDJPY 通貨ペア:USDJPY 使用FX業者:OANDA JAPAN(東京サーバー) バージョン:1.00 パラメーター:すべて初期値 約定日時…

マジックナンバーとは何か、マジックナンバーが扱える最大桁数、マジックナンバーを設定するときの注意点やマジックナンバーの確認の方法などを説明します。 マジックナンバーの設定の仕方を間違ってしまうと、EAの暴走につながる重要…

ストップレベルって、FX全体だとあまり使われない言葉なのでしょか? MT4を使っていると結構耳にする言葉ですが、MT4以外ではあまり使われていない気がします。 目次 ストップレベルとはどんな時にストップレベルが影響するの…

関連記事

DLL(ディーエルエル)とは、Dynamic Link Library(ダイナミックリンクライブラリ)の略で、動的なリンクによって利用されるライブラリです。Windowsでは「.dll」の拡張子が付くファイルで、OSとし…

MT4で自動売買するためには、EAを入手して、それをMT4で使えるようにする必要があります。 ここでは、MT4にEAを入れる方法とEAをチャートにセットする方法を説明します。また、EAのエラーを確認する方法も説明します。…

MT4のバックテスト機能を使うことで、過去10年以上のEAのパフォーマンスを検証することも可能です。 また、EAを自作することが出来れば、トレード手法を検証するかなり強力なツールになります。 ここでは、説明用に作った「R…

EAの長期間のバックテストをするにはMT4にヒストリカルデータを入れる必要があります。 今回は、一番簡単にできるMetaQuotes社のヒストリカルデータの入れ方と、FXDDのヒストリカルデータをダウンロードしてインポー…