ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法

ストップ変更スクリプトアイキャッチ
  • URLをコピーしました!

保有ポジションにストップ(SL)やテイクプロフィット(TP)を簡単に注文できる方法はありますか?

ホシノ

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

この無料EA不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~

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

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

〇ストップとリミットを簡単に注文する方法

〇スクリプト「SetSL-TP」のダウンロード

〇「SetSL-TP」のインストールと使い方について

SLTP注文変更画面
MT4では複数ポジションの注文変更に対応していない

MT4でSL、TP注文を出す場合は、ポジションひとつずつに操作が必要になる。
しかし、ツールを使うことによって複数ポジションに対し、一括でSL、TP注文を出すことができるようになる。

目次

SL・TPを一括で注文できるスクリプト「SetSL-TP」

SetStoplossでSL/TPをセットする

スクリプト「SetSL-TP」をMT4で使用すれば簡単にストップロス注文、テイクプロフィット注文を実行できる。
注文は一括で行われるため、オープンポジションにはすべて設定したPIPSでのストップロス、テイクプロフィットが適用される。

ストップロス、及びテイクプロフィットをパラメーター画面で入力し、実行するとすべてのオープンポジションに適用される。
0に設定されている場合は変更されない仕様となる。

SetSL-TPのダウンロード

スクリプトはここのリンクからダウンロードできる。SetSL-TPは.ex4のスクリプトファイルで、MT4のデータフォルダへファイルを移動してインストールする。

スクリプトのインストール

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

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

この手順にてフォルダを開き、Scriptsフォルダ内にスクリプト「SetSL-TP」を移動する。

ナビゲーター>スクリプトからSetSL-TPを選択し実行できる。
ダブルクリック、チャートに適用、などの方法で実行可能。

実行されるとパラメーター画面が開き、ストップロス及びテイクプロフィットを設定できる。

SetSL-TPの使い方

ここではSetSL-TPの使い方について説明する。

  1. 自動売買を許可する
  2. SetSL-TPを実行
  3. SL/TPの値を設定

自動売買を許可

MT4_オプション_自動売買を許可する

MT4のメニューから自動売買の許可を設定する。

ツールオプションエキスパートアドバイザ自動売買の許可にチェック

SetSL-TPはスクリプトだが、売買注文に関わるため自動売買の許可が必要になる。
この設定をしない場合はエラーでスクリプトは使用できないので注意。

SetSL-TPを実行

SetStoplossナビゲーター画面
SetSL-TPはナビゲーターから実行できる

SetSL-TPを実行する。スクリプトは、MT4ナビゲーターからドラッグアンドドロップ、またはダブルクリックで実行できる。SetSL-TPを実行すると「パラメーターの入力」ができる。
この画面でストップロスとテイクプロフィットをそれぞれ設定しよう。

SL/TPの値を設定

SetStoplossパラメーター画面
パラメーター画面でストップロスとテイクプロフィットをpips単位で設定可能

ストップロス、テイクプロフィットはそれぞれPIPS単位で設定可能。
0.0PIPSのままならストップロス、またはテイクプロフィットは注文されない仕様になっている。
どちらか片方だけ注文したい場合、注文しない方を0.0PIPSにしておけば対応できる。

ストップロス、テイクプロフィットをそれぞれ設定し「OK」をクリックして設定完了。保有しているすべてのポジションに設定した値で注文される。

注文を一括で削除するスクリプトと併用する

DeleteOrdersを使えば注文を一括削除できる

ポジションに設定されたSL、TP注文を一括でキャンセルできるスクリプト「DeleteOrders」を使えば、SetSL-TPの注文を簡単にキャンセルできるため、併せて使うと便利なツールだ。

「DeleteOrders」についてはこちらの記事で解説している。

スクリプト使用上の注意

設定されたストップロス及びテイクプロフィットの変更は可能だが、SetSL-TPからは削除できない。
設定されたストップロス、テイクプロフィット注文を削除する場合はチャート上で削除、またはDeleteOrdersを使って削除する。

