Resultado acumulado do dia

 

Preciso de uma função que me devolva o resultado acumulado do dia, pode ser em pontos ou em dinheiro. A cada trade ele vá somando os resultados independentemente se teve lucro ou prejuízo. Estou escrevendo um robô para operar mini índice e usarei essa função para encerrar a sua operação em caso de alcançar um X lucro ou um Y prejuízo diário. 

Alguém pode me ajudar?

 
Isso é bem simples. Basta iterar sobre as posições do período selecionado pela função HistorySelect, verificando a data e somando o resultado. Consulte a documentação.
Documentação sobre MQL5: Funções de Negociação
Documentação sobre MQL5: Funções de Negociação
  • www.mql5.com
Funções de Negociação - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
rafaelmendoncasantos:

Preciso de uma função que me devolva o resultado acumulado do dia, pode ser em pontos ou em dinheiro. A cada trade ele vá somando os resultados independentemente se teve lucro ou prejuízo. Estou escrevendo um robô para operar mini índice e usarei essa função para encerrar a sua operação em caso de alcançar um X lucro ou um Y prejuízo diário. 

Alguém pode me ajudar?

//+------------------------------------------------------------------+ 
//| Calcula o lucro / prejuízo do dia atual por símbolo              |
//+------------------------------------------------------------------+ 
double CurrentDayProfit()
  {
//   datetime time_start = (datetime) (86400*(((ulong)TimeCurrent())/86400));
   datetime time_start = iTime(_Symbol, PERIOD_D1, 0);
   double   result = 0.0;
   ulong    ticket;
   int      cnt;

   if(HistorySelect(time_start, TimeCurrent()))
     {
      for(cnt = HistoryDealsTotal() - 1; cnt >= 0; cnt--)
        {
         ticket = HistoryDealGetTicket(cnt);

         if(HistoryDealGetString(ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(ticket, DEAL_MAGIC) == EA_MAGIC)
           {
            result += HistoryDealGetDouble(ticket, DEAL_PROFIT);
           }
        }
     }
   else
     {
      Print(_Symbol, " - Erro ao recuperar o histórico de operações...");
     }

   return(result);
  }
 
Eu testei a formula, mas só retorna o lucro, quando tem prejuízo retorna 0.
Razão: