Ошибка field 'day' missing in date table

Страницы: 1
RSS
Ошибка field 'day' missing in date table, В последние дни скрипт постоянно вылетает из-за этой ошибки
 
В последние дни скрипт постоянно вылетает из-за этой ошибки
field 'day' missing in date table
Возникает она в разных частях кода и в разных ситуациях при попытке считать время сервера.

Для этих целей использую вот такую функцию
function fTimeTable()
dtServ = {};
dtServ.day,dtServ.month,dtServ.year,dtServ.hour,dtServ.min,dtServ.sec = string.match(getInfoParam('TRADEDATE')..' '..getInfoParam('SERVERTIME'),"(%d*).(%d*).(%d*) (%d*):(%d*):(%d*)")
for key,value in pairs(dtServ) do dtServ[key] = tonumber(value) end
return dtServ -- возвращает таблицу с элементами данных в последовательности: день-месяц-год час-мин-секунда
end

Как кажется, причиной проблемы может быть перегрузка канала связи и пропуск данных -- она чаще возникает при массированной отправке заявок на размещение или снятие ордеров. Но раньше такого не было.
Квик 7911 ФИНАМ

Кто сталкивался? В чем причина и как с ней бороться?
 
Здравствуйте,
Уточните, что при этом возвращает getInfoParam('TRADEDATE')?
 
Точно не скажу, т.к. в этих случаях у меня обычно возникает ошибка прекращающая работу кода, но бывают похожие случаи, когда она все же логгируется.
Бывает вот так: nil:nil:nil, а бывает, что не возвращается лишь одно из значений, обычно день.
 
Иван Ру,

Добавьте логирование в свой код:
message(tostring(getInfoParam('TRADEDATE')))
Это нужно чтобы мы могли увидеть в какой момент возникла проблема.
При возникновении ошибки, закройте терминал, пришлите нам на quiksupport@arqatech.com архив всей папки с терминалом (без ключей доступа).
В теме письма укажите ссылку на эту ветку форума.
 
Цитата
Sergey Gorokhov написал:
Иван Ру  ,

Добавьте логирование в свой код:
message(tostring(getInfoParam('TRADEDATE')))
Это нужно чтобы мы могли увидеть в какой момент возникла проблема.
При возникновении ошибки, закройте терминал, пришлите нам на quiksupport@arqatech.com архив всей папки с терминалом (без ключей доступа).
В теме письма укажите ссылку на эту ветку форума.
Проблема возникает при отправке пакетных заявок и проходе через клиринг. Также не доходят и данные по времени (все поля или отдельные из них).
Логгирование выглядит вот так:
13:59:5910933,7519854fPriceCalcprice is out of diapasonALZ7
13:59:5910933,7519854killOrd()KILLEDALZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7619854killOrd()KILLEDMNZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7619854killOrd()KILLEDMNZ7
13:59:5910933,7619854fPriceCalcprice is out of diapasonMNZ7
13:59:5910933,7719854killOrd()KILLEDMNZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3319855PlaceOrder()OKALZ7
13:59:5910934,3519855PlaceOrder()OKMNZ7
13:59:5910934,3519855PlaceOrder()OKMNZ7
13:59:5910934,3619855PlaceOrder()OKMNZ7
14:00:0010937,8219861main()session finished
nil:nil:nil10938,4919861OnTransReply()Catched kill order
14:00:0410938,4919861main()no connection
14:00:0410938,4919861OnTransReply()Catched kill order
 
Цитата
Иван Ру написал:
при отправке пакетных заявок

Что такое "пакетных заявок"?
Цитата
Иван Ру написал:
Логгирование выглядит вот так:
По приведенному логу не понятно где запрошенный TRADEDATE
 
Цитата
Sergey Gorokhov написал:
Цитата
Иван Ру   написал:
при отправке пакетных заявок
Что такое "пакетных заявок"?
Цитата
Иван Ру   написал:
Логгирование выглядит вот так:
По приведенному логу не понятно где запрошенный TRADEDATE
1. Пакетные -- когда код lua одномоментно посылает брокеру большое число заявок. Ну точнее не совсем одновременно, а с очень коротким интервалом времени необходимым для исполнения программного кода. Например, перебирая в цикле for ipairs do end помещенные в таблицу инструменты /позиции при каждом проходе цикла отправляется заявка. Эту проблему я УЖЕ РЕШИЛ вставив в цикл оператор sleep с периодом 1-2 мс.
Предполагаю, что брокер ввел какие-то ограничения или изменилось качество канала связи с пользователями: обращу внимание, что я регулярно пользуюсь разным интернетом в разных географических точках, проблема не с моей стороны, т.к. раньше (около месяца назад) ее ни при каких условиях не было, а потом она стала проявляться постоянно!!!

2. У меня регулярно в цикле считывается TRADEDATE И TRADETIME на основе которых рассчитывается время в формате posix. Пропуски в "напряженные" моменты времени возникают в разных полях, обычно сразу несколько пропусков и в TRADEDATE  и в полях TRADETIME. Т.е. я знаю (по опыту) если при данном проходе цикла main есть пропуски в одной таблице -- наверняка будут и в другой. В этом логе также -- здесь приведены последние его строки, только обнаружились прописку в полях таблицы серверного времени и сразу же исполнение кода оборвалось. (В лог я вывожу только время, т.к. дата не меняется в течение дня. )
 
Иван Ру,

Давайте еще раз с самого начала.
Вы говорите что:
Цитата
Иван Ру написал:
В последние дни скрипт постоянно вылетает из-за этой ошибки
field 'day' missing in date table

По коду, переменная day находится в строке
Цитата
Иван Ру написал:
dtServ.day,dtServ.month,dtServ.year,dtServ.hour,dtServ.min,dtServ.sec = string.match(getInfoParam('TRADEDATE')..' '..getInfoParam('SERVERTIME'),"(%d*).(%d*).(%d*) (%d*):(%d*):(%d*)")
И формируется из getInfoParam('TRADEDATE')

В связи с чем Вам был задан вполне простой вопрос:
Цитата
Sergey Gorokhov написал:
Уточните, что при этом возвращает getInfoParam('TRADEDATE')?

Боюсь что Вы так на него и не ответили.
Страницы: 1
Читают тему
Наверх