MT4のDLL許可を設定する手順とFX自動売買の安全確認

MT4のDLL許可を設定する手順とFX自動売買の安全確認を説明する生成イメージ

MT4で「DLLの使用を許可する」と案内されても、すべてのEAで有効にする必要はありません。FX自動売買のEAやインジケーターが外部ライブラリを必要とする場合に、配布元と用途を確認して設定する項目です。自動売買ボタンをオンにする操作とは役割が違います。

確認する場所は、MT4端末の共通設定と、対象EA・指標の個別設定です。ただし、端末側の変更がすでに動いているプログラムへ自動反映されるとは考えないでください。この記事では、許可してよいかの判断、設定の手順、ログの切り分け、不要になったときの確認まで説明します。出所が不明なDLLを試しに実行する手順ではありません。

この記事のポイント
  • DLLが必要な理由と配布ファイルを確認できる
  • 端末の既定値と対象プログラムの許可を分けられる
  • 取引許可やWebRequestとの違いが分かる
  • 拒否ログと読み込み失敗を分けて次の対応を判断できる
目次

MT4のDLL許可とFX自動売買の権限範囲

必要な拡張機能と許可範囲を照合する作業机
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

必要な機能と配布元を先に確認する

DLLは、プログラムから呼び出す外部のライブラリです。MQL4の範囲だけではなく、配布元が用意した処理やWindowsの機能などを利用するために使われます。外部との連携が必要なEA・指標では許可が必要な場合がありますが、DLLを使わない製品まで一律に許可する理由にはなりません。

まず、EAや指標の公式説明書で「DLLが必要」と明記されているかを調べます。ファイル名、対応する製品の版、使用する機能、配置する場所、対応OSを照合してください。たとえば認証やデータ連携のためと説明されていても、今回ダウンロードした付属ファイルがその説明と一致するかまで確認します。

ダウンロード元は、購入元や開発元が案内する正式なページを使います。検索で見つかった同名DLL、非公式の再配布サイト、他人の環境からコピーした古いファイルを、足りない部品として追加しないでください。名前が同じことや拡張子が.dllであることは、中身の正当性を示す証拠にはなりません。

  • 今回のEA・指標でDLLを使う目的が説明されている
  • 正式な配布元と入手した一式が一致している
  • EA本体・指標・DLLの対応バージョンが分かる
  • 現在のOSと実行環境が対応範囲に入っている

この四点が確認できない場合は、許可を付ける前に配布元へ問い合わせます。「動かないから全部許可する」という進め方では、必要だった権限も原因も分からなくなります。公式説明にDLL不要とあるなら、DLLのチェックではなく、今回のログに示された別の問題を調べる方が適切です。

MetaQuotesの端末のExpert Advisors設定は、DLL使用の許可を信頼できるアプリケーションに限る項目として説明しています。許可したことは、MT4が配布物の安全性を認定した意味ではありません。必要性と信頼性を先に判断してから、設定へ進みましょう。

取引許可オフでも処理は動く

自動売買ボタンをオフにしても、EAの処理そのものがすべて停止するわけではありません。MQL4公式では、自動売買の禁止はEAからの取引リクエストを制限するもので、EAのイベント処理は続くと説明されています。外部コードを許可してよいかは、取引を許可してよいかとは別に判断します。

プログラムをチャートへ適用すると初期化が行われ、OnInitなどの処理が実行されます。さらにMQL4の外部関数呼び出しはearly bindingを使い、対象ライブラリをプログラム読み込み時にロードする仕様です。したがって「注文していないからDLLもまだ動かない」とは判断できません。

取引の停止と外部コードの動作を分けた概念図
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

この点は、出所の分からないEAをデモ口座へ入れて確かめる方法でも変わりません。デモ口座は取引動作を確認するための環境で、外部ライブラリを無害化する機能ではありません。個人情報が入っているPCやVPS上で未知のDLLを実行し、その結果を見て信頼性を判断する順番は避けてください。

