//+------------------------------------------------------------------+
//|                                             GetTicketOfTrade.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define LOWEST 0
#define HIGHEST 1

extern int MagicNumber =  20050610;

int LowestBuyTicket, HighestBuyTicket, LowestSellTicket, HighestSellTicket;
double LowestBuyPrice, HighestBuyPrice, LowestSellPrice, HighestSellPrice;

//+------------------------------------------------------------------+
//| Get the ticket of the a trade based on inputs
//| 
//| cmd = OP_BUY
//| which = 0 returns ticket of lowest open buy
//| which = 1 returnds ticket of highest open buy
//| cmd = OP_SELL
//| which = 0 returns ticket of lowest open sell
//| which = 1 returns ticket of highest open sell
//+------------------------------------------------------------------+
void GetTicketsOfTrades()
  {
   int ticket;
   int LowestBuy,HighestBuy, LowestSell, HighestSell;
//----
   LowestBuy = 9999;
   HighestBuy = 0;
   LowestSell = 9999;
   HighestSell = 0;
   
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=MagicNumber) continue;
        {
         if(OrderType()==OP_BUY)
         {
               if (OrderOpenPrice() < LowestBuy)
               {
                  LowestBuy = OrderOpenPrice();
                  LowestBuyTicket = OrderTicket();
               }
               if (OrderOpenPrice() > HighestBuy)
               {
                  HighestBuy = OrderOpenPrice();
                  HighestBuyTicket = OrderTicket();
               }
         }
         if(OrderType()==OP_SELL)
         {
               if (OrderOpenPrice() < LowestSell)
               {
                  LowestSell = OrderOpenPrice();
                  LowestSellTicket = OrderTicket();
               }
               if (OrderOpenPrice() > HighestSell)
               {
                  HighestSell = OrderOpenPrice();
                  HighestSellTicket = OrderTicket();
               }
         }
        }
     }
  }

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
{
   
   GetTicketsOfTrades();
   if (HighestBuyTicket > 0)
   {
      if (OrderSelect(HighestBuyTicket, SELECT_BY_TICKET) == true)
      {
         HighestBuyPrice = OrderOpenPrice();
      }
   }
   if (HighestSellTicket > 0)
   {
      if (OrderSelect(HighestSellTicket, SELECT_BY_TICKET) == true)
      {
         HighestSellPrice = OrderOpenPrice();
      }
   }
   if (LowestBuyTicket > 0)
   {
      if (OrderSelect(LowestBuyTicket, SELECT_BY_TICKET) == true)
      {
         LowestBuyPrice = OrderOpenPrice();
      }
   }
   if (LowestSellTicket > 0)
   {
      if (OrderSelect(LowestSellTicket, SELECT_BY_TICKET) == true)
      {
         LowestSellPrice = OrderOpenPrice();
      }
   }
}
//+------------------------------------------------------------------+