I need help about this function lock profit, it go forward when it move back should lock and close it , I do not know where and which line is wrong

 
input double   profit            = 35; //profit level where EA is activated
input double   profit_drop       = 30; //amount to drop before closing positions
input double   profit2           = 45; //profit level where EA is activated
input double   profit_drop2      = 40; //amount to drop before closing positions
bool           level_1,level_2;
int OnInit()
  {
   level_1=false;
   level_2=false;
   return(INIT_SUCCEEDED);
  }
void TrailingLockProfit()     
          {  
            int total =OrdersTotal();
            int x=0;
            while (x<1) //Point 1                              
          if(!level_1 && OrderOpenPrice()>=  profit)level_1=true;
          if(level_1  && OrderOpenPrice()<=  (profit-profit_drop))
               {
               CloseOrder();
               reset();
               }       
         if(!level_2 && OrderOpenPrice()>=   profit2)level_2=true;
         if(level_2  && OrderOpenPrice()<=   (profit2-profit_drop2))
               {
               CloseOrder();
               reset();
               }
    Comment("Level Profit");
            return;
          }
void CloseOrder()
      {              
            RefreshRates();           
//--check for buy stops
//--- Lock BUY order and exit 
//--- Close all trades if profit limit exceeded                            
              if(OrderType() == OP_BUY && Symbol() == OrderSymbol() 
                  && Magic == OrderMagicNumber())                      
                  {                         
                  closed = OrderClose(OrderTicket(),OrderLots(), 
                    MarketInfo(OrderSymbol(),MODE_BID),Slippage,clrBlueViolet);                      
                      Print("ProfitBuy_Amount");
                                                                                                           
                  }             
//--check for sell stops             
            else 
              if(OrderType()==OP_SELL && Symbol() == OrderSymbol()
                  && Magic == OrderMagicNumber())                            
                  {                                   
                   closed = OrderClose(OrderTicket(),OrderLots(), 
                     MarketInfo(OrderSymbol(),MODE_ASK),Slippage,clrBlueViolet);                      
                      Print("ProfitSell_Amount");                                                                                                      
                  }
                                      
         Comment("Trail Lock 1 - 5");
        return; 
      }
//---------------
void reset()
      {
       level_1=false;
       level_2=false;
      }
Reason: