ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
![ストップ変更スクリプトアイキャッチ](https://fx-bonus.net/wp-content/uploads/2024/05/54036a47806a429e2b1962bfb41e9062.webp)
![](https://fx-bonus.net/wp-content/uploads/2024/06/d222909f1458fcb02c559289890a396f-150x150.webp)
保有ポジションにストップ(SL)やテイクプロフィット(TP)を簡単に注文できる方法はありますか?
![](https://fx-bonus.net/wp-content/uploads/2022/03/856dd2045123bdcb2f17d394a3705896-1-150x150.png)
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得を得てます
テスト累計100年越え・リアル取引公開2020年~
![BBF_MQL5-202400801](https://fx-bonus.net/wp-content/uploads/2022/03/BBF_MQL5-202400801-1024x353.png)
このページでわかること・できること
〇ストップとリミットを簡単に注文する方法
〇スクリプト「SetSL-TP」のダウンロード
〇「SetSL-TP」のインストールと使い方について
![SLTP注文変更画面](https://fx-bonus.net/wp-content/uploads/2024/05/ddceb76a92466ce918da3ee593d837f2.png)
MT4でSL、TP注文を出す場合は、ポジションひとつずつに操作が必要になる。
しかし、ツールを使うことによって複数ポジションに対し、一括でSL、TP注文を出すことができるようになる。
SL・TPを一括で注文できるスクリプト「SetSL-TP」
スクリプト「SetSL-TP」をMT4で使用すれば簡単にストップロス注文、テイクプロフィット注文を実行できる。
注文は一括で行われるため、オープンポジションにはすべて設定したPIPSでのストップロス、テイクプロフィットが適用される。
ストップロス、及びテイクプロフィットをパラメーター画面で入力し、実行するとすべてのオープンポジションに適用される。
0に設定されている場合は変更されない仕様となる。
SetSL-TPのダウンロード
スクリプトはここのリンクからダウンロードできる。SetSL-TPは.ex4のスクリプトファイルで、MT4のデータフォルダへファイルを移動してインストールする。
スクリプトのインストール
スクリプトはデータフォルダの「Scripts」フォルダへ移動し、MT4を再起動すればインストールが完了する。
この手順にてフォルダを開き、Scriptsフォルダ内にスクリプト「SetSL-TP」を移動する。
ナビゲーター>スクリプトからSetSL-TPを選択し実行できる。
ダブルクリック、チャートに適用、などの方法で実行可能。
実行されるとパラメーター画面が開き、ストップロス及びテイクプロフィットを設定できる。
SetSL-TPの使い方
ここではSetSL-TPの使い方について説明する。
- 自動売買を許可する
- SetSL-TPを実行
- SL/TPの値を設定
自動売買を許可
![MT4_オプション_自動売買を許可する](https://fx-bonus.net/wp-content/uploads/2022/02/8a2c812f13208a6c1d81a5cc97b0f420.png)
MT4のメニューから自動売買の許可を設定する。
SetSL-TPはスクリプトだが、売買注文に関わるため自動売買の許可が必要になる。
この設定をしない場合はエラーでスクリプトは使用できないので注意。
SetSL-TPを実行
![SetStoplossナビゲーター画面](https://fx-bonus.net/wp-content/uploads/2024/05/26e04923abd003429b2c978561c053d9.png)
SetSL-TPを実行する。スクリプトは、MT4ナビゲーターからドラッグアンドドロップ、またはダブルクリックで実行できる。SetSL-TPを実行すると「パラメーターの入力」ができる。
この画面でストップロスとテイクプロフィットをそれぞれ設定しよう。
SL/TPの値を設定
![SetStoplossパラメーター画面](https://fx-bonus.net/wp-content/uploads/2024/05/930156740f26e4f2de6dd8f5e0164eb5.webp)
ストップロス、テイクプロフィットはそれぞれPIPS単位で設定可能。
0.0PIPSのままならストップロス、またはテイクプロフィットは注文されない仕様になっている。
どちらか片方だけ注文したい場合、注文しない方を0.0PIPSにしておけば対応できる。
ストップロス、テイクプロフィットをそれぞれ設定し「OK」をクリックして設定完了。保有しているすべてのポジションに設定した値で注文される。
注文を一括で削除するスクリプトと併用する
ポジションに設定された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()));
}
}
}
}
ソースコードの詳細を解説
- 変数の宣言:
TakeProfit
:テイクプロフィットの価格を格納するための変数。StopLoss
:ストップロスの価格を格納するための変数。
- パラメーター取得:
InpStopLoss
:入力パラメーターとして設定されたストップロス(ピップス)を取得する。InpTakeProfit
:入力パラメーターとして設定されたテイクプロフィット(ピップス)を取得する。
- 桁数補正:
Digits()
関数を使用して、通貨ペアの桁数を確認し、5桁または3桁の場合は10倍に補正している。
これは、いくつかの通貨ペアが基本的には5桁(例:USD/JPY)または3桁(例:XAU/USD)で表示されるため、価格計算時に補正が必要となる。
- オーダーの確認:
OrdersTotal()
関数を使用して、オープンされているポジションの数を確認。
ポジションがない場合はスクリプトを終了。IsTradeAllowed()
関数を使用し、自動取引が許可されているかどうかを確認する。
取引が許可されていない場合はスクリプトを終了。
- StopLossとTakeProfitの修正:
StopLoss
とTakeProfit
が両方とも0ではない場合に修正が必要であることを確認する。- Buy(買い注文)とSell(売り注文)のためのStopLossとTakeProfitを計算する。
- オーダー修正:
OrderSelect()
関数を使用して各ポジションを選択し、そのポジションが注文である場合に修正を行う。- Buy注文の場合は、
slbuy
とtpbuy
を使用し、Sell注文の場合はslsell
とtpsell
を使用している。 OrderModify()
関数を使用して、ポジションのストップロスとテイクプロフィットを修正。
その他の無料でSL・TPを一括注文できるツール
ここで紹介しているツールはMT4マーケットから無料でインストールできる。詳細はMT4でも確認できるが、WEBで確認したい場合は「MQL5.com」へアクセスする。本記事では抜粋して紹介している。
![マーケット画面](https://fx-bonus.net/wp-content/uploads/2023/04/59cf90358b1fdbd3a2a83bb6b253282d-1024x348.png)
Auto SL TP
![Auto SL TP](https://fx-bonus.net/wp-content/uploads/2024/08/1feb22af63a5e41bc59e9f980ccc383d.jpg)
Auto S/L T/Pは、デフォルトのストップロスとテイクプロフィットを自動的に設定するEA。このツールを使用するとスマートフォンからの取引でも自動的にリスク管理が行われ、資金の保護ができる。取引を開始する際、ストップロスとテイクプロフィットが自動で設定されるため、より安心して取引ができる。
AutoSTPending
![AutoSTPending](https://fx-bonus.net/wp-content/uploads/2024/08/1ab3a48247d12976b278061747ce974c.jpg)
AutoSTPendingは、取引時のストップロスとテイクプロフィットを自動的に設定・変更するEA。使いやすく複雑な設定が不要で、取引の効率化と簡素化をサポートする。このツールの使用で、他の業務に集中しながらも取引を効果的に管理できる。
Dagangduit Auto SLTP MT4
![Dagangduit Auto SLTP MT4](https://fx-bonus.net/wp-content/uploads/2024/08/753438ea56b8ccf68a8b1fb3021cf693.jpg)
「Dagangduit EA Auto_SLTP」は、MT4向けにDagangduit Core Teamが開発したEAで、ストップロス(SL)とテイクプロフィット(TP)を自動的に管理する機能を持っている。このEAは取引の際にSLとTPのレベルを自動で設定・調整し、利益を確保しつつ損失を抑える。また、SLとTPの設定はピップ単位でカスタマイズできる。利益が特定のレベルに達したときに利益を固定する「利益ロック」機能や、複数のトレーリングストップ方法(クラシック、ステップバイステップ)が利用でき、変動の激しい市場でのリスク管理が容易になる。さらに、EAは現在のチャートのシンボルのみにSLとTPを適用するか、すべてのオープン注文に適用するかを選択可能。通知機能もあり、SLやTPが発動した際にはアラートを受け取れるため、取引の状況を常に把握できる。
ProfitLossTrailEA
![](https://fx-bonus.net/wp-content/uploads/2024/08/1bf23dd5cadf308f80b8cffd552f8d3e.jpg)
このEAは、テイクプロフィットとストップロスの設定や削除、トレーリングストップロスの利用、ブレークイーブンの設定、特定の注文IDに基づく管理を行う。パラメータとして、テイクプロフィットとストップロスのピップ数やトレーリングストップの距離、ブレークイーブンのピップ数、注文の種類ごとの管理方法を設定することが可能。音声アラートや背景色の変更オプションも提供している。
Smart Fix SLTP
![](https://fx-bonus.net/wp-content/uploads/2024/08/9f39c040f989db66b2eac3e36fc2e7db.jpg)
このスクリプトは、カスタマイズ可能な条件に基づいてすべてのオープントレードに自動的にストップロス(SL)とテイクプロフィット(TP)を設定できるツール。従来のスクリプトと異なり、継続的にトレードを監視し、新しい注文に対しても条件に応じてSLとTPを適用する。特徴として、SL/TPのレベルや対象注文の種類(買い、売り、または両方)の選択、特定のマジックナンバーやコメントの注文のみを変更、未決済注文への適用、設定基準の選択(オープン価格または現在の市場価格)、実行間隔の調整が可能。
便利なMT4スクリプト集
-
ラウンドナンバーに自動で水平ラインを引く方法|MT4スクリプト
-
市場ごとに高値と安値を色分けするMT4ツール|時間帯ブレイクアウト
-
取引履歴をすべてCSVファイルに出力するスクリプト|MT4
-
リスクゼロの損益分岐点でストップ注文するスクリプト|ブレイクイーブン
-
MT4を便利にするスクリプトまとめ
-
すべてのチャートを一括で閉じる方法|通貨ペア選択も可|MT4スクリプト
-
MT4でSL・TP注文を一括でキャンセルする方法
-
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
MT4一括決済スクリプト|全決済と売り買い決済の選択もできる
-
すべてのチャートを一括で開くMT4スクリプト
-
チャートのトレンドラインやオブジェクトすべてを一括で削除する方法
-
MT4チャートの時間足を一括で切替えるツール
まとめ
スクリプト「SetSL-TP」を使用することで、オープンポジションに対して一括でストップロス、テイクプロフィットの注文を入れることができる。
注文内容はパラメーター画面から設定可能で、設定値の単位はpipsとなる。
売り、買いともにオープンポジションすべてに対して同様の注文がされる。
実行された注文の変更はSetSL-TPで可能だが、削除はできない。
注文の削除が必要となった場合にはチャート上から処理する。