MT4でSL・TP注文を一括でキャンセルする方法
SL注文やTP注文を簡単に取り消す方法はありますか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得を得てます
テスト累計100年越え・リアル取引公開2020年~
このページでわかること・できること
〇SLとTP注文を一括で取消すスクリプトについて
〇スクリプトのダウンロード
〇スクリプトのインストールと使い方
SLとTP注文を一括で取消すスクリプト|DeleteOrders
MT4用スクリプトのDeleteOrdersをチャート上で実行すれば、保有ポジションに設定されたSLとTP注文を一括で取消すことができる。
MT4用スクリプトDeleteOrdersは保有ポジションのSL・TP注文のみを処理し、指値逆指値注文には影響がない。
スクリプトを実行すると、すべてのSL・TP注文に対して処理される。同じプラットフォームであれば通貨ペア問わずにSL・TP注文は取り消される。
SLとTPとは?
FX取引におけるSL(ストップロス)とTP(テイクプロフィット)は、リスク管理のための重要な注文方法だ。
- SL(ストップロス): ストップロスは、取引が特定の損失額に達したときに自動的にポジションを閉じる注文で、予想外の変動などによる大きな損失を防ぐ。たとえば、買いポジションを保有している場合、価格があるレベルまで下がったら自動的に売るように設定する。
- TP(テイクプロフィット): テイクプロフィットは、取引が目標の利益額に達したときに自動的にポジションを閉じる注文で、望んでいた利益を確保し、利益が減少するリスクを回避できる。たとえば、売りポジションを取っている場合、価格があるレベルまで下がったら自動的に買うよう設定する。
これらの注文は取引戦略の一環として使用され、感情に左右されずにリスク管理し、利益を確保するために有効となる。
DeleteOrdersのダウンロード
このリンクからDeleteOrdersがダウンロードできる。ファイルは.ex4で、MT4のデータフォルダにあるscriptへ移動してインストールする。
DeleteOrdersのインストール
DeleteOrdersをダウンロードしたら、MT4の「Scriptsフォルダ」へファイルを移動してインストールする。
スクリプトをScriptsフォルダへ移動し、MT4を再起動すればインストールが完了する。
インストールしたスクリプトはナビゲーターのスクリプトから呼び出しが可能となる。
SL、TP注文を一括で削除する|DeleteOrdersの使い方
スクリプトの実行は「ダブルクリック」または「チャートへドラッグアンドドロップ」などで可能。
チャートへドロップする場合でも、どのチャートへドロップしてもすべての注文に対して処理がされる。
スクリプトが実行される前に、確認画面で実行を選択できる。
使用上の注意
スクリプトはすべてのSL・TP注文を取消す。
指値、逆指値注文に対して処理はされない。
チャートへドロップして実行した場合でも対象のチャートのみに適用されるわけではなく、すべてのチャート、注文に対して処理が実行される。
SL、TP注文が一括でできるスクリプトを併用する
SL、TPを一括で注文するスクリプト「SetSL-TP」を合わせて使用すれば損切や利食いの設定がかなり楽になる。
「SetSL-TP」はすべてのオープンポジションに対してストップロスとテイクプロフィットを一括設定できるスクリプトだ。
設定値を0にすることで、ストップロスのみ注文、テイクプロフィットのみ注文と応用できる。
SetSL-TPでした注文を、DeleteOrdersで取消したり、SetSL-TPで再注文したりと細かな調整作業も簡単に行える。
DeleteOrdersのソースコード
//+------------------------------------------------------------------+
//| DeleteOrders.mq4 |
//| Copyright 2024, FX-Bonus.net |
//| https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link "https://fx-bonus.net/"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
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;
// 注文を変更してストップロスとテイクプロフィットを0に設定する
bool modifyResult = OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0, 0);
if(!modifyResult)
{
Print("注文のストップロスとテイクプロフィットのキャンセルに失敗しました ", OrderTicket());
}
}
}
ソースコードの概要
CalculateCurrentOrders()
関数:- 現在のオープンポジションの数を計算する関数。
OrdersTotal()
関数を使用して、全てのオープンポジション数を取得し、その中から売買の数をカウントしている。- 売買の数を返すことで、後続の処理でオープンポジションの有無を確認する。
CancelAllSLnTP()
関数:- オープンポジションの中からストップロスとテイクプロフィット注文をキャンセルする関数。
OrderSelect()
関数を使用してオープンポジションを順番に選択し、その注文に対してOrderModify()
関数を使用し S/L と T/P を0に設定している。
OnStart()
関数:- スクリプトの開始時に実行される関数。
CalculateCurrentOrders()
関数を使用してオープンポジションの数を取得し、その数が0でなければCancelAllSLnTP()
関数を呼び出して S/L と T/P をキャンセルする。OnStart()
関数:- この関数はスクリプトのメインとなる関数。スクリプトを実行するとき最初に呼び出す。
CalculateCurrentOrders()
関数を使用してオープンポジションの数を取得し、それがゼロでない場合はキャンセルの確認をユーザーに求める。MessageBox()
関数を使用して、ユーザーにキャンセルの確認を行い、IDYES
(Yesボタンがクリックされた)の場合にのみCancelAllSLnTP()
関数を呼び出して注文をキャンセルする。- オープンポジションがない場合は、単にメッセージを出力する。
CalculateCurrentOrders()
関数:- 現在のオープンポジションの数を計算する関数。
OrdersTotal()
関数を使用して全てのオープンポジションの数を取得し、買いポジションと売りポジションの数をカウントする。
CancelAllSLnTP()
関数:- オープンポジションの中からストップロスとテイクプロフィット注文をキャンセルする関数。
OrderSelect()
関数を使用してオープンポジションを順番に選択し、OrderModify()
関数を使用して S/L と T/P を0に設定する。
便利なMT4スクリプト集
-
海外FXのEA_MT4
ラウンドナンバーに自動で水平ラインを引く|MT4スクリプト
-
海外FXのEA_MT4
市場ごとに高値と安値を色分けするMT4ツール|時間帯ブレイクアウト
-
海外FXのEA_MT4
取引履歴をすべてCSVファイルに出力するスクリプト|MT4
-
海外FXのEA_MT4
リスクゼロの損益分岐点でストップ注文するスクリプト|ブレイクイーブン
-
海外FXのEA_MT4
MT4を便利にするスクリプトまとめ
-
海外FXのEA_MT4
すべてのチャートを一括で閉じる方法|通貨ペア選択も可|MT4スクリプト
-
海外FXのEA_MT4
MT4でSL・TP注文を一括でキャンセルする方法
-
海外FXのEA_MT4
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
海外FXのEA_MT4
MT4一括決済スクリプト|全決済と売り買い決済の選択もできる
-
海外FXのEA_MT4
すべてのチャートを一括で開くMT4スクリプト
-
海外FXのEA_MT4
チャートのトレンドラインやオブジェクトを一括で削除する方法
-
海外FXのEA_MT4
MT4チャートの時間足を一括で切替えるツール
まとめ
このページでは、MT4用のスクリプト「DeleteOrders」を使って、FX取引におけるSL(ストップロス)とTP(テイクプロフィット)注文を一括で取り消す方法について解説している。
スクリプトのダウンロードからインストール、具体的な使用方法までのステップを説明し、注意点や便利な応用方法についても触れる。
DeleteOrdersを実行すると、保有するすべてのポジションに設定されたSLとTP注文が通貨ペアに関係なく取り消されるため、取引の手間を大幅に削減できる。また、指値や逆指値注文には影響がないため、リスク管理が容易である。このスクリプトを使用することで、トレーダーは感情に左右されずに効率的なリスク管理が可能になる。併用できる他のスクリプトとして「SetSL-TP」も紹介されており、これを使えば全オープンポジションに一括でSLやTPを設定したり、設定値の調整も簡単に行える。