Global_Close_Orders_Management_V1

Author: Copyright 2024, MetaQuotes Ltd.
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself
Miscellaneous
It opens Message Boxes to the user
0 Views
0 Downloads
0 Favorites
Global_Close_Orders_Management_V1
//+------------------------------------------------------------------+
//|                            Global_Close_Orders_Management_V1.mq4 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright     "Copyright 2024, MetaQuotes Ltd."
#property link          "https://www.mql5.com"
#property version       "1.01"
#property description   "persinaru@gmail.com"
#property description   "Julian 2024 - free open source"
#property description   "Global Close Orders Management."
#property description   ""
#property description   "WARNING: Use this software at your own risk."
#property description   "The creator of this script cannot be held responsible for any damage or loss,"
#property description   "nor for happiness and euphoria on gains."
#property strict
#property show_inputs

//***************************************************************************//
extern string  Close_Orders_Management                    =  ""   ;
//***************************************************************************//
input bool     Close_All_ORDERS                          =  false;
input bool     Close_Active_Buy_and_Sell_ORDERS          =  false;
input bool     Close_Active_Buy_ORDERS                   =  false;
input bool     Close_Active_Sell_ORDERS                  =  false;
//***************************************************************************//
input bool     Close_All_Pending_Orders                  =  false;
input bool     Close_Buy_Pending_Orders                  =  false;
input bool     Close_Sell_Pending_Orders                 =  false;
//***************************************************************************//
input bool     Close_All_LIMIT_Orders                    =  false;
input bool     Close_BUY_LIMIT_Orders                    =  false;
input bool     Close_SELL_LIMIT_Orders                   =  false;
//***************************************************************************//
input bool     Close_All_STOP_Orders                     =  false;
input bool     Close_BUY_STOP_Orders                     =  false;
input bool     Close_SELL_STOP_Orders                    =  false;
//***************************************************************************//
input int      Close_ALL_Positive_Orders_Higher_than_Money    =  0;
input int      Close_BUY_Positive_Orders_Higher_than_Money    =  0;
input int      Close_SELL_Positive_Orders_Higher_than_Money   =  0;
//***************************************************************************//
input int      Close_ALL_Negative_Orders_Lower_than_Money     =  0;
input int      Close_BUY_Negative_Orders_Lower_than_Money     =  0;
input int      Close_SELL_Negative_Orders_Lower_than_Money    =  0;
//***************************************************************************//

//+------------------------------------------------------------------+
//|OnStart                                                           |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(IsTradeAllowed())
     {
      //***************************************************************************************//
      if(Close_All_ORDERS)                         {Close_All_ORDERS_X();}
      if(Close_Active_Buy_and_Sell_ORDERS)         {Close_Active_Buy_and_Sell_ORDERS_X();}
      if(Close_Active_Buy_ORDERS)                  {Close_Active_Buy_ORDERS_X(); }
      if(Close_Active_Sell_ORDERS)                 {Close_Active_Sell_ORDERS_X();}
      //***************************************************************************************//
      if(Close_All_Pending_Orders)                 {Close_All_Pending_Orders_X(); }
      if(Close_Buy_Pending_Orders)                 {Close_Buy_Pending_Orders_X(); }
      if(Close_Sell_Pending_Orders)                {Close_Sell_Pending_Orders_X();}
      //***************************************************************************************//
      if(Close_All_LIMIT_Orders)                   {Close_All_LIMIT_Orders_X(); }
      if(Close_BUY_LIMIT_Orders)                   {Close_Buy_LIMIT_Orders_X(); }
      if(Close_SELL_LIMIT_Orders)                  {Close_Sell_LIMIT_Orders_X();}
      //***************************************************************************************//
      if(Close_All_STOP_Orders)                    {Close_All_STOP_Orders_X(); }
      if(Close_BUY_STOP_Orders)                    {Close_BUY_STOP_Orders_X(); }
      if(Close_SELL_STOP_Orders)                   {Close_SELL_STOP_Orders_X();}
      //***************************************************************************************************//
      if(Close_ALL_Positive_Orders_Higher_than_Money> 0)   {Close_ALL_Positive_Orders_Higher_than_Money_X(); }
      if(Close_BUY_Positive_Orders_Higher_than_Money> 0)   {Close_BUY_Positive_Orders_Higher_than_Money_X(); }
      if(Close_SELL_Positive_Orders_Higher_than_Money>0)   {Close_SELL_Positive_Orders_Higher_than_Money_X();}
      //***************************************************************************************************//
      if(Close_ALL_Negative_Orders_Lower_than_Money< 0)    {Close_ALL_Negative_Orders_Lower_than_Money_X(); }
      if(Close_BUY_Negative_Orders_Lower_than_Money< 0)    {Close_BUY_Negative_Orders_Lower_than_Money_X(); }
      if(Close_SELL_Negative_Orders_Lower_than_Money<0)    {Close_SELL_Negative_Orders_Lower_than_Money_X();}
      //***************************************************************************************************//
     }
   else
      MessageBox("Enable AutoTrading Please ");
  }
