ポジション全決済と売りのみ・買いのみ決済を選択できる一括決済スクリプト

一括決済スクリプトのアイキャッチ
  • URLをコピーしました!

ポジションを一括で決済したいのですが。
買いだけ全決済、売りだけ全決済が選べるツールはありますか?

ホシノ

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

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

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

〇ポジションの全決済、買いポジションの全決済、売りポジションの全決済のができるスクリプト

〇ポジション決済スクリプトをダウンロード

〇スクリプトのプログラムについて

目次

スクリプトを使ってポジションを全決済する

MT4で全決済を可能とするスクリプト「PositionClose」は、オープンポジションの全決済と買いのみ全決済、売りのみ全決済が選択できる一括決済のツールだ。
このスクリプトを使えば簡単に「全決済」「買い全決済」「売り全決済」が可能となる。

スクリプトはこちらのリンクから無料でダウンロードが可能。

スクリプトをインストールする手順

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

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

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

PositionCloseを使った全決済の方法

スクリプトを実行すると確認画面が表示され、「全決済」か「買い全決済・売り全決済」を選択できる。
「はい」を選択した場合はオープンポジションがすべて決済される。
「いいえ」を選択した場合は「買い全決済・売り全決済」の選択画面へ移行する。
「キャンセル」を選択した場合はなにもせずスクリプトが終了する

PositionCloseの確認画面1
全決済をするか買い全決済、売り全決済の画面へ移動するかを選択する

買い全決済・売り全決済を選択した場合

最初の確認画面で買い全決済・売り全決済を選択した場合の選択肢は以下の通り。

「はい」買いポジションの全決済が実行される
「いいえ」売りポジションの全決済が実行される
「キャンセル」なにもせずスクリプトが終了する

PositionCloseの確認画面2
「はい」で買い「いいえ」で売りのポジションが全決済される

使用上の注意

スクリプトは実行されるとすべてのポジションに対して処理をする。
複数のチャート、通貨ペアで取引している場合でも、すべてのポジションに対して決済処理が実行される。

指値・逆指値注文に対しての処理はされない。

一括決済は疑似的なもので、決済処理は1ポジションずつ連続して実行される。
そのため、ポジション決済には若干のズレが生じる。

ポジション一括決済スクリプトのプログラム

//+------------------------------------------------------------------+
//|                                                PositionClose.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

// メッセージボックス用の定数
#define MB_YESNOCANCEL 0x00000003
#define IDYES 6
#define IDNO 7
#define IDCANCEL 2

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   // 確認メッセージを表示
   int answer1 = MessageBox("すべてのポジションを決済しますか?\n\n「はい」全決済\n「いいえ」買い全決済または売り全決済の選択へ\n「キャンセル」なにもしない", "全決済を選択", MB_YESNOCANCEL);

   // ユーザーの選択に応じて処理を行う
   switch(answer1)
   {
      case IDYES:
         CloseAllPositions();
         break;
      case IDNO:
         ShowSecondConfirmation();
         break;
      case IDCANCEL:
         // 何もしないで終了
         break;
   }
}

// すべてのオープンポジションを決済する関数
void CloseAllPositions()
{
   int totalPositions = OrdersTotal(); // オープンポジションの数を取得

   for(int i = totalPositions - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS) == true)
      {
         // クローズの結果を格納する変数を初期化
         bool closeResult = false;

         // オーダーのタイプに応じて決済
         if(OrderType() == OP_BUY)
         {
            closeResult = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, clrWhite);
         }
         else if(OrderType() == OP_SELL)
         {
            closeResult = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, clrWhite);
         }

         // クローズの結果をチェック
         if(closeResult == true)
         {
            Print("ポジションをクローズしました。");
         }
         else
         {
            Print("ポジションのクローズに失敗しました。エラーコード: ", GetLastError());
         }
      }
   }
}



// 2番目の確認画面を表示する関数
void ShowSecondConfirmation()
{
   int answer2 = MessageBox("買い全決済または売り全決済しますか?\n\n「はい」買いポジション全決済\n「いいえ」売りポジション全決済\n「キャンセル」なにもしない\n", "売り買い決済を選択", MB_YESNOCANCEL);

   switch(answer2)
   {
      case IDYES:
         CloseBuyPositions(); // 買いポジションをすべて決済する関数を呼び出す
         break;
      case IDNO:
         CloseSellPositions(); // 売りポジションをすべて決済する関数を呼び出す
         break;
      case IDCANCEL:
         // 何もしないで終了
         break;
   }
}

// 買いポジションをすべて決済する関数
void CloseBuyPositions()
{
   int totalPositions = OrdersTotal(); // オープンポジションの数を取得

   for(int i = totalPositions - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS) == true)
      {
         // 購入ポジションのみを決済
         if(OrderType() == OP_BUY)
         {
            bool closeResult = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, clrWhite);
            if(closeResult == true)
            {
                Print("買いポジションをクローズしました。");
            }
            else
            {
                Print("買いポジションのクローズに失敗しました。エラーコード: ", GetLastError());
            }
         }
      }
   }
}

// 売りポジションをすべて決済する関数
void CloseSellPositions()
{
   int totalPositions = OrdersTotal(); // オープンポジションの数を取得

   for(int i = totalPositions - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS) == true)
      {
         // 売却ポジションのみを決済
         if(OrderType() == OP_SELL)
         {
            bool closeResult = OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, clrWhite);
            if(closeResult == true)
            {
                Print("売りポジションをクローズしました。");
            }
            else
            {
                Print("売りポジションのクローズに失敗しました。エラーコード: ", GetLastError());
            }
         }
      }
   }
}

プログラムの詳細を解説

OnStart() 関数:
スクリプトのメイン関数であり、スクリプトが実行されるときに最初に呼び出される。
ユーザーに対してポジションのクローズを確認するメッセージボックスを表示する。
ユーザーの選択に応じて、全てのポジションをクローズするか、買いポジションまたは売りポジションのクローズを選択するか、または何もせず終了する。

CloseAllPositions() 関数:
OnStart() 関数内で全てのポジションをクローズするために呼び出される。
OrdersTotal() 関数を使用してオープンポジションの数を取得し、それらのポジションをループで処理する。
ポジションのタイプに応じて適切な方法でクローズする。
買いポジションは現在の売り価格で、売りポジションは現在の買い価格でクローズされる。

ShowSecondConfirmation() 関数:
ユーザーが “いいえ” を選択した場合に呼び出され、買いポジションまたは売りポジションのクローズを選択するメッセージボックスを表示する。

CloseBuyPositions() 関数:
ShowSecondConfirmation() 関数内で買いポジションをクローズするために呼び出される。
買いポジションのみを処理し、適切な価格でクローズする。

CloseSellPositions() 関数:
ShowSecondConfirmation() 関数内で売りポジションをクローズするために呼び出される。
売りポジションのみを処理し、適切な価格でクローズする。

その他の便利なMT4用スクリプト

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

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

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

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

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

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

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

ポジション監視の時間

集中力は続いてますか?


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


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

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

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

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

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

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

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

オートクローズツール

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

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

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