function main
-- пример работы функции. Приостановка на клиринг
local ServerTime = getInfoParam("SERVERTIME")
local tTime = {"14:00:00","14:05:00"} -- время начала/окончания неторгового периода
local result = diffTime(tTime[1], tTime[2])
if ServerTime>=tTime[1] and ServerTime<=tTime[2] then
message("Приостановка работы скрипта на ".. tostring(result).." сек.")
sleep(result*1000) -- время приостановки в секундах. Время в Quik в миллисек., поэтому * 1000
end
end
function diffTime(time1, time2)
-- возвращает разницу в секундах между time2-time1; либо 0, если time1 > time2
-- time1 = "14:00:00"
-- time2 = "14:05:00"
-- result = diffTime(time1, time2) -- = 300 секунд
local dt1 = {}
local dt2 = {}
local dTime1 = 0
local dTime2 = 0
local result = 0
dt1.hour,dt1.min,dt1.sec = string.match(time1,"(%d*):(%d*):(%d*)")
for key,value in pairs(dt1) do
dt1[key] = tonumber(value)
end
dt2.hour,dt2.min,dt2.sec = string.match(time2,"(%d*):(%d*):(%d*)")
for key,value in pairs(dt2) do
dt2[key] = tonumber(value)
end
--часы*3600 + минуты*60 + секунды.
dTime1 = dt1.hour*3600 + dt1.min*60 + dt1.sec
dTime2 = dt2.hour*3600 + dt2.min*60 + dt2.sec
result = dTime2 - dTime1
if result <= 0 then
return 0
else
return result
end
end
— Функция возвращает имя запускаемого скрипта
— может пригодиться для логирования результата (лог_<имя_запускаемого_скрипта>)
scName=""
function OnInit(script_path)
scName=tostring(get_file_name(script_path)) -- получение полного пути к исполняемому скрипту
end
function main()
message("имя файла = "..scName)
end
function get_file_name (file)
local file_name = file:match("[^\\]*.lua$") -- поиск в строке полного пути к файлу названия скрипта.lua
return file_name:sub(0, #file_name - 4) -- обрезка '.lua' в конце строки
end