MT4スクリプトの使い方とFX自動売買での実行・停止確認

MT4のスクリプトは、利用者が起動したタイミングで、あらかじめ決めた処理を実行するプログラムです。EAのように相場を監視して取引を続ける用途とは、起動と終了の考え方が違います。
FX自動売買と組み合わせて使うなら、Scriptsフォルダに置くだけでなく、どの注文を処理するか、EAが再発注しないか、実行後に何が残ったかまで確かめる必要があります。全決済という名前でも、対象が今の通貨ペアだけなのか、口座内すべてなのかはツール次第です。
この記事では、PC版MT4での配置、起動、停止、結果確認を順に整理します。売買コードの作成や特定ツールの推奨は扱わず、手元のスクリプトを実行してよいか判断できることを目指します。最初の動作確認には実資金を使わないデモ口座を使いましょう。
- スクリプトの単発処理とEAの継続稼働を区別できる
- 使うMT4のデータフォルダから配置先を確認できる
- 取引権限と処理対象を分けて実行前に点検できる
- 終了表示だけに頼らず注文と履歴を照合できる
MT4スクリプトの基本とFX自動売買での役割

EAやインジケーターとの違い
スクリプトは、起動の依頼を受けて一連の作業を行います。たとえばチャート上の不要な図形を整理する、データを出力する、指定範囲の注文を処理する、といった使い方です。すべてのスクリプトに売買機能があるわけではありません。
EAはチャートに設置したまま、価格更新などのイベントを受けて処理する仕組みを持ちます。インジケーターは価格などを計算して分析用の表示を行うものです。見た目が似たツールでも、製品説明に書かれた種類を確認して選びます。
| 種類 | 実行の考え方 | 主な配置先 | 確認すること |
|---|---|---|---|
| スクリプト | 利用者が起動して一連の処理を行う | MQL4/Scripts | 今回行う処理と終了条件 |
| EA | 設置後にイベントを受けて処理する | MQL4/Experts | 稼働条件と売買管理 |
| インジケーター | 計算結果を分析用に表示する | MQL4/Indicators | 表示と計算条件 |
この違いは、ファイル名にある「自動」「一括」といった言葉だけでは分かりません。画面上のボタンで決済するツールでも、実体はEAとして動く製品があります。スクリプトだと思い込んでScriptsへ移すと、導入方法そのものを間違えることになります。
MQL4の公式仕様では、スクリプトの開始処理はOnStart、EAの価格更新処理はOnTickとして区別されています。ただし、利用者が関数名を読み解くことが導入の必須条件ではありません。提供元が示す「MT4用のスクリプト」という分類と、配置・実行手順をまず照合しましょう。
イベントの違いはMetaQuotesのイベント処理関数リファレンスで確認できます。EAを継続稼働させる手順は、MT4にEAをインストールして稼働確認する方法に分けて整理しています。
一回の実行でも待機する場合がある

「一度だけ実行」とは、必ず一瞬で終わるという意味ではありません。内部で複数の対象を順に処理したり、条件が整うまで待ったり、繰り返し処理を続けたりする作りもあります。起動の単位と、動作にかかる時間は分けて考える必要があります。
反対に、チャートに追加した直後に処理を終えて姿を消すものもあります。右上に名前が残っていないから失敗した、表示が残っているから正常に処理中だ、と見た目だけで決めないようにします。処理の完了条件は、提供元の説明と実際の結果で確認します。
たとえばデータ出力なら、所定の場所に必要な期間のファイルができたかが確認項目です。注文処理なら、対象注文がどう変わったかを見ます。どちらも「実行操作をした」という事実だけでは、期待した結果が得られたとはいえません。
また、一回起動するスクリプトであっても、その一回の中で注文を複数回送る可能性があります。実行回数が一回だから注文も一件、という関係ではありません。名前や短い紹介文より、処理対象・繰り返し・再試行の仕様を優先してください。
待機型のツールでは、いつ終了するのか、途中で止める方法は何か、処理が一部だけ進んだ状態をどう確認するのかも必要です。この説明が見つからない取引ツールは、実口座で試して確認するのではなく、提供元への確認を先に進める方がよいですね。
スクリプトが処理完了後にアンロードされること、ループを持つ場合があることは、MQL4のプログラム実行仕様に記載されています。
配布元と処理対象を先に確かめる
入手時には、MT4向けか、スクリプトとして配布されているか、対象の口座や提供会社に制限がないかを確認します。MT5用のファイルをMT4へ入れても、同じようには使えません。ファイルの拡張子を変更して合わせる方法も避けます。
ファイル形式では、.mq4はソースコード、.ex4は実行用にコンパイルされたファイルです。ただし同じ拡張子はEAやインジケーターでも使われるため、.ex4であることだけを根拠にスクリプトと判断しないでください。この記事では、ソースの書き換えやコンパイルの詳しい操作には踏み込みません。
配布ページでは、変更履歴、対応するMT4環境、必要な追加ファイル、問い合わせ先まで見ます。再配布サイトにある説明と提供元の説明が異なる場合は、提供元の最新版を基準にします。入手経路が確認できず、何をするプログラムか分からないものを、権限設定だけ変えて動かすのは避けたいところです。
処理の範囲は、チャートを触るだけなのか、ファイルを読み書きするのか、外部サイトと通信するのか、取引注文を送るのかに分けると確認しやすくなります。売買を行わないツールでも、図形やファイルを変更することがあります。取引しないという説明だけで、すべての変更がないとは考えないようにします。
- 配布元の説明と手元のファイル名・版が一致している
- MT4用・スクリプト用の手順として案内されている
- 対象の通貨ペア・注文種類・選別条件が読める
- 必要な権限と、その権限を使う理由が分かる
説明欄に「全注文」とだけ書かれていて、保有ポジションと未約定注文の区別がない場合も要確認です。自分の目的が「今のポジションだけ閉じたい」なら、それ以外の注文を触らないことまで確認してから実行候補にします。
Scriptsへの配置と一覧の更新