根拠はMQL4の初期化とイベント処理と外部関数のimport仕様で確認できます。取引を止めることは誤発注を避ける準備ですが、DLLを隔離する仕組みとは違います。分析だけの指標であっても、外部コードの確認が不要になるわけではありません。

すでに使用しているEAを止める場合は、保有ポジションの管理も先に確認します。取引禁止によって新規注文だけでなくEAの注文変更や決済管理ができなくなる場合があるため、稼働中のEAを思いつきで停止し、管理中の注文を放置する進め方にしないでください。DLL設定の試行は、現在の取引管理と分けて行います。

端末の既定値と個別設定を分ける

DLL許可には、MT4の「ツール」→「オプション」→「エキスパートアドバイザ」で見る設定と、EAや指標の「全般」タブで見る設定があります。端末全体の画面を確認しただけで、対象プログラムの現在の設定まで見たことにはなりません。とくに、すでにチャートへ適用してあるプログラムは個別に確認します。

公式ヘルプには、端末設定のDLL許可などは新しく適用するMQL4プログラムの既定値であり、すでに動いているEA、カスタム指標、スクリプトの動作へ影響しないという注意があります。画面のチェックを変えたら、開いている全チャートも同じ状態になった、とは考えないでください。

たとえば端末設定を許可へ変えた後も、以前から使っているEAの個別設定が不許可なら、対象EAの設定画面を開いて現状を照合します。逆に、今後の既定値を不許可へ戻しても、稼働中のプログラムでDLLの使用が確実に終わったとは断定できません。対象を止める操作と、今後の既定値の変更を分けます。

同じMT4に複数のEAがある場合は、必要なEAだけを見て、別のEAへ許可を広げないことも重要です。端末の名前、使っている口座、チャートの銘柄と時間足、対象プログラム名を合わせます。自宅PCとVPSに同じEAを置いている場合も、片方の設定変更がもう片方へ同期されるわけではありません。

入力パラメータのsetファイルを読み込む操作も、DLL許可の代わりではありません。MT4のsetファイルで保存する入力値と、全般タブの権限は分けて確認してください。ロットや損切り幅を正しく戻せたことだけで、外部機能の許可まで再現できたとは扱わないようにします。

WebRequestとDLLを区別する

WebRequestは、MQL4の関数を使ってHTTP通信するための別項目です。端末の許可リストへ、必要な通信先URLを明示して設定します。一方、DLL許可は外部ライブラリの関数を呼び出すための設定です。インターネットにつながらないという症状だけで、どちらの許可を付けるかは決まりません。

スクロールできます
項目何を許可するか確認する材料
自動売買・取引許可EAなどの取引操作本番・デモの別、対象EAの取引管理
DLLの使用許可外部DLL関数の呼び出し必要なライブラリ、配布元、対応環境
WebRequestの許可MQL4のHTTP通信公式に案内された通信先URLと用途
外部EX4ライブラリの呼び出し外部MQL4モジュールの関数呼び出し使用するMQL4ライブラリとプログラム仕様
URL通信と外部ライブラリ接続を分けた模型
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

認証エラーが出た場合でも、製品によってDLL側の通信を使う場合と、MQL4のWebRequestを使う場合があります。説明書がURL追加を要求しているなら、そのURLの正当性と用途を確認します。DLLだけが必要という説明を、URLを何でも許可する理由に変えないでください。通信方法を開発元へ確認すると、不要な権限付与を避けやすくなります。

また、WebRequestのURLリストを設定したからといって、DLLが行うすべての通信をそのリストで制御できるとは考えないでください。MQL4のWebRequest関数に対する許可と、外部DLLの実装は別です。MT4のURL設定を、外部コード全体の安全を保証する仕組みとして扱わないことが大切です。

MQL4公式のWebRequest仕様では、この関数を呼べるのはEAとスクリプトで、指標からの呼び出しやストラテジーテスターでの実行には制約があります。指標のデータ取得が失敗したときは「URL欄へ追加すれば必ず直る」とせず、実際にどの仕組みで取得しているかを確認します。

