Станислав, Убей, не пойму, что Вам нужно. Передавайте хоть таблицу: Algo(S), хоть её поля: Algo(S.Pos, S.MIDDLE_PRICE) - всё должно работать. Лично у меня вообще одна глобальная "супертаблица", и в функции я передаю только имена полей, которые, к тому же, всегда представлены как числовые индексы. Вот, например, есть у меня такая функция Y(i,j,k,l), она переносит k-ю взятку из массива j-го таймфрейма i-го тикера в массив l-го таймфрейма того же тикера. Передаются тупо 4 числа, а сама таблица a не передаётся - она глобальная. А уже внутри функции эти числа интерпретируются как индексы соответствующих полей этой таблицы. В частности, в лог пишется (точнее, писалось, когда я это дело отлаживал):
F:write(ST().."Перенос "..a[i][0][1].." из "..j.." в "..l.." сделки "..k.." лотов "..a[i][4][j][k].." по "..a[i][4][j][k+1].."\n");
И нет проблем! Универсальность выше крыши - переносится любая взятка любого тикера из любого таймфрейма в любой, передача параметров - проще не придумаешь, надёжность тоже вполне приличная, хотя даже здесь эта антиллехтуальная придурь со своей долбаной динамической типизацией умудряется поднасрать, заменяя натуральные числа вещественными, именно в этой функции мне пришлось вставить первой командой: j=tonumber(string.format("%1.0f",j)); о чём я недавно писал. Зачем искать на свою задницу приключений?