テイクプロフィットの値が現在のプライスと近すぎる場合、値動きによっては即時決済される恐れがある。

SL・TP変更スクリプトのソースコード

//+------------------------------------------------------------------+
//|                                                  SetSL-TP.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
#property show_inputs
#include <stdlib.mqh>
input double InpStopLoss=100.0; // ストップロス(Pips)
input double InpTakeProfit=0; //テイクプロフィット(Pips)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
    // 変数の宣言
    double StopLoss = 0.0;
    double TakeProfit = 0.0;
   
    // パラメーターからStopLossとTakeProfitを取得
    StopLoss = InpStopLoss;
    TakeProfit = InpTakeProfit;

    // ドル円やユーロドルのように5桁または3桁の通貨ペアの場合は10倍に補正
    if (Digits() == 5 || Digits() == 3)
    {
        StopLoss *= 10;
        TakeProfit *= 10;
    }

    // オーダーがない場合は終了
    if (OrdersTotal() == 0)
        return;

    // 自動取引が許可されていない場合は終了
    if (!IsTradeAllowed())
    {
        Alert("Autotrade is NOT allowed.");
        return;
    }

    // StopLossとTakeProfitが両方とも0の場合は修正不要として終了
    if (StopLoss == 0 && TakeProfit == 0)
    {
        Alert(" No SL/TP need to be modified");
        return;
    }

    // ストップロスとテイクプロフィットを設定
    double sl = 0.0, tp = 0.0;
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            break;

        // シンボルが同じで売買注文の場合のみ修正を行う
        if (OrderSymbol() == Symbol() && OrderType() < 2)
        {
            double openPrice = OrderOpenPrice(); // 各ポジションのオープン価格

            if (OrderType() == 0) // Buy Order
            {
                sl = (StopLoss != 0) ? openPrice - StopLoss * _Point : OrderStopLoss();
                tp = (TakeProfit != 0) ? openPrice + TakeProfit * _Point : OrderTakeProfit();
                
            }
            else if (OrderType() == 1) // Sell Order
            {
                sl = (StopLoss != 0) ? openPrice + StopLoss * _Point : OrderStopLoss();
                tp = (TakeProfit != 0) ? openPrice - TakeProfit * _Point : OrderTakeProfit();
                
            }

            // オーダー修正
            if (!OrderModify(OrderTicket(), openPrice, sl, tp, 0, 0))
            {
                Print("OrderModify Error: ", ErrorDescription(GetLastError()));
            }
        }
    }
}

ソースコードの詳細を解説

  1. 変数の宣言
    • TakeProfit:テイクプロフィットの価格を格納するための変数。
    • StopLoss:ストップロスの価格を格納するための変数。
  2. パラメーター取得
    • InpStopLoss:入力パラメーターとして設定されたストップロス(ピップス)を取得する。
    • InpTakeProfit:入力パラメーターとして設定されたテイクプロフィット(ピップス)を取得する。
  3. 桁数補正
    • Digits()関数を使用して、通貨ペアの桁数を確認し、5桁または3桁の場合は10倍に補正している。
      これは、いくつかの通貨ペアが基本的には5桁(例:USD/JPY)または3桁(例:XAU/USD)で表示されるため、価格計算時に補正が必要となる。
  4. オーダーの確認
    • OrdersTotal()関数を使用して、オープンされているポジションの数を確認。
      ポジションがない場合はスクリプトを終了。
    • IsTradeAllowed()関数を使用し、自動取引が許可されているかどうかを確認する。
      取引が許可されていない場合はスクリプトを終了。
  5. StopLossとTakeProfitの修正
    • StopLossTakeProfitが両方とも0ではない場合に修正が必要であることを確認する。
    • Buy(買い注文)とSell(売り注文)のためのStopLossとTakeProfitを計算する。
  6. オーダー修正
    • OrderSelect()関数を使用して各ポジションを選択し、そのポジションが注文である場合に修正を行う。
    • Buy注文の場合は、slbuytpbuyを使用し、Sell注文の場合はslselltpsellを使用している。
    • OrderModify()関数を使用して、ポジションのストップロスとテイクプロフィットを修正。