手動配布のファイルを追加する場合は、使うMT4を起動して「ファイル」から「データフォルダを開く」を選びます。その中のMQL4、Scriptsへ進み、提供元が指定したファイルを置きます。パソコン内を検索して見つけた別のScriptsフォルダへ、推測でコピーしないことが大切です。
同じパソコンに複数のMT4があると、会社別・検証用・実運用用でデータの保存先が違う場合があります。目的の口座へログインしているMT4からデータフォルダを開くと、配置先の取り違えを減らせます。ただし、ファイルを置いた時点で取引の対象口座が固定されるわけではありません。実行時の口座も後で確認します。
- 使用するMT4で「ファイル」→「データフォルダを開く」
- MQL4内のScriptsへ配布元指定のファイルを配置
- ナビゲーターのスクリプト一覧を右クリックして更新
- 表示された名称と、配布元の種類・説明を照合
一覧に反映されない場合は、まずMT4用のファイルか、階層が深くなりすぎていないか、圧縮ファイルをそのまま置いていないかを見直します。追加ファイルがある製品では、すべてをScriptsへ入れるのではなく、それぞれの指定場所へ配置してください。
その後、必要に応じてMT4を再起動して確認します。再起動は、稼働中のEAや接続にも関係する操作です。実運用のターミナルを無計画に終了せず、検証環境で配置を確かめてから進めます。ソースだけが配布されている場合は、提供元のビルド手順に従い、表示されないからと別形式へ改名しないようにします。
国内提供元の手動配置例として、FXTFのインディケータ・ツール案内でもデータフォルダ内のScriptsへの配置と一覧更新が案内されています。製品固有の条件は、その製品の説明を優先してください。
取引許可と外部アクセスを分ける

スクリプトを使うからといって、すべての許可にチェックを入れる必要はありません。注文・決済などの取引処理と、分析・表示などの非取引処理では、必要な権限が違います。「動かないときは全部ON」という進め方は避けましょう。
MT4全体の自動売買設定がOFFなら、EAやスクリプトによる取引操作は許可されません。一方で、プログラム自体が必ず終了するわけではなく、非取引の処理は動き得ます。チャート整理のスクリプトなら、売買OFFのまま図形を変更することも考えられます。
取引を行う場合も、全体設定だけでなく、個別プログラムの取引許可、口座側・サーバー側の許可が関係します。投資家用の閲覧パスワードで接続しているなど、そもそも取引できない状態もあります。許可エラーが出ても、原因を読まずに接続情報や口座設定を変更する必要はありません。
| 設定・条件 | 確認する目的 | 避けたい思い込み |
|---|---|---|
| MT4全体の自動売買 | EA・スクリプトの取引操作を許可するか | OFFなら全プログラムが終了する |
| 個別の自動売買許可 | そのスクリプトに取引を許可するか | 全体がONなら必ず取引できる |
| DLL・外部通信 | 追加機能に必要な外部アクセスか | 全ツールで許可が必須 |
| 口座・サーバーの取引条件 | 口座として取引が可能か | 画面のチェックだけで解決できる |
DLLの使用やWebRequestによる外部通信は、取引許可とは別です。提供元が必要性と接続先を説明している場合に限って検討します。データ出力だけが目的なのに、説明のない外部通信まで要求する場合は、必要な情報が揃うまで起動を見送ります。
また、取引ツールを動かすために全体の自動売買をONにすると、同じMT4内の他のEAにも関係します。ここを単なる起動ボタンだと考えず、次章のように既存EAの状態とセットで確認することが大事です。
許可の仕組みはMetaQuotesの取引許可仕様、DLLとWebRequestはスクリプトの全体設定ヘルプで確認できます。
MT4スクリプトの起動から終了・結果確認まで

