SL(ストップロス)やTP(テイクプロフィット)をすばやく一括で取り消したいとき、個別に操作するのは大変です。
本記事では、**MT4上のすべてのポジションに設定されたSL・TP注文を一括でキャンセルできる無料スクリプト「DeleteOrders」**をご紹介します。
ダウンロードから導入方法、使い方まで初心者にもわかりやすく解説しています。
取引の柔軟性を高め、作業効率を上げたい方は、ぜひご活用ください。
※本ツールは自己責任でのご利用をお願いいたします。重大な損失につながる可能性もあるため、リアル口座で使用する前にデモ口座でのテストを推奨します。
SLとTP注文を一括で削除する無料スクリプト「DeleteOrders」とは
「DeleteOrders」は、MT4上のすべてのオープンポジションに設定されたSL(ストップロス)とTP(テイクプロフィット)注文を、一括でキャンセルするための無料スクリプトです。
通常、SLやTPの変更や削除は1ポジションずつ手動で行う必要がありますが、このスクリプトを使えば、複数ポジションの注文を一度の操作でまとめて削除できます。取引タイミングの調整や急な相場変動への対応時に、大きな助けとなるツールです。
DeleteOrdersの特徴
- SL・TPのみを削除:指値注文(Buy Limit / Sell Limit)や逆指値注文(Buy Stop / Sell Stop)には影響しません。
- 全通貨ペア対象:どのチャートにスクリプトを実行しても、MT4上のすべてのポジションが対象になります。
- 操作は一度だけ:チャートにドラッグ&ドロップ、もしくはダブルクリックするだけで完了します。
このスクリプトが役立つシーン
- 相場急変時に、リスク回避のためにすべてのSL/TPを即座に解除したい場合
- 一括で新しいSL/TP設定を行う前に、既存の注文をすべてクリアしたい場合
- EAや他スクリプトとの併用で、細かな注文管理が必要な場合
DeleteOrdersのダウンロードと導入手順
ここでは、MT4にスクリプト「DeleteOrders」を導入する手順を画像なしでも理解できるようにわかりやすく解説します。
以下のボタンから「DeleteOrders」のスクリプトファイル(拡張子 .ex4
)をダウンロードします。
- MT4を起動し、上部メニューから「ファイル → データフォルダを開く」を選択します。
- 開いたフォルダ内で、以下の順にフォルダを開きます:
MQL4
→Scripts
ダウンロードしたDeleteOrders.ex4
ファイルを、Scriptsフォルダにコピーまたは移動します。
ファイルを配置した後、MT4を再起動してください。これでスクリプトがナビゲーターに表示されるようになります。

「ナビゲーター」ウィンドウの「スクリプト」欄に「DeleteOrders」が表示されていれば、インストールは完了です。
※表示されない場合は、右クリック →「更新」で再読み込みするか、再起動を再度試してください。
DeleteOrdersの使い方|チャートにセットして実行する方法
「DeleteOrders」は、MT4上で簡単に実行できるスクリプト型ツールです。
ここでは、実際にチャートへスクリプトをセットし、SL(ストップロス)・TP(テイクプロフィット)を一括で削除する方法を解説します。
MT4を起動し、左側の「ナビゲーター」ウィンドウを開きます。
- 「スクリプト」項目を展開
- インストール済みの「DeleteOrders」を探す
- 該当スクリプトをダブルクリック、もしくは任意のチャートにドラッグ&ドロップ