この区別ができると、認証、外部データ、取引を別々に検証できます。画面に「DLLを許可してください」と出ているのか、「通信先URLを追加してください」なのか、メッセージを正確に読みます。同じタイミングで両方を変更するより、必要な設定を一つずつ確認する方が、失敗した原因を追いやすくなります。

WindowsのVPSと仮想端末を分ける

「VPSで動かす」といっても、Windowsのデスクトップへ接続してMT4をインストールする環境と、MetaQuotesのVirtual Hostingは同じ仕組みではありません。DLLを使用するEA・指標では、設定を探す前に、自分の稼働先がどちらかを確認してください。

通常のPC環境と専用仮想端末を比較するイメージ
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

MetaQuotesの仮想端末では、DLL呼び出しは全面的に禁止されています。公式の環境移行ヘルプでは、DLL関数を最初に呼び出そうとした際、プログラムが重大なエラーで停止すると説明されています。ローカル側でDLLを許可して同期すれば使える、という扱いにはできません。

DLL必須の製品をこの仮想端末へ移す予定なら、開発元へ対応可否を確認します。DLLを使わない版があるか、別の対応環境が必要かは製品次第です。設定変更によって禁止を回避しようとせず、仕様に合う環境を選ぶ必要があります。購入や移行の前に確認すると、運用開始後の手戻りを減らせます。

Windows VPSならローカルPCに近い操作画面を使えますが、どのDLLでも使えると保証されるわけではありません。OS、MT4、付属ライブラリ、依存する部品、配布元の対応条件を確認します。自宅で動いた一式をコピーしただけで同じ結果になると決めず、VPS内の対象MT4で確認します。

さらにMetaQuotesの仮想端末では、移行後の自動売買許可の扱いもローカル端末と異なります。ローカルの自動売買をオフにした状態を、仮想端末の停止状態と同じと考えないでください。詳しくはVirtual Hostingの移行仕様を参照します。今回のDLL確認を目的に、実口座のEAを試しに同期する操作は不要です。

MT4のDLL許可を設定して確認する手順

端末と対象プログラムの設定を順に照合する手元
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

端末側は新しい適用の設定を確認する

ここからは、配布元とDLLの必要性が確認できた製品を、対応するPC版MT4で設定する手順です。最初に、操作するMT4がどれかを確認します。複数の取引業者のMT4や、別の口座用に複数インストールしている環境では、見た目だけで選ばず、端末の名前と使っているデータフォルダを照合します。

次に、稼働中のEAと注文の状態を確認します。機能確認のために新しく適用する場合は、取引不許可の状態から始めます。ただし、この準備で外部コードが安全になるわけではありません。すでに稼働中の本番EAの停止・再初期化は、製品の管理手順と保有注文への影響を確認してから行ってください。

  • MT4の上部メニューから「ツール」を開く
  • 「オプション」の「エキスパートアドバイザ」タブを選ぶ
  • DLL使用の項目を確認し、必要な場合だけ許可する
  • WebRequestや取引許可は今回の目的と分けて確認する
  • 「OK」で確定し、対象プログラムの個別設定へ進む

英語表示なら「Allow DLL imports」に相当する項目です。言語やビルドによって表記が異なる場合は、同じ機能の項目を確認してください。取引方向、口座変更時の停止設定、シグナルの変更許可など、隣の項目を理由なく変更する必要はありません。

ここで変更したのは、今後適用するプログラムの既定値です。対象が以前からチャートにある場合は、この画面を閉じたことだけで設定完了としません。許可を付ける前後で、対象EA・指標の全般タブを見て、どの状態が実際に適用されているかを確認します。

許可したい対象が一つだけで、別のチャートに未知のプログラムがあるなら、先に対象を整理します。端末の既定値を許可にした状態で、何が読み込まれるか分からないテンプレートや組表示を一括適用する進め方は避けましょう。既定値の変更と、各プログラムを適用する判断は別です。

対象EAと指標の設定を見直す

