• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)

Auto Trading Off With X Profit Amount

Asha Panchal

Member
Credit Hunter
Credits
38
Dear Friends,

I want a bot which can Turn off Auto Trading when X Amount of Profit is made in a Day. I want for MT5 Version. Can anyone please post such Bot here. Thanks in advance.
 
When the profit reaches the predetermined daily target, the EA will disable AutoTrading (Algo Trading).
The code used to calculate the daily target is attached.
1758873187364.png
Code:
bool checkDailyTarget(){
   double tFloating = 0.0;
  
   int tPos = PositionsTotal();
   for (int i=tPos-1; i>=0; i--){
      ulong ticket = PositionGetTicket(i);
      if (ticket > 0){
         tFloating += PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);
      }
   }
  
   double dailyHistory = getHistoryProfit();
   double targetDaily = MathAbs(IN_DailyTarget);
   return ((tFloating + dailyHistory) >= targetDaily);
}

double getHistoryProfit(){
   double tHistoryProfit = 0.0;
  
   datetime fromDate, toDate;
   fromDate = iTime(Symbol(), PERIOD_D1, 10);
   toDate   = TimeCurrent();
  
   if(!HistorySelect(fromDate, toDate))
   {
      Print("Failed to select trade history: ", GetLastError());
      return (0);
   }
  
   int tHis = HistoryDealsTotal();
   for (int i=tHis-1; i>=0; i--){
      ulong dealTicket = HistoryDealGetTicket(i);
      if(dealTicket == 0) continue;
      
      //// Check if deal belongs to this EA (same symbol and magic number)
      //if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) != _Symbol)
      //   continue;
      //if(HistoryDealGetInteger(dealTicket, DEAL_MAGIC) != MagicNumber)
      //   continue;

      // Get deal properties
      double dealProfit = HistoryDealGetDouble(dealTicket, DEAL_PROFIT);
      //long dealType = HistoryDealGetInteger(dealTicket, DEAL_TYPE);
      long dealEntry = HistoryDealGetInteger(dealTicket, DEAL_ENTRY);

      // Only process closed deals (DEAL_ENTRY_OUT)
      if(dealEntry != DEAL_ENTRY_OUT)
         continue;
      
      tHistoryProfit += dealProfit;
      
   }
  
   return (tHistoryProfit);
  
}
 

Attachments

Code:
bool checkDailyTarget(){
   double   tFloating = 0.0, tHistory = 0.0, tDaily = 0.0;
   tHistory    = getTHistory();
   tFloating   = getTFloating();
   tDaily      = tHistory+tFloating;
  
   return (tDaily >= IN_DailyTarget && IN_DailyTarget > 0);
}


double getTFloating(){
   double   tFloating = 0.0;
   int      tOrder  = OrdersTotal();
   for(int i=tOrder-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         //if(OrderMagicNumber() == inMagicNumber)
         {
            tFloating   += OrderProfit()+OrderCommission() + OrderSwap();
         }
      }
   }
   return(tFloating);
}

double getTHistory(){
   double   tHistory    = 0.0;
   int      tOrderHis   = OrdersHistoryTotal();
   string   strToday    = TimeToString(TimeCurrent(), TIME_DATE);
   for(int i=tOrderHis-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if( StringFind(TimeToString(OrderCloseTime(), TIME_DATE), strToday, 0) == 0)
         {
            tHistory   += OrderProfit()+OrderCommission() + OrderSwap();
         }
      }
   }
   return(tHistory);
}
 
Back
Top