スクリプトを起動すると、「オープンポジションのS/LとT/P注文をキャンセルしますか?」という確認ダイアログが表示されます。
- 「はい」をクリック → 全ポジションのSL・TPが一括でキャンセルされます
- 「いいえ」をクリック → 処理は行われず、そのまま終了します
処理が完了すると、すべてのオープンポジションに設定されたストップロスとテイクプロフィットが「未設定(0)」の状態になります。
使用時の注意点とトラブル防止ガイド
「DeleteOrders」は便利な一括操作ツールですが、使い方を誤ると意図しない注文削除や取引エラーの原因となる可能性があります。
ここでは、使用前に知っておくべき注意点や、安全に使うためのポイントを解説します。
すべてのポジションに一括で適用される
このスクリプトは、MT4に表示されているすべてのオープンポジションに対してSL・TPを削除します。
どのチャートにセットしたかに関係なく、すべての通貨ペア・すべてのポジションに作用します。
一部のポジションだけを対象にしたい場合には、別の専用ツールを検討してください。
指値・逆指値注文は対象外
DeleteOrdersは、SL(ストップロス)とTP(テイクプロフィット)の削除のみを行います。
指値注文(Buy Limit / Sell Limit)や逆指値注文(Buy Stop / Sell Stop)には影響を与えません。
操作は元に戻せない
一度削除したSL・TP注文は、元に戻すことができません。
再設定する場合は、手動または「SetSL-TP」などのスクリプトを使って再度設定してください。
自動売買中のEAとの干渉に注意
スクリプトを実行すると、EAが自動で設定していたSL・TPも削除される可能性があります。
自動売買が稼働中の場合は、スクリプト実行後にEAの挙動が意図通りかどうか確認してください。
必ず事前にデモ口座でテストする
新しいスクリプトを使用する際は、いきなりリアル口座で使わず、デモ口座での動作確認を強く推奨します。
- 注文が正しくキャンセルされるか
- 他の注文やEAに影響を及ぼさないか
- 自分のトレードスタイルに適しているか
上記を確認しましょう。
MT4の動作環境にも注意
- スクリプトが動作しない場合、MT4の「自動売買」ボタンやスクリプト実行許可の設定を確認してください。
- VPSや古いMT4ビルドを使用している場合、互換性の問題で正常に動作しないことがあります。
トレードに関わる操作は、常に慎重に行うことが重要です。
本ツールは「効率化」を目的とした補助ツールであり、最終的な判断と責任はユーザー自身にあることをご理解ください。
SL・TPを一括で設定する無料スクリプト「SetSL-TP」との併用
SL(ストップロス)とTP(テイクプロフィット)の注文は、設定と削除をセットで効率化することで、取引の柔軟性と精度が大きく向上します。
ここでは、SL・TPを一括で設定できる無料スクリプト「SetSL-TP」と「DeleteOrders」を組み合わせて使う方法を紹介します。
「SetSL-TP」とは?
「SetSL-TP」は、すべてのオープンポジションに対して、一括でストップロスとテイクプロフィットを設定できるMT4用スクリプトです。
設定例:
- ストップロスのみを設定:TPを0に設定
- テイクプロフィットのみを設定:SLを0に設定
- SLもTPも不要:DeleteOrdersで一括削除
一括でストップロスとテイクプロフィットを設定できるMT4用スクリプト「SetSL-TP」はこちらからどうぞ
DeleteOrdersとの組み合わせ例
- SL・TPを一度に設定(SetSL-TP)
- 相場状況が変化したら一括で削除(DeleteOrders)
- 新たな水準で再設定(SetSL-TP)
このように、両スクリプトを併用することで、変更や調整のたびに手動で個別編集する手間がなくなります。
両ツールを併用するメリット
- リスク管理の自動化:感情に左右されず、機械的に損切・利確ポイントを設定可能
- 取引スピードの向上:数秒で全ポジションに設定/削除が可能
- トレード戦略の柔軟性:状況に応じた素早い調整が実現
特にボラティリティの高い相場や指標発表前後など、迅速なリスク調整が求められる局面では、この2つのスクリプトが大きな武器になります。
この記事で紹介したスクリプトのように、取引効率を上げる無料ツールをお探しの方へ。
当サイトの無料EA一覧ページでは、実用性の高い自動売買ツールを多数紹介しています。
👉 無料EAを探す
DeleteOrdersのMQL4ソースコード全文と学習用解説
このセクションでは、MT4スクリプト「DeleteOrders」のMQL4ソースコード全文と、その構造や関数の動作を学習目的で丁寧に解説します。
MQL4に興味がある方や、独自にカスタマイズしたい方はぜひ参考にしてください。
void OnStart()
{
int ordersCount = CalculateCurrentOrders();
if (ordersCount != 0)
{
if (MessageBox("オープンポジションのS/LとT/P注文をキャンセルしますか?", "確認", MB_YESNO) == IDYES)
{
CancelAllSLnTP();
}
}
else
{
Print("オープンポジションがありません。キャンセルする注文はありません。");
}
}
int CalculateCurrentOrders()
{
int buys = 0, sells = 0;
for (int i = 0; i < OrdersTotal(); i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
break;
if (OrderType() == OP_BUY)
buys++;
else if (OrderType() == OP_SELL)
sells++;
}
if (buys > 0)
return buys;
else
return -sells;
}
void CancelAllSLnTP()
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
break;
bool modifyResult = OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0, 0);
if (!modifyResult)
{
Print("注文のストップロスとテイクプロフィットのキャンセルに失敗しました ", OrderTicket());
}
}
}
ソースコードの構造と動作解説(学習者向け)
void OnStart()
- スクリプトの起動時に最初に実行される関数
CalculateCurrentOrders()
でポジション数をチェック- オープンポジションがあれば、確認ダイアログを表示
- ユーザーが「はい」を選ぶと、
CancelAllSLnTP()
でSL・TPをすべてキャンセル
int CalculateCurrentOrders()
- 現在のオープンポジションの数を取得する関数
OrdersTotal()
で全注文数を取得OrderType()
で買い/売りを判定し、それぞれカウント- 買いポジションがあれば正の値、売りポジションだけなら負の値を返す
(後続処理でポジションがあるかどうかの判断に使用)
void CancelAllSLnTP()
- SL(Stop Loss)とTP(Take Profit)を0に設定して削除する関数
- すべての注文に対して
OrderModify()
を実行 - SLとTPをともに「0」に設定することで、削除と同等の効果を実現
modifyResult
がfalse
(=失敗)の場合にはログを出力して通知
このコードから学べるMQL4の基礎
使用関数 | 解説 |
---|---|
OnStart() | スクリプト起動時に自動で呼び出される初期関数 |
OrdersTotal() | 現在の全注文(保有中のポジション)数を取得する関数 |
OrderSelect() | 注文の詳細を取得するための関数。ループ内で各ポジションにアクセス |
OrderType() | 注文が買いか売りかを判定する関数 |
OrderModify() | 既存の注文情報(価格・SL・TPなど)を変更する関数 |
MessageBox() | 確認用のポップアップダイアログを表示するWindows標準関数 |
このコードは、MT4スクリプト作成の基礎学習教材としても優れており、構造がシンプルなため、初学者でも読み解きやすい内容になっています。
スクリプトの安全性と当サイトの提供ポリシー
FXに関するツールやスクリプトは、資産運用に直接関わる重要な要素です。
そのため、当サイトでは安全性と信頼性を最優先に考えた提供方針を採用しています。
ここでは、DeleteOrdersをはじめとしたスクリプトの安全性、および当サイトのスクリプト提供における考え方をご紹介します。
スクリプトの安全性について
- 本スクリプト(DeleteOrders)は、MQL4で作成された単純な構造のスクリプトであり、不正な外部通信やDLLの使用、口座情報の取得といった危険なコードは一切含まれていません。
- MetaTrader 4(MT4)標準の機能のみを使用しており、ローカル環境内で完結する動作です。
- 提供されている
.ex4
ファイルは、不正コードやマルウェアを含まない安全な形式でコンパイル済みです。
とはいえ、MT4スクリプトは取引操作を伴うため、必ずデモ口座で事前テストし、動作内容を理解したうえでご利用ください。
当サイトの提供ポリシー
当サイトでは、以下のポリシーに基づき、スクリプトやEA(エキスパートアドバイザー)を提供しています。
- 利用はすべて無料:本記事で紹介するスクリプトは、すべて無料でダウンロード・使用できます。
- 商用・再配布は禁止:商用利用やファイルの再配布、改変したスクリプトの再公開はご遠慮ください。
- 利用は自己責任:ツール使用によって発生した損失や不具合については、当サイトは一切の責任を負いかねます。
- 最新の相場状況に適応する保証はありません:相場や環境の変化によって動作や効果が変わる可能性があるため、定期的な見直し・アップデートを推奨します。
なぜ無料で提供しているのか?
当サイトでは、EAやスクリプトを通じてFXトレーダーの取引効率を高めることを使命と考えています。
また、自社EAやサービスの認知拡大につながればという想いから、一定の信頼性と実用性を満たすツールを無償公開しています。
ご利用の際は、必ずご自身の環境・取引スタイルに適合しているかを確認した上で、安全にご活用ください。
よくある質問(FAQ)
- DeleteOrdersはリアル口座でも安全に使えますか?
-
はい、MT4の標準機能だけを使ったシンプルなスクリプトのため、基本的にはリアル口座でも安全に使用できます。
ただし、注文ミスや想定外の動作による損失を防ぐため、まずは必ずデモ口座で動作を確認してからのご利用をおすすめします。 - 一部のポジションだけSL・TPを削除することはできますか?
-
DeleteOrdersは、すべてのオープンポジションに一括で適用される仕様です。
特定のポジションだけを対象にしたい場合は、カスタマイズ版を開発するか、ポジション単位で操作可能なツールの利用をご検討ください。 - 削除したSL・TPを元に戻すことはできますか?
-
いいえ、DeleteOrdersで削除したSL・TPは元に戻せません。
再設定するには、手動で入力するか、別のスクリプト(例:SetSL-TP)を使用して新たに注文し直してください。 - スクリプトが動作しないのですが、原因は?
-
以下の項目を確認してみてください:
- MT4の「自動売買」ボタンがオンになっているか
- スクリプト実行が許可されているか(オプション設定)
- スクリプトを正しいフォルダ(
Scripts
)に入れているか - MT4を再起動したか
- ナビゲーターウィンドウで「更新」を行ったか
- 他のスクリプトやEAと同時に使っても問題ありませんか?
-
基本的には同時使用できますが、
EAがSL・TPを自動設定するタイプの場合、DeleteOrdersによる削除がそのEAの動作に影響を与える可能性があります。
EAの仕様を事前に確認し、必要に応じてスクリプト使用後にEAを再設定してください。 - スクリプトは将来的に更新されますか?
-
不具合報告やユーザー要望に応じて、必要があればアップデートを検討しています。
ただし、頻繁な更新を保証するものではないため、公開時点での仕様をよく理解した上でご利用ください。
まとめ|DeleteOrdersでMT4の注文管理を効率化しよう
「DeleteOrders」は、MT4でのSL(ストップロス)・TP(テイクプロフィット)注文を一括で削除できる無料スクリプトです。
複数ポジションを保有しているとき、すばやくリスク管理の調整を行いたい場面で、強力なサポートツールとなります。
本記事で解説したポイント
- DeleteOrdersの概要と基本機能
→ SL・TPをすべてのポジションからワンクリックで削除 - スクリプトのダウンロード・導入手順
→ MT4へのセットアップ方法を初心者向けに解説 - 実行方法と注意点
→ 誤操作を防ぐための確認ダイアログ付き、安全性に配慮 - SetSL-TPとの併用による応用方法
→ 一括で設定・削除できる便利な運用フローの構築
DeleteOrdersはこんな方におすすめ
- 相場急変時にすばやく注文調整をしたいトレーダー
- 複数ポジションを効率的に管理したい方
- 感情に左右されない取引ルールの運用を目指している方
SLやTPの設定・削除を手間なく行うことで、取引の柔軟性と安全性が向上します。
ぜひデモ口座で試して、あなたのトレードスタイルに合った運用法を見つけてみてください。