EAでは、対象チャートからエキスパートアドバイザの設定画面を開き、「全般」タブのDLL使用許可を確認します。新しく適用するときにも設定画面が出ます。EA名、銘柄、時間足を照合し、必要な製品だけを対象にします。許可を変更した後は「OK」で確定します。

インジケーターでは、チャートの「表示中のインジケーター」から対象を選んで編集し、全般タブを確認します。EAの設定画面を開いても、別に適用した指標の許可を見たことにはなりません。指標が複数ある場合は、データを表示したい指標名と実際に編集する対象を合わせます。

複数のチャートから対象の一つを確認するイメージ
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

個別の項目は、公式のEAの適用時設定とカスタム指標の適用時設定で確認できます。DLL使用の許可と、ライブ取引の許可、入力パラメータはそれぞれ別です。指標を表示するために、EAの取引までオンにする必要があるとは限りません。

製品の説明書が個別DLLの配置も求めている場合は、現在のMT4からデータフォルダを開き、指定先を確認します。一般的な置き場所だけを見て、DLLをWindowsのシステムフォルダへ入れたり、別の同名ファイルへ置き換えたりしないでください。システムDLLと製品付属DLLでは扱いが違うため、公式の一式と手順に合わせます。

必要な権限を付けた後に、同じチャートへ別のEAをドラッグすると、元のEAが外れることがあります。確認対象のEAを入れ替えたことに気づかず、新しいEAの表示を元のEAの成功と扱わないようにします。複数のテストは別の対象として整理し、表示名と適用時刻を合わせて確認してください。

ソースを編集できる場合、MQLInfoIntegerのMQL_DLLS_ALLOWEDは現在実行中のプログラムのDLL許可を調べる項目です。TerminalInfoIntegerのTERMINAL_DLLS_ALLOWEDは端末側の項目です。別の診断スクリプトでtrueが出ても、既存EAの個別許可や読み込み成功まで確認したことにはなりません。対象プログラム自身の値と区別します。

拒否と読み込み失敗をログで分ける

設定後は、MT4下部の「エキスパート」と「操作履歴」を開き、今回の適用・変更時刻以降のメッセージを見ます。過去に出た警告を、今回の失敗と混同しないことが大切です。対象プログラム名とDLL名、表示されたコードや文章を組にして読みます。

スクロールできます
コードや症状区別する意味次の確認
4017・DLL calls are not allowedDLL呼び出しが許可されていない対象プログラムと端末設定、稼働環境の仕様
4018・Cannot load libraryライブラリを読み込めない正式な付属ファイル、配置、対応版、依存する部品
4019・Cannot call function必要な関数を呼び出せない本体とDLLの対応関係を開発元へ確認
4023・DLL-function call critical errorDLL関数呼び出しの重大なエラー設定の総当たりを止め、開発元へ内容を提示
4109・Trade is not allowed取引が許可されていないDLLではなく取引許可の問題を分けて確認
拒否とファイル欠落を別の確認欄で調べる作業
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

表のコードはMQL4公式の実行時エラー一覧に基づきます。製品独自の表示文や、DLLが返す番号は別の意味を持つことがあるため、番号だけを見て同じと扱わないでください。どの処理が表示したメッセージかまで分かると、開発元へ説明しやすくなります。

許可が原因なら4017などの表示と設定状態を照合できます。一方、4018の場合はチェックを増やすより、配布一式と読み込み条件を確認します。MQL4公式では、あるDLLが別のDLLを必要とする場合、後者がないと前者もロードできないと説明されています。見えているDLL一個だけが存在しても、必要な一式がそろっているとは限りません。

この仕様はMQL4の外部関数の読み込みで確認できます。関数が見つからない場合やDLL利用が禁止されている場合、プログラムが停止し、再初期化するまで動かないことも説明されています。ファイルを置いたら自動で復旧する、と決めつけず、手順に沿って再適用した後のログを見ます。

セキュリティソフトに関する通知がある場合は、その検出内容と正式な配布物の関係を確認します。「MT4で使いたい」という理由だけで、保護機能を一括停止したり、端末全体を例外にしたりする対応は避けてください。配布元に通知を伝え、入手元とファイルの正当性が確認できない状態では実行へ進みません。

