EA Must Open trade/s in trend & close

 

Hi all

i would like my ea to open trade/s in trend & close (As i have posted my code). The problem i don't want it to open anymore trades while trend is going in that direction. I would like to limit it, if there is a way to do this.

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int MagicNumber=55;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int CountTrades()
 {
  int Count=0;
  for(int Loop=OrdersTotal()-1;Loop>=0;Loop--)
  {
   if(OrderSelect(Loop,SELECT_BY_POS))
   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
   if(OrderType()==OP_BUY||OrderType()==OP_SELL)
   Count++;
  }
  
  return(Count);
 } 
 
void Buy()
 {
  double PSAR=iSAR(Symbol(),NULL,0.02,0.2,0);
 
  if(PSAR<Bid)
   {
    int BuyTrade=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,"JackBuda",MagicNumber,0,clrBlue);
   }
 } 
 
void Sell()
 { 
  double PSAR=iSAR(Symbol(),NULL,0.02,0.2,0);
  
  if(PSAR>Ask)
   {
    int SellTrade=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,"JackBuda",MagicNumber,0,clrRed);//20
   }
 }  
  
void OnTick()
 {
  double CloseBar=iClose(NULL,0,1);
  
  double InProfit=OrderLots()*50;
  
  for(int Loop=OrdersTotal()-1;Loop>=0;Loop--)
   {
    bool OSProfit=OrderSelect(Loop,SELECT_BY_POS,MODE_TRADES);
   } 
  
  if(AccountBalance()>10&&CountTrades()<1){Buy();}
  else if(OrderProfit()>InProfit&&CloseBar>0&&CountTrades()<2){Buy();}
  
  if(AccountBalance()>10&&CountTrades()<1){Sell();}
  else if(OrderProfit()>InProfit&&0<CloseBar&&CountTrades()<2){Sell();}
  
  for(int Loop2=OrdersTotal()-1;Loop2>=0;Loop2--)
  {
   if(OrderSelect(Loop2,SELECT_BY_POS,MODE_TRADES))
   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
   { 
    bool CloseTrade=false;
    int Type=OrderType(); 
    double Profit=OrderLots()*100;
    switch(Type)
    {
     case OP_BUY:if(OrderProfit()>=Profit)CloseTrade=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrGreen);break;
     case OP_SELL:if(OrderProfit()>=Profit)CloseTrade=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,clrGreen);break;                       
    }
   }
  } 
   
 }
Reason: