It does check the last price so it should recalculate every tick. This is what I have for the iMA.
Code:
double RSI = iRSI(NULL, RSI_TF, RSI_PERIOD, PRICE_CLOSE, 0);
double MA5S = iMA(Symbol(),PERIOD_M5,MASlow,0,MODE_SMA, PRICE_CLOSE, 0);
double MA5F = iMA(Symbol(),PERIOD_M5,MAFast,0,MODE_SMA, PRICE_CLOSE, 0);
double MA1 = iMA(Symbol(),PERIOD_H4,MAPeriod,0, MODE_SMA, PRICE_CLOSE, 0);