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

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

保有ポジションにストップやリミットを簡単に設定できる方法はありますか?

ホシノ

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

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

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

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

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

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

目次

S/L・T/Pを一括で注文できるスクリプト「SetStoploss」

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

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

ダウンロードはこちら

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

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

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

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

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

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

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

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

コードの解説

  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()関数を使用して、ポジションのストップロスとテイクプロフィットを修正。

便利なMT4スクリプト集

まとめ

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

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

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

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

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

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

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

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

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

ポジション監視の時間

集中力は続いてますか?


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


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

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

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

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

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

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

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

オートクローズツール

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

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

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