Коллеги, нужно написать простенький код на LUA для монитора состава портфеля, скажем так. Ради этого погружаться в подробности языка LUA нет ни малейшего желания. Озадачил DeepSeek. Он пишет "какой-то код", визуально, вроде, норм, но на практике не работает. Подскажете, какая нейронка нормально может написать на LUA? Чтобы сразу запустить в Квике и закрыть этот вопрос?
Пользователь
Сообщений: Регистрация: 27.01.2017
30.11.2025 14:30:48
Вопрос некорректен, т.к. на чистом Lua любая пишет адекватно, правда чтобы избежать галлюцинаций, необходимо указывать что можно использовать, иначе может придумать методы, например из Питона. Вы же хотите код на qLua, т.е. использовать методы терминала о которых мало что известно им. Точнее что-то они знают, но именно что-то. Поэтому прежде чем задавать вопрос, загружайте документацию qlua, чтобы был понятен контекст разработки.
А так - Anthropic Claude, если есть доступ. Если нет, то OpenAI с их ChatGPT. Если и к ним нет, то и DeepSeek сгодится, если правильно вопросы задавать.
Коллеги, нужно написать простенький код на LUA для монитора состава портфеля, скажем так. Ради этого погружаться в подробности языка LUA нет ни малейшего желания. Озадачил DeepSeek. Он пишет "какой-то код", визуально, вроде, норм, но на практике не работает. Подскажете, какая нейронка нормально может написать на LUA? Чтобы сразу запустить в Квике и закрыть этот вопрос?
А мне он пишет нормально. Попробуйте GLM-4.5. Тоже мне пишет нормально. ----------------------------------- Конечно лучше всего пишут платные агенты. ================================================ Качество кода зависит от тщательности проработки тех задания. ----------------------- Так, что сказать "Кто, что все" - и нате Вам. Увы не получится.
Пользователь
Сообщений: Регистрация: 30.01.2015
30.11.2025 14:37:27
У меня DeepSeek уже помнит, что я пишу для QUIK. Когда что-то надо написать на луа, но лень вспоминать , спрашиваю его чтобы получить заготовку. Он начинает приводить примеры и в результате скатывается на финансовый рынок и программирование под QUIK. Приходится его останавливать чтобы не отвлекался.
Пользователь
Сообщений: Регистрация: 30.01.2015
30.11.2025 14:39:27
Проще им писать на питоне. ----------------------- Но все равно, там где я решу задачу в 20 строк у них получается 100.
Пользователь
Сообщений: Регистрация: 01.07.2015
30.11.2025 15:22:48
Парни, спасибо за ответы!
Посмотрите, вот такой код мне генерит DeepSeek. Прога, чтобы отображать размер счета на срочке в моменте. Таблица отображается, но пустая, Quik пишет "Не удалось получить данные для счета NNNNNN". Понятное дело, что в коде ставлю свои TRADE_ACCOUNT и FIRM_ID. Что не так? У меня нет примеров на ЛУА, чтобы сравнить.
-- Скрипт для вывода параметров срочного рынка для конкретного счета (горизонтальная таблица с датой и временем) function main() -- Укажите здесь ваш торговый счет и код фирмы
local FIRM_ID = "MC02500" -- Например: "MC02500" local TRADE_ACCOUNT = "12345I" -- Например: "12345I"
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
Пользователь
Сообщений: Регистрация: 30.12.2021
21.02.2026 19:24:27
Исправлено через 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