Expert Advisors • Indicators • Scripts • Libraries

MQL.RobotFX.org is the biggest collection of MetaTrader expert advisors (MT5 & MT4), indicators, scripts and libraries that can be used to improve trading results, minimize risks or simply automate trading tasks

MetaTrader 5 Expert Advisor | Check Last Closed Trade (Profit / Type / Symbol etc.)

MetaTrader Experts, Indicators, Scripts and Libraries

With this code block, you can get the last closed trade data without using loops. 

  • Create a variable to set the current day start time. (This is not necessary to do.)
  • Create some other variables to print a chart output and use if in other code blocks as well. (This is not necessary to do.)
  • Using this code inside of the OnTick(); function leads to show result for every tick. You can set it also for once a bar. 
// variables  string DayStart = "00:00"; // Day Start Time  double LastClosed_Profit; // Last Closed trade profit  string TradeSymbol, TradeType;        // Expert Initializing --------------------  int OnInit()    {     return(INIT_SUCCEEDED);    }    // Expert DeInitializing -------------------  void OnDeinit(const int reason)    {      }    // Expert OnTick --------------------------  void OnTick()    {  // check for last closed trade.     CheckLastClosed();      }  //+------------------------------------------------------------------+    //+------------------------------------------------------------------+  //|                                                                  |  //+------------------------------------------------------------------+  void CheckLastClosed()    {     datetime HistoryTime = StringToTime(DayStart);    // history from "Day begining to current time     if(HistorySelect(HistoryTime,TimeCurrent()))       {        int Total = HistoryDealsTotal();          // Get the last deal ticket number and select it to furthur work.        ulong Ticket = HistoryDealGetTicket(Total -1);          // Get what you need to get.        LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);        TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);          // Identify a sell trade.        if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)          {           TradeType = "Sell Trade";          }          // Identify a buy trade        if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)          {           TradeType = "Buy Trade";          }          // chart out put.        Comment("\n","Deals Total - :  ", Total,                "\n","Last Deal Ticket - :  ", Ticket,                "\n", "Last Closed Profit -:  ", LastClosed_Profit,                "\n", "Last Trade was -:  ", TradeType);         }    }  //+------------------------------------------------------------------+    //+------------------------------------------------------------------+  

you can get the whole trading history (from the very beginning of the account) by using the  HistorySelect(); function this way.

// Get entire history  HistorySelect(0,TimeCurrent());
49374