Пытаюсь вывести в отладочное окно некоторые поля таблицы заявок, но подстановка не работает, можете подсказать в чем ошибка?
Код
PrintDbgStr(" Просмотр полей таблицы заявок")
params = {"order_num", "flags", "sec_code"}
for i=0,getNumberOf('orders')-1 do
PrintDbgStr(i)
local order = getItem('orders', i);
for key,v in ipairs(params) do
PrintDbgStr(v .. " = " .. order.v)
end
end
аналогичный пример взял из справки для функции getInfoParam(), там немного иная подстановка и все работает
Код
params = {"VERSION", "TRADEDATE", "SERVERTIME"}
for key,v in ipairs(params) do
PrintDbgStr(v .. " = " .. getInfoParam(v).."\n")
end
PrintDbgStr(" Просмотр полей таблицы заявок")
params = {"order_num", "flags", "sec_code"}
for i=0,getNumberOf('orders')-1 do
PrintDbgStr(i)
local order = getItem('orders', i);
for key,v in ipairs(params) do
PrintDbgStr(v .. " = " .. order.[v])
end
end
Почему не выводятся данные можете сказать?, кстати подстановка в квадратных скобках в данном случае не работает, пишет сообщение об ошибке, а если выводить параметр подстановки vбез скобок, то вообще ничего не выводится, вернее с другим кодом выводится, а именно этот пустой, код и ошибка ниже
Код
--ДОБАВЛЕНИЕ ДАННЫХ В ТАБЛИЦУ Позиции по клиентским счетам
PrintDbgStr("Позиции по клиентским счетам (фьючерсы) из таблицы")
params = {"startbuy","startsell","startnet","todaybuy","todaysell","totalnet","openbuys","opensells","cbplused","cbplplanned"}
for key,v in ipairs(params) do
PrintDbgStr(v .. " = " .. getFuturesHolding('SPBFUT000000','SPBFUT000pf','SRH9','1').v)
--PrintDbgStr(v .. " = " .. getFuturesHolding('SPBFUT000000','SPBFUT000pf','SRH9','1').[v])
end
вот ошибка с квадратными скобками
Код
Syntax error while compiling C:\Program Files\QUIK-Junior\LuaIndicators\k12_8.lua: C:\Program Files\QUIK-Junior\LuaIndicators\k12_8.lua:95: '<name>' expected near '['
А другой код где последовательно прописываю все поля нормально выводит, но его очень долго писать, в цикле быстрее получилось бы)
Код
[4680] сделка из таблицы
[4680] сист дата и время заявка сделка флаг бум лот цена сумм транз сост напр дата и время сделки
[4680] *0 27.12.2018 11:55:30 82958504 10251485 001000000 SRH9 1 18941 18941 2147483647 исполн покупка 27.12.2018 11:54:33 166000
[4680] Позиции по клиентским счетам (фьючерсы) из таблицы
Хотя это не так и важно, долго писать не долго, но интересно почему не работает?
Если Вы передаете параметр не в виде строки а как имя параметра, то его надо указывать БЕЗ скобок и БЕЗ кавычек. например: getFuturesHolding('SPBFUT000000','SPBFUT000pf','SRH9','1').cbplplanned
Вот как можно делать с key-value таблицами Lua, когда key - это строка:
Код
local key = "TheKey"
local t = { key = "value" }
print( t[key] ) -- 1ый вариант, через квадратные скобки, используя имя ключа
print( t.TheKey ) -- 2ой вариант, через точку, используя сам ключ
vgi написал: Вот как можно делать с key-value таблицами Lua, когда key - это строка:
Код
local key = "TheKey"
local t = { key = "value" }
print ( t[key] ) -- 1ый вариант, через квадратные скобки, используя имя ключа
print ( t.TheKey ) -- 2ой вариант, через точку, используя сам ключ
Во втрой строке должно быть естественно
Код
local t = { [key] = "value" }
-- или
local t = { TheKey = "value" }
vgi написал: Во втрой строке должно быть естественно
Спасибо за все поправки и подстановки, очень полезная информация, последний ваш ответ я даже пока не знаю где можно применять(пусть будет в запас), а предыдущие сейчас все попробую. Еще тогда уж разрешите вопрос, что бы все было прозрачно что пока не ясно:
params = {"startbuy","startsell","startnet","todaybuy","todaysell","totalnet","session_status"}
for key,v in ipairs(params) do
local totalnet = getFuturesHolding('SPBFUT000000','SPBFUT000pf','SRH9', 0)[v]
if totalnet~=nil then
PrintDbgStr(v.." = "..totalnet)
end
end