Парни, спасибо за ответы!
Посмотрите, вот такой код мне генерит DeepSeek. Прога, чтобы отображать размер счета на срочке в моменте. Таблица отображается, но пустая, Quik пишет "Не удалось получить данные для счета NNNNNN".
Понятное дело, что в коде ставлю свои TRADE_ACCOUNT и FIRM_ID. Что не так? У меня нет примеров на ЛУА, чтобы сравнить.
=======================================================
-- Скрипт для вывода параметров срочного рынка для конкретного счета (горизонтальная таблица с датой и временем)
function main()
-- Укажите здесь ваш торговый счет и код фирмы
local FIRM_ID = "MC02500" -- Например: "MC02500"
local TRADE_ACCOUNT = "12345I" -- Например: "12345I"
-- Создаем таблицу
local t = AllocTable()
-- Добавляем колонки
AddColumn(t, 0, "Дата и время", true, QTABLE_STRING_TYPE, 20)
AddColumn(t, 1, "Лимит, RUB", true, QTABLE_STRING_TYPE, 15)
AddColumn(t, 2, "Вар. маржа, RUB", true, QTABLE_STRING_TYPE, 15)
AddColumn(t, 3, "Доход, RUB", true, QTABLE_STRING_TYPE, 15)
AddColumn(t, 4, "Итого, RUB", true, QTABLE_STRING_TYPE, 15)
-- Создаем окно таблицы
local t_id = CreateWindow(t)
SetWindowCaption(t, "Счет: " .. TRADE_ACCOUNT)
message("Скрипт запущен для счета: " .. TRADE_ACCOUNT, 1)
while true do
-- Получаем данные для конкретного счета
local limit = getFuturesLimit(FIRM_ID, TRADE_ACCOUNT, 0)
if limit then
-- Очищаем таблицу
Clear(t)
-- Получаем текущую дату и время
local datetime = os.date("%d.%m.%Y %H:%M:%S")
-- Добавляем одну строку со всеми значениями
SetCell(t, 0, 0, datetime)
SetCell(t, 0, 1, formatMoney(limit.buylimit))
SetCell(t, 0, 2, formatMoney(limit.varmargin))
SetCell(t, 0, 3, formatMoney(limit.accruedint))
-- Итого (сумма трех параметров)
local total = (limit.buylimit or 0) + (limit.varmargin or 0) + (limit.accruedint or 0)
SetCell(t, 0, 4, formatMoney(total))
UpdateTable(t, -1, -1)
else
message("Не удалось получить данные для счета: " .. TRADE_ACCOUNT, 2)
end
sleep(3000) -- Обновление каждые 3 секунды
end
end
function formatMoney(amount)
if amount == nil then return "0.00" end
return string.format("%.2f", amount)
end
function OnStop()
message("Скрипт остановлен", 1)
return 1000
end