Очередные подарки

Страницы: 1
RSS
Очередные подарки
 
Кусочек текста скрипта,занимающегося обработкой таблицы обезличенных сделок:
Код
-- Собирает из ТОС новые обезличенные сделки
   rescan =
      function()
         if not database.need_tos_rescan then
            return
         end

         local num_trades = getNumberOf("all_trades") - 1
         local items = SearchItems("all_trades",
                    database.tos + 1,
                    num_trades,
                    database.search_function,
                    "class_code,sec_code,datetime.day,datetime.month,datetime.year"
                   ) or {}
         database.tos = num_trades

         for _,n in ipairs(items) do
            database.process_trade(getItem("all_trades",n))
         end

         database.save()
      end,

   ---------------------------------------------------------------
   -- Обработка одной сделки
   process_trade =
      function(trade)
         log.write(trade)
         local trade_datetime = datetime(trade.datetime)

что мы тут имеем?

rescan() получает новые сделки из ТОС и для каждой вызывает обработчик process_trade
первое действие в process_trade есть вывод в лог самой сделки
следующее действие - превращение времени сделки в некий объект.

Время от времени (закономерность неясна) последнее действие приводит к развалу скрипта по причине недопустимых данных в datetime сделки.

Смотрим конец логфайла:
Код
8:44:57.500 {repoterm=0,price=111620,trade_num=1899010832,yield=0,value=128723.53,qty=1,reporate=0,class_code=SPBFUT,repovalue=0,exchange_code=,accruedint=0,tradenum=1899010832,flags=1025,datetime={week_day=4,hour=10,ms=384,mcs=384000,day=26,month=10,sec=2,year=2017,min=27},sec_code=RIZ7,seccode=RIZ7,settlecode=,period=1,repo2value=0,open_interest=440244}
18:44:57.562 {repoterm=0,price=111620,trade_num=1899010833,yield=0,value=128723.53,qty=1,reporate=0,class_code=SPBFUT,repovalue=0,exchange_code=,accruedint=0,tradenum=1899010833,flags=1025,datetime={week_day=4,hour=10,ms=384,mcs=384000,day=26,month=10,sec=2,year=2017,min=27},sec_code=RIZ7,seccode=RIZ7,settlecode=,period=1,repo2value=0,open_interest=440242}
18:44:57.703 {repoterm=0,price=111620,trade_num=1899010834,yield=0,value=128723.53,qty=1,reporate=0,class_code=SPBFUT,repovalue=0,exchange_code=,accruedint=0,tradenum=1899010834,flags=1025,datetime={week_day=4,hour=10,ms=384,mcs=384000,day=26,month=10,sec=2,year=2017,min=27},sec_code=RIZ7,seccode=RIZ7,settlecode=,period=1,repo2value=0,open_interest=440240}
18:44:57.796 {repoterm=0,price=111610,trade_num=1899010835,yield=0,value=772272,qty=6,reporate=0,class_code=SPBFUT,repovalue=0,exchange_code=,accruedint=0,tradenum=1899010835,flags=1025,datetime={week_day=4,hour=10,ms=384,mcs=384000,day=26,month=10,sec=2,year=2017,min=27},sec_code=RIZ7,seccode=RIZ7,settlecode=,period=1,repo2value=0,open_interest=440240}
18:44:57.875 {repoterm=0,price=111620,trade_num=1899010836,yield=0,value=128723.53,qty=1,reporate=0,class_code=SPBFUT,repovalue=0,exchange_code=,accruedint=0,tradenum=1899010836,flags=1025,datetime={week_day=4,hour=10,ms=405,mcs=405000,day=26,month=10,sec=2,year=2017,min=27},sec_code=RIZ7,seccode=RIZ7,settlecode=,period=1,repo2value=0,open_interest=440240}
18:44:58.093 {repoterm=0,price=0,trade_num=0,yield=0,value=0,qty=0,reporate=0,class_code=TQBR,repovalue=0,exchange_code=,accruedint=0,tradenum=0,flags=0,datetime={week_day=1,hour=0,ms=0,mcs=0,day=1,month=1,sec=0,year=1601,min=0},sec_code=ABRD,seccode=ABRD,settlecode=,period=0,repo2value=0,open_interest=0}
Все строчки абсолютно нормальные, а последняя выведенная очень интересна. Все поля нулевые, в том числе и datetime.
Соответственно, обработка datetime приводит к краху:
Код
E:\quik\LuaIndicators\BS.lua:1085: Assert failed: /GoogleDisk/ROBOT/_LUA/datetime.lua : 106
Невозможно рассчитать Unix time: {week_day=1,hour=0,ms=0,mcs=0,year=1601,month=1,day=1,sec=0,min=0,isdst=false}
stack traceback:
   E:\quik\LuaIndicators\BS.lua:1085: in function <E:\quik\LuaIndicators\BS.lua:1074>
   (tail call): ?
   E:\quik\LuaIndicators\BS.lua:1446: in function 'floor'
   E:\quik\LuaIndicators\BS.lua:2563: in function 'process_trade'
   E:\quik\LuaIndicators\BS.lua:2545: in function 'rescan'
   E:\quik\LuaIndicators\BS.lua:2828: in function 'iterate'
   E:\quik\LuaIndicators\BS.lua:1839: in function <E:\quik\LuaIndicators\BS.lua:1802>

Ситуация регулярно появляется как на моем компьютере, так и на множестве других компьютеров, что установлен этот скрипт.

И собственно вопросы:
  1. Что это было?
  2. За что такое счастье?
  3. Как этого счастья избежать?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Нужно еще добавить  что абрау-дюрсо (TQBR/ABRD) не должен попадать в результаты запроса - он явным образом не пройдет проверку по seccode в фильтрующей функции database.search_function запроса SearchItems
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Здравствуйте

Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
Egor Zaytsev написал:
Здравствуйте

Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Егор, мне ждать ответ или лучше сразу начинать подставлять костыли?  Предыдущее моё сообщение об ошибке терминала вы "изучаете" уже месяц.









(так и вижу: сгрудились всей аркой у терминала, морщат лбы,  нервно курят, спорят, даже домой не идут. Это же арка - спать, есть не будем, но ошибку найдём!)
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Ошибочку исправлять будем или черт с ней , и так сожрут?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Ошибочку исправлять будем или черт с ней , и так сожрут?
Добрый день.

Мы про Вас не забыли. Ответ будет обязательно.  
 
s_mike@rambler.ru, Добрый день,
     
      Описанная в данном инциденте ошибка была исправлена в версии       7.16.1 терминала QUIK.
      Рекомендуем вам обновить версию программы.
     
      Приносим извинения за причиненные неудобства.
Страницы: 1
Читают тему
Наверх