S/L・T/P注文を一括でキャンセルする方法|MT4スクリプト

ST-TPデリートアイキャッチ
  • URLをコピーしました!

S/L注文やT/P注文を簡単に取り消す方法はありますか?

ホシノ

FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。

BBF_MQL5-20240501
リアルトレード公開|EA BBF

このページでわかること・できること

〇S/LとT/P注文を一括で取消すスクリプトについて

〇スクリプトのダウンロード

〇スクリプトのインストールと使い方

目次

S/LとT/P注文を一括で取消すスクリプト|DeleteOrders

MT4用スクリプトのDeleteOrdersをチャート上で実行すれば、保有ポジションに設定されたS/LとT/P注文を一括で取消すことができる。
MT4用スクリプトDeleteOrdersは保有ポジションのS/L・T/P注文のみを処理し、指値逆指値注文には影響がない。

スクリプトを実行すると、すべてのS/L・T/P注文に対して処理される。同じプラットフォームであれば通貨ペア問わずにS/L・T/P注文は取り消される。

DeleteOrdersダウンロードはこちら

DeleteOrdersのインストールと使用方法について

DeleteOrdersをダウンロードしたら、MT4の「Scriptsフォルダ」へファイルを移動してインストールする。

ファイル>データフォルダを開く>MQL4>Scripts

スクリプトをScriptsフォルダへ移動し、MT4を再起動すればインストールが完了する。

インストールしたスクリプトはナビゲーターのスクリプトから呼び出しが可能となる。

DeleteOrdersナビゲーター画面
ナビゲーターからスクリプトを実行する

スクリプトの実行は「ダブルクリック」または「チャートへドラッグアンドドロップ」などで可能。
チャートへドロップする場合でも、どのチャートへドロップしてもすべての注文に対して処理がされる。

スクリプトが実行される前に、確認画面で実行を選択できる。

DeleteOrders確認画面
スクリプト実行前の確認は「はい」で実行「いいえ」で何もせず終了

使用上の注意

スクリプトはすべてのS/L・T/P注文を取消す。
指値、逆指値注文に対して処理はされない。
チャートへドロップして実行した場合でも対象のチャートのみに適用されるわけではなく、すべてのチャート、注文に対して処理が実行される。

S/L、T/Pを一括で注文するスクリプトと併用する

S/L、T/Pを一括で注文するスクリプト「SetStoploss」を合わせて使用すれば損切や利食いの設定はかなり楽になる。
「SetStoploss」はすべてのオープンポジションに対してストップロスとテイクプロフィットを一括設定できるスクリプトだ。
設定値を0にすることで、ストップロスのみ注文、テイクプロフィットのみ注文と応用できる。
SetStoplossでした注文を、DeleteOrdersで取消したり、SetStoplossで再注文したりと細かな調整作業も簡単に行える。

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());
        }
    }
}

プログラムコードの概要

  1. CalculateCurrentOrders() 関数:
    • 現在のオープンポジションの数を計算する関数。
    • OrdersTotal() 関数を使用して、全てのオープンポジション数を取得し、その中から売買の数をカウントしている。
    • 売買の数を返すことで、後続の処理でオープンポジションの有無を確認する。
  2. CancelAllSLnTP() 関数:
    • オープンポジションの中からストップロスとテイクプロフィット注文をキャンセルする関数。
    • OrderSelect() 関数を使用してオープンポジションを順番に選択し、その注文に対して OrderModify() 関数を使用し S/L と T/P を0に設定している。
  3. 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スクリプト集

  • URLをコピーしました!
  • URLをコピーしました!

このEAを使って、将来の見通しが立ちました

収入を増やしたい、将来のための資産が欲しい、支払いに縛られない自由な生活がしたい

このEAを使うと将来が見通せます。

22年以上で無敗の安定取引。リスク0%運用も可能なロジック。年利100%越えの上級者向け取引も可能。

マネーマシンとして育て上げることで大きな不労所得を得られます。

BBF-Girl
ドリームEA_BBF 無料ダウンロード
BBF_MQL5-20240501
リアルトレード公開|EA BBF

ポジション監視の時間

集中力は続いてますか?


オートクローズツールを使ってポジション管理を自動化


自動ポジション管理だから万が一でも大丈夫

あなたは空いた時間を自由に、効率的に使えます

自動決済ルールは独自にカスタム可能

ストップ、リミット変更にも対応。

エントリー後のポジション管理をすべて自動化できるトレーディングサポートツール。

トレード中のちょっとした離席など、念のためセットといった使い方も可能。

MT4用自動決済ツール【AutoCloseTool】は無料で入手できます。

オートクローズツール

取引ごとにキャッシュバックが発生します

もらわないだけ損している
取引ごとに毎回発生する現金のキャッシュバック
海外FXのキャッシュバックはメリットしかないサービスです

取引ごとにキャッシュバック
目次