Исправлено через DeepSeek с изначальной подгрузкой в него документации по языку QLua
| Код |
|---|
-- Скрипт для вывода параметров срочного рынка для конкретного счета
-- (горизонтальная таблица с датой и временем)
local FIRM_ID = "MC02500" -- ID фирмы
local TRADE_ACCOUNT = "12345I" -- Торговый счет
local table_id = nil -- ID таблицы
local is_running = true -- Флаг работы
function main()
-- Создаем таблицу
table_id = AllocTable()
if table_id == -1 or table_id == nil then
message("Ошибка создания таблицы!", 3)
return
end
-- Добавляем колонки (индексы с 1)
AddColumn(table_id, 1, "Дата и время", true, QTABLE_STRING_TYPE, 20)
AddColumn(table_id, 2, "Лимит, RUB", true, QTABLE_DOUBLE_TYPE, 15)
AddColumn(table_id, 3, "Вар. маржа, RUB", true, QTABLE_DOUBLE_TYPE, 15)
AddColumn(table_id, 4, "Доход, RUB", true, QTABLE_DOUBLE_TYPE, 15)
AddColumn(table_id, 5, "Итого, RUB", true, QTABLE_DOUBLE_TYPE, 15)
-- Создаем окно таблицы
CreateWindow(table_id)
SetWindowCaption(table_id, "Счет: " .. TRADE_ACCOUNT)
-- Добавляем одну строку (будем обновлять её)
InsertRow(table_id, -1)
message("Скрипт запущен для счета: " .. TRADE_ACCOUNT, 1)
-- Основной цикл
while is_running do
-- Получаем данные для конкретного счета
-- limit_type = 0 (денежные средства), currcode = "" (все валюты)
local limit = getFuturesLimit(FIRM_ID, TRADE_ACCOUNT, 0, "")
if limit then
-- Получаем текущую дату и время
local datetime = os.date("%d.%m.%Y %H:%M:%S")
-- Обновляем значения в первой строке (row = 1)
SetCell(table_id, 1, 1, datetime, 0)
-- Получаем значения (проверяем возможные имена полей)
local limit_value = limit.cbplimit or limit.buylimit or 0
local var_margin = limit.varmargin or 0
local accrued = limit.accruedint or 0
SetCell(table_id, 1, 2, formatMoney(limit_value), limit_value)
SetCell(table_id, 1, 3, formatMoney(var_margin), var_margin)
SetCell(table_id, 1, 4, formatMoney(accrued), accrued)
-- Итого (сумма трех параметров)
local total = limit_value + var_margin + accrued
SetCell(table_id, 1, 5, formatMoney(total), total)
-- Обновляем заголовок с временем последнего обновления
SetWindowCaption(table_id, string.format("Счет: %s | %s",
TRADE_ACCOUNT, datetime))
else
-- Если данных нет, показываем прочерки
local datetime = os.date("%d.%m.%Y %H:%M:%S")
SetCell(table_id, 1, 1, datetime, 0)
SetCell(table_id, 1, 2, "--", 0)
SetCell(table_id, 1, 3, "--", 0)
SetCell(table_id, 1, 4, "--", 0)
SetCell(table_id, 1, 5, "--", 0)
end
-- Ждем 3 секунды
sleep(3000)
end
message("Скрипт остановлен", 1)
end
function formatMoney(amount)
if amount == nil then return "0.00" end
return string.format("%.2f", amount)
end
function OnStop()
is_running = false
if table_id then
DestroyTable(table_id)
end
return 1000
end |