Всем привет! робот на луа берет цену так
local p = getParamEx("SPBFUT","SiZ6","LAST").param_valueи через раз приходит 0, причем в таблице текущих цена нормальная. если скрипт перезапустить то все ок. подскажите, что я делаю не так?
QUIK · Mr.DeFolt
Всем привет! робот на луа берет цену так
local p = getParamEx("SPBFUT","SiZ6","LAST").param_valueи через раз приходит 0, причем в таблице текущих цена нормальная. если скрипт перезапустить то все ок. подскажите, что я делаю не так?
Приветствую. isConnected() == 1 проверяешь перед getParamEx?
нет, не проверяю. скрипт в автозапуске стоит, стартует вместе с терминалом. то есть надо в начале ждать пока isConnected не станет 1?
Надо проверять, подключён ли терминал вообще. Хотя, он по идее что в таблице должен отдать всё равно.
Ещё можешь проверять result: "1" у getParamEx. Вот так например:
function price(class, sec)
if isConnected() ~= 1 then return nil end
local p = getParamEx(class, sec, "LAST")
if not p or p.result ~= "1" then return nil end
local v = tonumber(p.param_value)
if not v or v <= 0 then return nil end
return v
endспасибо, сделал так. нули больше не приходят. но заметил что если закрыть таблицу текущих торгов, то result всегда 0 и цены вообще нет. ее что, обязательно держать открытой?
Если не хочешь держать таблицу открытой, то нужно сначала заказать данные через ParamRequest вот так
local CLASS, SEC = "SPBFUT", "SiZ6"
local PARAMS = { "LAST", "BID", "OFFER" }
local running = true
function OnStop()
running = false
for _, name in ipairs(PARAMS) do
CancelParamRequest(CLASS, SEC, name)
end
end
function main()
-- заказываем параметры: таблица «Текущие торги» больше не нужна
for _, name in ipairs(PARAMS) do
ParamRequest(CLASS, SEC, name)
end
while running do
if isConnected() == 1 then
local p = getParamEx(CLASS, SEC, "LAST")
local last = p and p.result == "1" and tonumber(p.param_value)
if last and last > 0 then
-- цена есть, работаем
end
end
sleep(500)
end
endзаработало, таблицу закрыл, цена идет. спасибо! а bid и offer тоже так брать через getParamEx или для них лучше стакан подписывать?
Лучше через getParamEx бери, на стакан надо подписываться через Subscribe_Level_II_Quotes и getQuoteLevel2. Геморрой ещё тот 
спасибо за помощь 