Необходим проверка условия времени

Страницы: 1
RSS
Необходим проверка условия времени, Нужно исключить торговлю в последнюю минуту торгов, к примеру.
 
Как исполнить такую проверку?
Или, наоборот, торговать в первую секунду (минуту, в зависимости от выбранного фрейма) из Квика нет никакой возможности, как сделать выгоднее выставить условие на проверку времени?

Дело в том, что очень много параметров в help'e несут как бы время, но они разные, какие-то из них строковые, а есть вообще таблица!
От такого разбега я легка растерялся.
 
Здравствуйте,
Например так:

Код
START_TIME = "20:00:00"
WORK_DONE = false

   function FixTime(V)
      V=tostring(V)
      local Out = os.date("!*t",os.time())
      local len = string.len(V)
      if len>6 then
         Out.hour,Out.min,Out.sec = string.match(V,"(%d%d)%p(%d%d)%p(%d%d)")
      elseif len==6 then
         Out.hour,Out.min,Out.sec  = string.match(V,"(%d%d)(%d%d)(%d%d)")
      elseif len==5 then
         Out.hour,Out.min,Out.sec  = string.match(V,"(%d)(%d%d)(%d%d)")
      end
      return Out
   end
   
function main()
   START_TIME=FixTime(START_TIME)
   
while true do
   if os.time()<os.time(START_TIME) then
      WORK_DONE=false
   elseif not WORK_DONE then
      message('время работать',1)
      WORK_DONE=true
   end
   sleep(1000)
end
end
 
Код работает, но при выключении скрипта Quik подвисает. Честно говоря, многое не понимаю в этом коде.
START_TIME объявлена, как строковая переменная, но в строке:
Код
START_TIME=FixTime(START_TIME)
ей даётся значение из функции FixTime(), которая возвращает таблицу Out !!!
сравнение:
Код
os.time()<os.time(START_TIME)

тоже не понимаю, получается сравнивается таблица START_TIME и число от функции os.time() т.к. эта функция, если не передавать ей таблицу возвращает число!  
В общем больше вопросов, чем ответов  :) )

Ну зато подарили идею. Я воспользуюсь конструкцией: Out.hour,Out.min, чтобы получить из них число вида XXYY и уже сравнивать с временем, которое тоже нужно будет переводить в вид числа XXYY
 
Буду рад, если есть поделитесь справочником (с описанием всех функций)  к Lua на русском :)
 
Цитата
Николай Бехтерев пишет:
В общем больше вопросов, чем ответов )
Объясняю. Конечный пользователь это лицо творческое, он может указать время срабатывания в произвольном формате.
Может так "20:00:00"
а может и так "200000"
Или еще как-то. В общем как ему вздумается.

В примере показана функция FixTime которая из произвольного формата времени, делает таблицу формата функции os.time
Которая в свою очередь переводит эту таблицу в количество секунд начиная с 1970 года.

Лучшим способом сравнить время является перевод его в секунды. Поэтому именно этот способ и был выбран.
Ели подход не нравится, пожалуйста можете сравнивать часы и минуты отдельно, это Ваше право.
 
Цитата
Николай Бехтерев пишет:
Буду рад, если есть поделитесь справочником (с описанием всех функций) к Lua на русском
LUA не мы придумали, документация есть в интернете www.lua.ru
 
Цитата
Николай Бехтерев пишет:
Код работает, но при выключении скрипта Quik подвисает.
Открою секрет, у Вас любой код будет подвисать при выключении если Вы не опишите событии OnStop условие выхода из цикла в main.
 
Цитата
Sergey Gorokhov пишет:
%p
Спасибо за ответ.
В результате мой код выглядит вот так:

Код
function main()
   while is_run == 1 do
   dt = os.date()
   ddt = string.sub(dt, 10, 14)
   if ddt == "20:45" then is_run = 0
   end
   sleep (1000)
   end
end
 
Может кому пригодится.
функция string.sub(dt, 10, 14) вырезает подстроку с 10 по 14 символ в строке, которую выдаёт функция os.date() получая как раз время в виде строки: "HH:MM" её и будем сравнивать с заданным заранее значением.
 
Цитата
Николай Бехтерев пишет:
Может кому пригодится.
http://lua-users.org/wiki/StringLibraryTutorial
http://lua-users.org/wiki/PatternsTutorial
:)))
 
спасибо за ресурс :)
Страницы: 1
Читают тему
Наверх