口座とチャートを決めて一度起動する
起動前には、ログイン中の口座がデモか実口座か、サーバー名は想定どおりかを見ます。続けて、実行先チャートの通貨ペアを確認します。複数チャートを並べている場合は、選択中のチャートと、自分が見ているチャートが一致しているかも確認しましょう。
ナビゲーターのスクリプトをダブルクリックすると、アクティブなチャートで起動します。ドラッグ&ドロップなら、ドロップしたチャートへ追加できます。最初は実行先が分かる操作を選び、どちらか一方の方法で一度だけ実行します。
設定画面が出るかどうかはプログラムの作りによります。必ず確認画面が出てから取引されるとは限りません。「まずダブルクリックして設定だけ見よう」とすると、そのまま処理が始まる可能性があります。説明書を先に読み、必要な確認を済ませてから起動操作をしてください。
設定画面がある場合は、初期値をそのまま受け入れる前に、通貨ペア、売り買いの指定、対象番号、処理量などを確認します。項目名が英語でも、意味が不明なまま数値を入れ替えないようにしましょう。前回と同じ値が使われるかも決めつけず、その回に表示された設定を確かめます。
起動直後に反応が見えなくても、同じスクリプトを連打しないことが大切です。処理が終わってから次の起動を受け付ければ、同じ作業を再度実行する可能性があります。注文ツールなら重複注文、出力ツールなら上書きや追加出力につながる場合があるため、まず結果を確認します。
起動先のチャートと設定画面についてはMetaTrader 4公式のスクリプト起動ヘルプ、確認画面の有無に関わる設定はMQL4のプログラムプロパティが根拠です。
全決済と注文取消の範囲を照合する

取引スクリプトでは、チャートの通貨ペアと、処理する注文の範囲が同じとは限りません。USDJPYのチャートから起動しても、プログラムが口座内の複数通貨を対象にする設計なら、別の通貨の注文にも処理が及び得ます。「このチャートだけ触るつもりだった」を防ぐには、実行前の対象確認が必要です。
とくに全決済は、保有しているポジションを閉じることと、まだ約定していない注文を取り消すことを分けて読みます。MetaQuotesの取引関数でも、保有注文の決済を行うOrderCloseと、未約定注文を削除するOrderDeleteは別の機能です。両方を行うか片方だけかは、各ツールの実装で決まります。
| 対象の軸 | 実行前に確認する内容 |
|---|---|
| 通貨ペア | 現在のチャートのみか、指定銘柄か、口座全体か |
| 注文の状態 | 保有ポジションか、未約定注文か、両方か |
| 売買方向 | 買いのみ、売りのみ、両方向のどれか |
| 管理単位 | 指定EAの識別番号か、手動注文も含むか |
| 条件と処理量 | 損益などの選別、全量・一部、除外対象はあるか |
EAの注文を選別するために、マジックナンバーという識別番号を使うツールもあります。ただし、その番号がどのEAに設定されているか、重複していないか、番号を指定しないと何を対象にするかまで確認が必要です。番号があるだけで、自動的に他の注文が守られるわけではありません。
デモ口座では、対象にしたい注文と残したい注文を分け、実行前後を比較すると確認しやすくなります。たとえば同一通貨の注文だけを処理する想定なら、別通貨の注文が残っていることも確認します。対象の注文が消えたという一方向の確認だけでなく、対象外が変更されていないことも見るのがポイントです。
取引を伴うスクリプトの成否と、その取引が有利かどうかは別問題です。一括処理でも希望価格での成立や利益を保証するものではありません。利用する会社の取引条件・手数料・ツール対応は、その会社の最新案内を確認してください。
決済と取消の区別はOrderCloseの公式仕様とOrderDeleteの公式仕様、識別番号はOrderMagicNumberの公式仕様で確認できます。
稼働EAの再発注と競合させない

