ta.sma(source, length)
Fixed pattern
MQL5
// OnInit — create handle once
int smaHandle = iMA(_Symbol, _Period, length, 0, MODE_SMA, PRICE_CLOSE);
if(smaHandle == INVALID_HANDLE) return INIT_FAILED;
// OnTick / OnCalculate — never treat iMA() as a double
double smaBuffer[];
ArraySetAsSeries(smaBuffer, true);
if(CopyBuffer(smaHandle, 0, 0, 1, smaBuffer) < 1) return;
double smaValue = smaBuffer[0];cTrader C#
// OnStart
private SimpleMovingAverage sma;
sma = Indicators.SimpleMovingAverage(Bars.ClosePrices, length);
// OnBar
double smaValue = sma.Result.Last(0);