MQL4 Посчитать прибыль за сутки в процентах

 

Подскажите как решить указанную задачу. Смог посчитать профит в валюте счета:

double ProfitToday()
  {
   double result = 0;
   datetime m_time = iTime(_Symbol, PERIOD_D1, 0);
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
         continue;
      if(OrderType()>1)
         continue;
      if(m_time <= OrderCloseTime())
         result += OrderProfit() + OrderSwap() + OrderCommission();
     }
   return(result);
  }
А по процентам застрял. Можно получить баланс счета на начало дня? Или возможно есть другой путь.
 
Баланс на начало дня = текущий баланс - профит за день.
 
 //+------------------------------------------------------------------+
//|                                                  DailyProfit.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

void DayProfit()
  {
   double balance=AccountInfoDouble(ACCOUNT_BALANCE);
 
   double dayprof = 0.0;
   datetime end = TimeCurrent();
   string sdate = TimeToString (TimeCurrent(), TIME_DATE);
   datetime start = StringToTime(sdate);

   HistorySelect(start,end);
   int TotalDeals = HistoryDealsTotal();

   for(int i = 0; i < TotalDeals; i++)
     {
      ulong Ticket = HistoryDealGetTicket(i);

      if(HistoryDealGetInteger(Ticket,DEAL_ENTRY) == DEAL_ENTRY_OUT)
        {
         double LatestProfit = HistoryDealGetDouble(Ticket, DEAL_PROFIT);
         dayprof += LatestProfit;
        }
     }
    Print("DAY PROFIT $: ", dayprof);
    Print("DAY PROFIT %: ", (dayprof/balance)*100);
  }


int OnInit()
  {

   DayProfit();      
      
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2025.03.07
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Sergei Poliukhov #:

Вставляйте правильно код -

----------------‌

MQL5.community - Памятка пользователя 

Кнопка  Исходный кодпредназначена для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать кнопку Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.

 
Aleksandr Babitskii:

Подскажите как решить указанную задачу. Смог посчитать профит в валюте счета:

А по процентам застрял. Можно получить баланс счета на начало дня? Или возможно есть другой путь.

Можно, считываем на первом тике баланс счёта. На завтра на первом тике (если торговали), скорее всего он будет другой.

Balans=NormalizeDouble(AccountBalance(),2);//Баланс счёта

Процент - это не просто цифра - это процент от числа. Если вчера на счету было 5200, а сегодня 5300, то профит за 1 день составит 100 денег. Далее школьная пропорция 5200 - это 100%, 100 денег - это икс процентов. Чему = икс? Х=100*100/5200 = 1,92 процента. Депозит за день вырос на 1,92 процента.

 
Vitaly Murlenko #:

Можно, считываем на первом тике баланс счёта. На завтра на первом тике (если торговали), скорее всего он будет другой.

Процент - это не просто цифра - это процент от числа. Если вчера на счету было 5200, а сегодня 5300, то профит за 1 день составит 100 денег. Далее школьная пропорция 5200 - это 100%, 100 денег - это икс процентов. Чему = икс? Х=100*100/5200 = 1,92 процента. Депозит за день вырос на 1,92 процента.

Видать в школе кто то не учился,это же эллементарно