For the time of the fill event absent of any OnBarUpdate() event call, you can directly work in OnExecution() -
protected override void OnExecution(IExecution execution)
{
if (entry != null && entry == execution.Order)
Print("Executed @ " + execution.Time);
}
Pushing this DateTime returned to GetBar() would offer you requesting the bar number on which that execution fell.
I think that would be the best approach.

Comment