Таблица не обновляется

Страницы: 1
RSS
Таблица не обновляется, После перезапуска или переподключения квика
 
Добрый день,

Есть скрипт для расчета, который формирует таблицу и обновляет её если запущен руками, но после перезапуска квика или переподключении таблица не обновляется (хотя скрипт работает без ошибок), значения не наполняются, подскажите, что можно сделать и где поправить?

Прикладываю код, два скриншота, один после запуска скрипта руками (работает правильно), другой с незаполненными полями (надо пофиксить):
Код
function OnInit()
   is_run=true
end
function OnStop()
   do_main=false
   DestroyTable(id)
end
-- ******************************************************************************************************* Блок расчета и вывода КДС
function InitKDS()
    id = AllocTable()
    AddColumn(id, 1, "Счёт", true, QTABLE_CACHED_STRING_TYPE, 18)
   AddColumn(id, 2, "КДС", true, QTABLE_DOUBLE_TYPE, 10)
   AddColumn(id, 3, "Требование (до КДС = 0)", true, QTABLE_DOUBLE_TYPE, 30)
    CreateWindow(id)
    SetWindowCaption(id,"Расчет КДС")
   SetWindowPos(id,1244,0,340,160)
   for i = 0, getNumberOf("futures_client_limits") - 1 do
      if getItem("futures_client_limits",i).limit_type == 0 then
         InsertRow(id, -1)
      end
    end
end
function CalkKDS()
   local ceil=math.ceil
   local j = 1
   local kds = 1
   local margin = 0
   for i = 0, getNumberOf("futures_client_limits") - 1 do
      if getItem("futures_client_limits",i)~=nil then
         if getItem("futures_client_limits",i).limit_type == 0 then
            local fcl = getItem("futures_client_limits",i)
            if (fcl.cbplimit + fcl.accruedint) ~= 0 then
               kds = ceil((fcl.cbplimit + fcl.accruedint - fcl.cbplused_for_positions + fcl.varmargin)/(fcl.cbplimit + fcl.accruedint)*1000)/1000
               if kds >= 0.00 and kds <= 0.20 then
                  SetColor(id, j, 2, RGB(255, 255, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
                  SetColor(id, j, 3, RGB(0, 255, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)                              
               elseif kds < 0.00 then
                  SetColor(id, j, 2, RGB(255, 0, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
                  margin = ceil(fcl.cbplused_for_positions - (fcl.cbplimit + fcl.accruedint + fcl.varmargin)*1000)/1000
                  SetColor(id, j, 3, RGB(255, 0, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
               else 
                  SetColor(id, j, 2, RGB(0, 255, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR) 
                  SetColor(id, j, 3, RGB(0, 255, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
                  mailKDS02=true
               end 
               SetCell(id, j, 1, tostring(fcl.trdaccid),0)
               SetCell(id, j, 2, tostring(kds),kds)
               SetCell(id, j, 3, tostring(margin), margin)
            else 
               SetColor(id, j, 2, RGB(0, 255, 0) ,QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR, QTABLE_DEFAULT_COLOR)
               SetCell(id, j, 1, tostring(fcl.trdaccid),0)
               SetCell(id, j, 2, tostring(kds),kds)
            end 
            j = j + 1
         end
      end
   end
end
-- *******************************************************************************************************
function main()
   do_main=true
   while isConnected()~=1 do sleep(100) end
   sleep(5000) -- Для отображения таблицы после запуска квика
   InitKDS()
   while do_main do
      if isConnected()==1 then
         if is_run then
            CalkKDS()
            if IsWindowClosed(id) then is_run = false end
         end      
      end
      sleep(1000)
   end
end
Страницы: 1
Читают тему
Наверх