Добавляем переменные SdelkaDn и SdelkaUp. Они будут следить какую заявку выставили, покупка или продажа. Также добавляем переменную SdelkaOidx, которая будет хранить O(idx) значение цены по которой открываем позицию. переменная AProfit будет хранить результат прибыли/убытка. Переменная Contract - число контрактов. В итоге получаем: Settings={} Settings.Name = "*RobotMA" Settings.B_PeriodMA = "1" Settings.B_Contract = "1" function Init() return 8 end function MyInit() APeriodMA = {} APeriodMA[0] = 0 APeriodMA[1] = 0 AProfit = {} AProfit[0] = 0 AProfit[1] = 0 iProfit = 0 PeriodMA = Settings.B_PeriodMA+0 Contract = Settings.B_Contract+0 LastIdx = 0 SdelkaDn = 0 SdelkaUp = 0 SdelkaOidx = 0 end function OnCalculate(idx) if idx == 1 then MyInit() end if LastIdx < idx then LastIdx = idx APeriodMA[idx] = APeriodMA[idx-1] if idx >= PeriodMA then mSum = 0 if idx == PeriodMA then for i = 0, PeriodMA-1, 1 do mSum = mSum + O(idx - i) end APeriodMA[idx] = mSum/PeriodMA end if idx > PeriodMA then AP