After position has been closed OrderCloseTime() returns 0. Bug?

 
After position has been closed OrderCloseTime() returns 0, but OrderTicket() and OrderProfit() return correct values.

If I call OrderSelect() before OrderCloseTime() it returns correct datetime... Sleep(1000) call does not help...

Tools and account:

MQL4
Alpari MT4 Version: 4.0, Build 1320, 11 Dec 2020
MetaEditor Version: 5.0, Build 2375, 31 Mar 2020 
Alpari Pro.ECN DEMO, MarketExecution

Test script:
void OnStart()
{   
   int tkt = OrderSend(_Symbol, OP_BUY, 0.1, 0, 0, 0, 0); //market execution
   
   Print(tkt);
   
   bool select = OrderSelect(tkt, SELECT_BY_TICKET);
   
   bool close = OrderClose(OrderTicket(), OrderLots(), OrderOpenPrice(), 0); //market execution

   int ticket = OrderTicket(); //correct
   Print(ticket);
   
   double profit = OrderProfit(); //correct
   Print(profit);
   
   //Sleep(1000); does not help
   //select = OrderSelect(ticket, SELECT_BY_TICKET); //uncomment to fix error with wrong close time below
   
   datetime closetime = OrderCloseTime(); //INCORRECT, == 0 == 1970.01.01 00:00:00
   PrintFormat(TimeToStr(closetime)); 
}

Output:

2021.01.21 18:17:31.195 OrderCloseTimeBug EURUSD,H1: 1970.01.01 00:00

2021.01.21 18:17:31.195 OrderCloseTimeBug EURUSD,H1: -0.3

2021.01.21 18:17:31.195 OrderCloseTimeBug EURUSD,H1: 1971248172

Is this bug or expected behaviour or I do something wrong?
 
You have to call OrderSelect() again to update the values.
 
Keith Watford:
You have to call OrderSelect() again to update the values.

Yes, thanks, looks like I had a glitch in my head and thought for a moment, since OrderXXXXX() are  calls (not variables), they should return actual current values every time...
But actually they just return values saved by last OrderSelect() call...

 
Woldemar89: they should return actual current values every time...

Current values of what order?

 
William Roeder:

Current values of what order?


Current values of order selected by last OrderSelect() call...

Topic is not actual anymore.. As I said, I just had wrong thought for a moment...

I was thinking OrderSelect() can be called just once, then, for example, each OrderProfit() call will be always returning actual current (different) value every time...

But this is wrong...
Reason: