function main()
SearchItems("all_trades", 0, getNumberOf("all_trades") - 1,
function(sec, mcs, qty, price)
PrintDbgStr(tostring(sec))
PrintDbgStr(tostring(mcs))
PrintDbgStr(tostring(qty))
PrintDbgStr(tostring(price))
local ok, err = pcall(function() PrintDbgStr(string.format("%02d\t%06d\t%d\t%f", sec, mcs, qty, price)) end)
if not ok then
PrintDbgStr(err)
return nil
end
return false
end,
"datetime.sec,datetime.mcs,qty,price")
local t = getItem("all_trades", 0)
PrintDbgStr(tostring(t.datetime.sec))
PrintDbgStr(tostring(t.datetime.mcs))
PrintDbgStr(tostring(t.qty))
PrintDbgStr(tostring(t.price))
end
Во-первых, внутри SearchItems почему-то поле datetime.mcs судя по симптомам равно nil, а при получении через getItem оно равно 0. Во-вторых, идёт смещение переданных параметров в функции: поле qty присваивается переменной mcs, поле price присваивается переменной qty, а переменной price ничего не достаётся. В документации написано, что никакого сдвига не должно быть и mcs должно было бы получить nil
Quik 12.2.2.8, брокер БКС, подписка на обезличенные сделки по классу INDX (печатается первая сделка за день по IMOEX2).
funduk нашел баг в часто используемой функции SearchItems. Я это подтвердил (QUIK 12.8.3.3). Почему элементарная ошибка в часто используемой функции не исправляется? Чего не хватает поддержке для этого?
Во-первых, внутри SearchItems почему-то поле datetime.mcs судя по симптомам равно nil, а при получении через getItem оно равно 0.
это не ошибка, прикол в том, что SearchItems и getitem работают с различными источниками данных. =================== см док: ===================== SearchItems -Функция позволяет реализовать быструю выборку элементов из хранилища терминала и возвращает таблицу с индексами элементов, удовлетворяющих условию поиска. ------------------- getItem - Функция возвращает таблицу Lua, содержащую информацию о данных из строки с номером «Index» из таблицы с именем «TableName». ----------------------- «А в остальном, прекрасная маркиза, всё хорошо, всё хорошо!»
Пользователь
Сообщений: Регистрация: 22.02.2023
03.04.2026 18:43:54
Цитата
funduk написал: внутри SearchItems почему-то поле datetime.mcs судя по симптомам равно nil, а при получении через getItem оно равно 0.
Не знаю, как у Вас, у меня это поле, полученное через getItem, вполне себе заполнено. Но SearchItems его всё равно в упор не видит.
Скрытый текст
Код
function main()
print('Вариант 2: "datetime.sec, datetime.mcs, qty, price" ======')
SearchItems("orders", 0, getNumberOf("orders")- 1,
function(sec, mcs, qty, price)
PrintVar("sec",sec)
PrintVar("mcs",mcs)
PrintVar("qty",qty)
PrintVar("price",price)
return false
end,
"datetime.sec, datetime.mcs, qty, price")
for i=0, getNumberOf("orders")- 1 do
print(getItem("orders", i).datetime.mcs)
end
end
--==========================================================================
function PrintVar(...)
local lin = ""
for i, v in ipairs{...} do
lin = (lin ..(tostring(v)).." ")
end
PrintDbgStr(lin)
end
function print(v)
PrintDbgStr(tostring(v))
end
TGB написал: funduk нашел баг в часто используемой функции SearchItems. Я это подтвердил (QUIK 12.8.3.3). Почему элементарная ошибка в часто используемой функции не исправляется? Чего не хватает поддержке для этого?
Пользователь
Сообщений: Регистрация: 20.03.2023
21.04.2026 22:29:16
Ещё один баг: если в указанном примере просить вместо "datetime.sec,datetime.mcs,qty,price" такие параметры "class_code,sec_code,datetime,qty,price", то на стеке окажутся типы ["string", "string", "number", "number"], то есть таблица datetime просто не передастся, и nil вместо неё тоже. А по мне так должна передаваться, ведь table это first-class citizen в Lua. Уважаемая поддержка, задокументируйте все ограничения на параметры SearchItems, пожалуйста. А ещё лучше, исправьте так, чтобы текущая документация отражала реальность.
Пользователь
Сообщений: Регистрация: 30.01.2015
22.04.2026 09:23:33
Цитата
funduk написал: Ещё один баг: если в указанном примере просить вместо "datetime.sec,datetime.mcs,qty,price" такие параметры "class_code,sec_code,datetime,qty,price", то на стеке окажутся типы ["string", "string", "number", "number"], то есть таблица datetime просто не передастся, и nil вместо неё тоже. А по мне так должна передаваться, ведь table это first-class citizen в Lua. Уважаемая поддержка, задокументируйте все ограничения на параметры SearchItems, пожалуйста. А ещё лучше, исправьте так, чтобы текущая документация отражала реальность.
Никогда не пытался этой функцией залазить в таблицы которые вложены в таблицы которые в архиве. Возможно разработчик QLua (звали его если не ошибаюсь Михаил фамилию запамятовал) тоже это не предполагал.