DLLの初期化が通っても、口座認証、入力値、売買条件など別の段階で止まることはあります。どの段階が成功したかを切り分け、一般的な停止要因を調べる必要がある場合は、MT4のEAが動かないときのチェック項目へ進みます。表示が出たことと注文が正常なことは別です。

再読み込みと解除の結果を確認する

許可を変更した後は、対象プログラムの初期化と、DLLに依存する機能が期待どおり動くかを確認します。指標なら必要な表示やデータ更新、EAなら認証結果や初期化メッセージなど、説明書が示す機能を対象にします。注文が出たかだけを、DLL読み込みの成否の指標にしないでください。

たとえば認証用DLLなら、認証に成功したメッセージと、今回のEA名・版が一致するかを確認します。データ連携用DLLなら、表示された時刻や更新状態が説明どおりかを見ます。一度画面が描かれただけでは更新が続いていると分からない場合もあるため、配布元の確認基準に従います。

  • 変更した対象プログラムと適用時刻が一致している
  • 今回の初期化や読み込みに新しい拒否が出ていない
  • 必要な外部機能の結果を説明書の基準で確認した
  • 注文を試す段階と外部機能だけを確認する段階を分けた
変更後の機能と許可解除を確認するチェック作業
説明用の生成イメージです。実際のMT4画面や動作・安全性の検証記録ではありません。

これらは動作確認であり、未知のDLLの安全性を証明する検査ではありません。デモで表示や認証が成功したことから、配布元を確認できないプログラムを実口座へ移してよいと判断しないでください。信頼性の確認と、製品が期待どおり機能するかの確認は、目的が違います。

DLLが不要になった場合は、対象EA・指標の個別設定と、今後適用するための端末既定値を見直します。端末側のチェックを外しただけで、稼働中プログラムの外部処理が確実に終わるとは扱いません。対象をチャートから外すなど、製品とMT4の停止手順を確認して行い、再適用する場合は不許可の状態を確認します。

EAを外す操作は、そのEAが担っていた注文管理も止めます。保有中の注文があるなら、損切り・利確や管理の引き継ぎを確認してから操作します。また、プロファイルやテンプレートの再適用でEAが戻る運用なら、そのときの許可も確認してください。外部処理が別プロセスを作る製品などは、個別の終了方法を開発元へ確認します。

問い合わせでは、製品名と版、DLL名、正式な入手元、MT4のビルド、OS、ローカルPC・Windows VPS・Virtual Hostingの別、設定状態、発生時刻とログをまとめます。画面を共有する場合は口座番号など不要な情報を隠し、口座パスワードは送らないでください。未知のDLLを追加で実行して情報を集める必要はありません。

PCやVPSを変更したときも、許可が同じという前提にせず再確認します。環境を戻す作業自体は、MT4のバックアップと環境復元の手順で整理できます。本記事の確認表を使い、復元後の配布ファイル、対象プログラム、必要な権限が一致したかを確認しましょう。

MT4のDLL許可を必要な対象に絞る

MT4のDLL許可は、すべてのEAを動かすための共通スイッチではありません。必要な機能と正式な配布元が確認できた対象だけに付け、端末の既定値とEA・指標の個別設定を分けて確認します。取引許可やWebRequestを、理由なく同時にオンにしないことが基本です。

取引不許可でも初期化や外部ライブラリの読み込みがあり、デモ口座も未知のDLLを安全にする環境ではありません。MetaQuotesのVirtual HostingではDLLを使えないため、Windows VPSと混同せず、設定の前に対応環境を確認してください。

次に行うことは、製品説明の必要性とファイル一式を照合し、対象プログラムの現状を確認することです。設定後は拒否と読み込み失敗をログで分け、必要な機能の結果を確認します。配布元や対応条件が不明なら許可を保留し、分かる材料を整理して開発元へ相談しましょう。

よかったらシェアしてね!
目次