Break Even Function not working as expected

RainyDay  

Hi All,

I've been going round in circles all day trying to figure this one out, so it is time to consult the blessed Forum masters.

I have a break even function that is called when a position is open, but it's not functioning correctly.

Here is the function code, all variables used are globals (bad practice I know, apologies for the insult to the forum).

StopBuffer is set by: ( StopBuffer = 400 * Point; ) in the Init funtion.

Any advice will be more than welcome!

void TrailTrade()
{
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == True)
      {
         if (OrderType() == OP_BUY)
         {
            if (BuyTrailed == False)
            {
               if (Bid > OrderOpenPrice() + StopBuffer)
               {
                  bool a = OrderModify(OrderTicket(), OrderOpenPrice(),  Bid - StopBuffer, OrderTakeProfit(), 0, clrGreen);
                  
                  BuyTrailed = True;               
               }
            }   
         }
         
         if (OrderType() == OP_SELL)
         {
            if (SellTrailed == False)
            {
               if (Ask < OrderOpenPrice() - StopBuffer)
               {
                  bool b = OrderModify(OrderTicket(), OrderOpenPrice(), Ask + StopBuffer, OrderTakeProfit(), 0, clrRed);
                  
                  SellTrailed = True;               
               }
            }   
         }      
      }
   }
}