その他の無料でSL・TPを一括注文できるツール

ここで紹介しているツールはMT4マーケットから無料でインストールできる。詳細はMT4でも確認できるが、WEBで確認したい場合は「MQL5.com」へアクセスする。本記事では抜粋して紹介している。

マーケット画面
MT4のターミナルからマーケットへアクセスできる

Auto SL TP

Auto SL TP
Auto SL TP

Auto S/L T/Pは、デフォルトのストップロスとテイクプロフィットを自動的に設定するEA。このツールを使用するとスマートフォンからの取引でも自動的にリスク管理が行われ、資金の保護ができる。取引を開始する際、ストップロスとテイクプロフィットが自動で設定されるため、より安心して取引ができる。

AutoSTPending

AutoSTPending
AutoSTPending

AutoSTPendingは、取引時のストップロスとテイクプロフィットを自動的に設定・変更するEA。使いやすく複雑な設定が不要で、取引の効率化と簡素化をサポートする。このツールの使用で、他の業務に集中しながらも取引を効果的に管理できる。

Dagangduit Auto SLTP MT4

Dagangduit Auto SLTP MT4
Dagangduit Auto SLTP MT4

「Dagangduit EA Auto_SLTP」は、MT4向けにDagangduit Core Teamが開発したEAで、ストップロス(SL)とテイクプロフィット(TP)を自動的に管理する機能を持っている。このEAは取引の際にSLとTPのレベルを自動で設定・調整し、利益を確保しつつ損失を抑える。また、SLとTPの設定はピップ単位でカスタマイズできる。利益が特定のレベルに達したときに利益を固定する「利益ロック」機能や、複数のトレーリングストップ方法(クラシック、ステップバイステップ)が利用でき、変動の激しい市場でのリスク管理が容易になる。さらに、EAは現在のチャートのシンボルのみにSLとTPを適用するか、すべてのオープン注文に適用するかを選択可能。通知機能もあり、SLやTPが発動した際にはアラートを受け取れるため、取引の状況を常に把握できる。

ProfitLossTrailEA

このEAは、テイクプロフィットとストップロスの設定や削除、トレーリングストップロスの利用、ブレークイーブンの設定、特定の注文IDに基づく管理を行う。パラメータとして、テイクプロフィットとストップロスのピップ数やトレーリングストップの距離、ブレークイーブンのピップ数、注文の種類ごとの管理方法を設定することが可能。音声アラートや背景色の変更オプションも提供している。

Smart Fix SLTP

このスクリプトは、カスタマイズ可能な条件に基づいてすべてのオープントレードに自動的にストップロス(SL)とテイクプロフィット(TP)を設定できるツール。従来のスクリプトと異なり、継続的にトレードを監視し、新しい注文に対しても条件に応じてSLとTPを適用する。特徴として、SL/TPのレベルや対象注文の種類(買い、売り、または両方)の選択、特定のマジックナンバーやコメントの注文のみを変更、未決済注文への適用、設定基準の選択(オープン価格または現在の市場価格)、実行間隔の調整が可能。

便利なMT4スクリプト集

まとめ

スクリプト「SetSL-TP」を使用することで、オープンポジションに対して一括でストップロス、テイクプロフィットの注文を入れることができる。
注文内容はパラメーター画面から設定可能で、設定値の単位はpipsとなる。

売り、買いともにオープンポジションすべてに対して同様の注文がされる。
実行された注文の変更はSetSL-TPで可能だが、削除はできない。
注文の削除が必要となった場合にはチャート上から処理する。

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

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

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

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

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

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

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

ポジション監視の時間

集中力は続いてますか?


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


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

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

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

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

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

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

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

オートクローズツール

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

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

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