//+------------------------------------------------------------------+
//|                                               Buy_Sell_Pairs.mq4 |
//+------------------------------------------------------------------+
#property version "1.00"
#property strict
#property show_inputs
//-
extern bool    Reverse        = false; // BUY->SELL, SELL->BUY
extern string  b_list         = "GBPUSD,EURGBP,GBPCHF,CHFJPY,AUDJPY,EURJPY,USDCHF"; //выбранные пары BUY
extern string  s_list         = "CADJPY,AUDUSD,USDJPY,EURUSD,EURCHF,GBPJPY,USDCAD"; //выбранные пары SELL
extern double  Lot            = 0.01;
extern int     MagicNumber    = 987;
extern int     Slippage       = 4;
extern string  TradeComment   = "Buy_Sell_Pairs";
extern bool    ShowMessageBox = true;

string b_symbols[],s_symbols[];
int TradesBuy, TradesSell, b_ticket, s_ticket;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
int start()
 {
  ushort u_sep=StringGetCharacter(",",0);
  StringSplit(!Reverse?b_list:s_list,u_sep,b_symbols);
  StringSplit(!Reverse?s_list:b_list,u_sep,s_symbols);
  TradesBuy=0; TradesSell=0;

// BUY
  for(int i=0; i<ArraySize(b_symbols); i++)
   {
    b_ticket=-1;
    string b=b_symbols[i];
     if(CheckTradeExists(b))
      {
       b_ticket = OrderSend(b,OP_BUY, Lot, MarketInfo(b,MODE_ASK), Slippage, NULL, NULL, TradeComment, MagicNumber, 0, clrNONE);printf("Open: "+b);
       if(b_ticket > 0)
        {
         if(ShowMessageBox)
          {
           MessageBox("Open: "+b);
          }
         TradesBuy++;
        }
      } else {
       if(ShowMessageBox)
        {
         MessageBox("There is open: "+b);
        }
       TradesBuy++;
      }
   }

// SELL
  for(int i=0; i<ArraySize(s_symbols); i++)
   {
    s_ticket=-1;
    string s=s_symbols[i];
     if(CheckTradeExists(s))
      {
       s_ticket = OrderSend(s,OP_SELL, Lot, MarketInfo(s,MODE_BID), Slippage, NULL, NULL, TradeComment, MagicNumber, 0, clrNONE);
       if(s_ticket > 0)
        {
         if(ShowMessageBox)
          {
           MessageBox("Open: "+s);
          }
         TradesSell++;
        }
      } else {
       if(ShowMessageBox)
        {
         MessageBox("There is open: "+s);
        }
       TradesSell++;
      }
   }

// Message
 if(TradesBuy==ArraySize(b_symbols) && TradesSell==ArraySize(s_symbols))
  {
   MessageBox("Opened Buy:\n"+b_list+"\nOpened Sell:\n"+s_list);
  }

  return(0);
 }

//+------------------------------------------------------------------+
bool CheckTradeExists(string symbol)
 {
  for(int e=0; e<OrdersTotal(); e++) {
   if(OrderSelect(e, SELECT_BY_POS, MODE_TRADES)) {
    if(OrderSymbol()==symbol && OrderMagicNumber()==MagicNumber) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      return(false);
     }
    }
   }
  }
  return(true);
 }
//+------------------------------------------------------------------+