Добрый день,
Есть скрипт для расчета, который формирует таблицу и обновляет её если запущен руками, но после перезапуска квика или переподключении таблица не обновляется (хотя скрипт работает без ошибок), значения не наполняются, подскажите, что можно сделать и где поправить?
Прикладываю код, два скриншота, один после запуска скрипта руками (работает правильно), другой с незаполненными полями (надо пофиксить):
Есть скрипт для расчета, который формирует таблицу и обновляет её если запущен руками, но после перезапуска квика или переподключении таблица не обновляется (хотя скрипт работает без ошибок), значения не наполняются, подскажите, что можно сделать и где поправить?
Прикладываю код, два скриншота, один после запуска скрипта руками (работает правильно), другой с незаполненными полями (надо пофиксить):
Код |
---|
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 |