スクリプトを実行しても、既存EAが自動的に止まるとは考えないでください。EAとスクリプトは別のプログラムとして動作し、同じチャートで併用される場合もあります。チャートを分けたとしても、同じ口座の注文を扱うなら競合を避けられるとは限りません。
たとえば、保有ポジションがなくなると新たに注文するEAを動かしたまま全決済すると、スクリプトが決済した後にEAが新規注文を出す可能性があります。その場合、決済処理の失敗と、決済後の再発注を分けなければ、何度も全決済を繰り返すことになってしまいます。
作業前に、その口座へ注文を出すEAや別のターミナル、VPS上の稼働を確認します。手元のMT4の設定を変えるだけでは、別に動いている環境の発注まで管理できません。自分が把握していない稼働元がある状態なら、先に運用構成を整理する方が安全です。
取引スクリプトを使うときは、他のEAが新規発注しない状態を、EAの仕様に沿って用意します。個別設定で取引を止める、チャートからEAを外すなど、実際の運用に合う方法を選びます。ただしEAを止めると、EAが担っていた決済・注文管理も止まる可能性があるため、保有中の取引をどう管理するかまで決めておきます。
全体の自動売買をOFFにしてから、そのまま決済スクリプトを動かしても、取引処理自体が許可されません。一方、スクリプトのために全体をONへ戻すと、個別の取引許可が残るEAも発注可能な状態になり得ます。「全体OFF→全体ON」だけで準備を終えず、他のEAの状態を個別に確認する必要があります。
作業用のチャートを一つ用意すると実行先は分かりやすくなりますが、口座の分離にはなりません。初回検証では、ほかのEAを動かさないデモ環境で、手元のツールの対象と結果を確認してから、実際の運用手順へ組み込むことをおすすめします。
EAとスクリプトの実行単位はMetaQuotesの実行仕様に基づきます。上の競合例は、その仕様と「条件が成立すると注文するEA」を組み合わせた場合の運用上の想定例です。
終了と処理結果を別々に確認する
スクリプトの処理が終わったことと、目的の処理がすべて成功したことは別です。途中の一件で失敗して終了する作りもあります。終了したら、まず実行した時刻を手がかりに、ターミナルのエキスパート欄や操作履歴を確認し、スクリプト名に対応するメッセージを探します。
ただし、成功・失敗や処理件数をどこまで表示するかはプログラム次第です。「loaded」「removed」など、読み込みや終了に関する表示だけを、全注文処理の成功と読み替えないようにしましょう。対象なしで終了したのか、権限不足なのか、途中まで進んだのかを、注文側の状態と照合します。
注文処理では、取引タブで現在残っているポジションと未約定注文を見ます。続けて口座履歴で、対象の注文番号、銘柄、数量、処理時刻を確認します。履歴が見当たらないときは、表示期間が実行した時刻を含んでいるかも確認してください。

| 見る場所 | 確かめること |
|---|---|
| 取引タブ | 対象の残存、対象外の注文、数量の変化 |
| 口座履歴 | 対象注文の決済・取消状況と時刻 |
| エキスパート欄 | ツール自身の結果表示やエラー |
| 操作履歴 | 接続・取引要求など周辺の出来事 |
仮に実行前に対象が三件あり、二件だけ処理されたなら、終了済みでも確認は終わりません。残る一件の状態とメッセージを調べます。全件をもう一度処理する前に、既に成功した分へ再実行が影響しないか、処理条件が変わっていないかも確認が必要です。
新しい注文が残っている場合は、その注文が実行前からあったものか、EAが後から出したものかを確認します。同じ銘柄・同じ数量でも、注文番号や時刻が異なれば別の注文の可能性があります。単純に件数だけを見るより、どの注文がどう変わったかを追う方が判断しやすくなります。
確認項目は公式の取引タブと口座履歴、エキスパート欄の案内を参照しています。
MT4スクリプトは停止まで手順にする
動作中のスクリプトを止めるときは、実行しているチャートの右クリックメニューから「スクリプトを削除」に相当する項目を使います。公式ヘルプでは、この項目が有効な間はスクリプトが動作中とされています。名称の表記は利用環境で確認してください。
同じチャートに別のスクリプトを追加しても、実行中のものは外れます。ただし停止のためだけに別の取引スクリプトを起動すると、別の処理を始めることになるため、通常は削除操作を選びます。一つのチャートに追加できるスクリプトは一つという制約も、連続起動の前に覚えておきたい点です。
ナビゲーターの一覧からファイルを削除する操作は、チャートで実行中の同名プログラムを止める操作とは違います。使わないファイルの整理は、稼働が終わったことを確認してから行います。単に一覧から見えなくなったことを停止確認にしないようにしましょう。
チャートの通貨ペアや時間足の変更、MT4の終了でもスクリプトは外れます。しかし、予定していた処理の途中で環境を変えると、どこまで進んだか分かりにくくなります。意図的な停止では、操作後に対象と結果を確認するところまでを一組にします。
停止は、すでに約定した取引を元に戻す機能ではありません。注文の送信や一部の決済が済んだ後なら、その結果は別途確認が必要です。停止操作をしたので全処理が取り消された、と判断せず、取引タブと履歴を見直してください。
今後使わない場合は、処理が終了したことと、取引・ファイル・チャートに残った変更を確かめてから、配布ファイルを整理します。再利用する場合は、次回も口座、対象、設定をその都度確認します。デモで確認できたことと、実口座の約定条件が同一であることも別なので、同じ結果を保証するものではありません。
削除と停止の関係はMetaTrader 4公式のスクリプト終了ヘルプに記載されています。表示を継続する分析ツールの導入が目的なら、MT4のインジケーターの入れ方と確認方法を参照してください。