//+------------------------------------------------------------------+
//|Close_All_ORDERS_X                                                |
//+------------------------------------------------------------------+
int Close_All_ORDERS_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           //+-----------------------------------------------------------------------------------------------------------------------+
           case OP_BUYLIMIT  :{int DEL_buylimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLLIMIT :{int DEL_sellimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_BUYSTOP   :{int DEL_buystop  = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLSTOP  :{int DEL_sellstop = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Active_Buy_and_Sell_ORDERS_X                                |
//+------------------------------------------------------------------+
int Close_Active_Buy_and_Sell_ORDERS_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Active_Buy_ORDERS_X                                         |
//+------------------------------------------------------------------+
int Close_Active_Buy_ORDERS_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Active_Sell_ORDERS_X                                        |
//+------------------------------------------------------------------+
int Close_Active_Sell_ORDERS_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_All_Pending_Orders_X                                        |
//+------------------------------------------------------------------+
int Close_All_Pending_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYLIMIT  :{int DEL_buylimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLLIMIT :{int DEL_sellimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_BUYSTOP   :{int DEL_buystop  = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLSTOP  :{int DEL_sellstop = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Buy_Pending_Orders_X                                        |
//+------------------------------------------------------------------+
int Close_Buy_Pending_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYLIMIT  :{int DEL_buylimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_BUYSTOP   :{int DEL_buystop  = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Sell_Pending_Orders_X                                       |
//+------------------------------------------------------------------+
int Close_Sell_Pending_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_SELLLIMIT :{int DEL_sellimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLSTOP  :{int DEL_sellstop = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_All_LIMIT_Orders_X                                          |
//+------------------------------------------------------------------+
int Close_All_LIMIT_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYLIMIT  :{int DEL_buylimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLLIMIT :{int DEL_sellimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Buy_LIMIT_Orders_X                                          |
//+------------------------------------------------------------------+
int Close_Buy_LIMIT_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYLIMIT  :{int DEL_buylimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_Sell_LIMIT_Orders_X                                         |
//+------------------------------------------------------------------+
int Close_Sell_LIMIT_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_SELLLIMIT :{int DEL_sellimit = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_All_STOP_Orders_X                                           |
//+------------------------------------------------------------------+
int Close_All_STOP_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYSTOP   :{int DEL_buystop  = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           case OP_SELLSTOP  :{int DEL_sellstop = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_BUY_STOP_Orders_X                                           |
//+------------------------------------------------------------------+
int Close_BUY_STOP_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUYSTOP   :{int DEL_buystop  = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_SELL_STOP_Orders_X                                          |
//+------------------------------------------------------------------+
int Close_SELL_STOP_Orders_X()
  {
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_SELLSTOP  :{int DEL_sellstop = OrderDelete(OrderTicket());}//+----------------------------------------------------+
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_ALL_Positive_Orders_Higher_than_Money_X                      |
//+------------------------------------------------------------------+
int Close_ALL_Positive_Orders_Higher_than_Money_X()
  {
  if(Close_ALL_Positive_Orders_Higher_than_Money>=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_BUY_Positive_Orders_Higher_than_Money_X                      |
//+------------------------------------------------------------------+
int Close_BUY_Positive_Orders_Higher_than_Money_X()
  {
  if(Close_ALL_Positive_Orders_Higher_than_Money>=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_SELL_Positive_Orders_Higher_than_Money_X                      |
//+------------------------------------------------------------------+
int Close_SELL_Positive_Orders_Higher_than_Money_X()
  {
  if(Close_ALL_Positive_Orders_Higher_than_Money>=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_ALL_Negative_Orders_Lower_than_Money_X                       |
//+------------------------------------------------------------------+
int Close_ALL_Negative_Orders_Lower_than_Money_X()
  {
  if(-Close_ALL_Negative_Orders_Lower_than_Money<=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           case OP_SELL      :{int CLS_sell     = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_BUY_Negative_Orders_Lower_than_Money_X                       |
//+------------------------------------------------------------------+
int Close_BUY_Negative_Orders_Lower_than_Money_X()
  {
  if(-Close_BUY_Negative_Orders_Lower_than_Money<=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }
//+------------------------------------------------------------------+
//|Close_SELL_Negative_Orders_Lower_than_Money_X                       |
//+------------------------------------------------------------------+
int Close_SELL_Negative_Orders_Lower_than_Money_X()
  {
  if(-Close_SELL_Negative_Orders_Lower_than_Money<=OrderProfit()){
   int counter;
   for(counter = OrdersTotal()-1; counter >=0 ; counter--)
     {
      if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES))
        {
         switch(OrderType())
           {
           case OP_BUY       :{int CLS_buy      = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,clrNONE);}
           }
        }
     }
  }
   return(0);
  }

Comments