Just shooting in the dark:
Do you have the same delay if you use
indicators.ema(Instrument, Period, OfferSide, IIndicators.AppliedPrice, int, int)
instead of
indicators.calculateIndicator()
?
Of course your code is valid also, just I don`t use calculateIndicator().