ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
保有ポジションにストップやリミットを簡単に設定できる方法はありますか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
このページでわかること・できること
〇ストップとリミットを簡単に注文する方法
〇スクリプト「SetStoploss」のダウンロード
〇「SetStoploss」のインストールと使い方について
S/L・T/Pを一括で注文できるスクリプト「SetStoploss」
スクリプト「SetStoploss」をMT4で使用すれば簡単にストップロス注文、テイクプロフィット注文を実行できる。
注文は一括で行われるため、オープンポジションにはすべて設定したPIPSでのストップロス、テイクプロフィットが適用される。
ストップロス、及びテイクプロフィットをパラメーター画面で入力し、実行するとすべてのオープンポジションに適用される。
0に設定されている場合は変更されない仕様となる。
スクリプトのインストール
スクリプトはデータフォルダの「Scripts」フォルダへ移動し、MT4を再起動すればインストールが完了する。
この手順にてフォルダを開き、Scriptsフォルダ内にスクリプト「SetStoploss」を移動する。
ナビゲーター>スクリプトからSetStoplossを選択し実行できる。
ダブルクリック、チャートに適用、などの方法で実行可能。
実行されるとパラメーター画面が開き、ストップロス及びテイクプロフィットを設定できる。
スクリプト使用上の注意
設定されたストップロス及びテイクプロフィットの変更は可能だが、削除はできない。
設定されたストップロス、テイクプロフィット注文を削除する場合はチャート上で削除する。
テイクプロフィットの値が現在のプライスと近すぎる場合、値動きによっては即時決済される恐れがある。
S/L・T/P変更スクリプトのコード
//+------------------------------------------------------------------+
//| SetStoploss.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 TakeProfit = 0.0;
double StopLoss = 0.0;
// パラメーターからStopLossとTakeProfitを取得
StopLoss = InpStopLoss;
TakeProfit = InpTakeProfit;
// ドル円やユーロドルのように5桁または3桁の通貨ペアの場合は10倍に補正
if (Digits() == 5 || Digits() == 3)
{
TakeProfit *= 10;
StopLoss *= 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;
}
// BuyとSellのためのStopLossとTakeProfitを計算
double tpbuy = Bid + TakeProfit * _Point;
double slbuy = Bid - StopLoss * _Point;
double tpsell = Bid - TakeProfit * _Point;
double slsell = Bid + StopLoss * _Point;
// ストップロスとテイクプロフィットを設定
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)
{
if (OrderType() == 0) // Buy Order
{
sl = (StopLoss != 0) ? slbuy : OrderStopLoss();
tp = (TakeProfit != 0) ? tpbuy : OrderTakeProfit();
}
else if (OrderType() == 1) // Sell Order
{
sl = (StopLoss != 0) ? slsell : OrderStopLoss();
tp = (TakeProfit != 0) ? tpsell : OrderTakeProfit();
}
// オーダー修正
if (!OrderModify(OrderTicket(), OrderOpenPrice(), 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()
関数を使用して、ポジションのストップロスとテイクプロフィットを修正。
便利な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
S/L・T/P注文を一括でキャンセルする方法|MT4スクリプト
-
海外FXのEA_MT4
ストップロス(損切り)とテイクプロフィット(利食い)を一括で注文する方法
-
海外FXのEA_MT4
ポジション全決済と売りのみ・買いのみ決済を選択できる一括決済スクリプト
-
海外FXのEA_MT4
すべて・または選択したチャートを一括で開く方法|MT4スクリプト
-
海外FXのEA_MT4
チャートのトレンドラインまたはオブジェクトすべてを一括で削除する方法
-
海外FXのEA_MT4
チャートのタイムフレーム(期間•時間枠)を一括で変更するスクリプト
まとめ
スクリプト「SetStoploss」を使用することで、オープンポジションに対して一括でストップロス、テイクプロフィットの注文を入れることができる。
注文内容はパラメーター画面から設定可能で、設定値の単位はpipsとなる。
売り、買いともにオープンポジションすべてに対して同様の注文がされる。
実行された注文の変更はSetStoplossで可能だが、削除はできない。
注文の削除が必要となった場合にはチャート上から処理する。