Николая,
Проблема в логике.
При первом срабатывании futures.sec_code ничего не содержит и условие
while futures.sec_code ~= stroka do 
нормально срабатывает, когда у Вас 0.
Но при повторном срабатывании функции, в futures.sec_code уже есть запись "SiM5" так как она туда записалась при первом обращении к функции.
Поэтому при повторном вызове условие "while futures.sec_code ~= stroka do" уже нарушено и цикл не выполняется. Для решения проблемы, Вам нужно обнулять futures при каждом вызове функции pos.
Перепишите так:
| Код | 
|---|
is_run = 1
fuc = "SiM5"
function OnStop()
   is_run = 0
end
function pos(stroka)
   local i = 0
   local futures = {}
      while futures.sec_code ~= stroka do
         futures = getItem("futures_client_holding", i)
         i = i+1
      end
   return futures.totalnet
end
function main()
   while is_run == 1 do
      j = pos(fuc)
      message(tostring(j),1)
      sleep(1000)
   end
end |