Вопрос к программистам QLUA
Уважаемые программисты!
Подскажите, как сделать простенькую панель управления роботом. Нужно менять несколько параметров в роботе не останавливая его. Может кто знает как это сделать?
1.4К |
Читайте на SMART-LAB:
🎯 Как сработала идея на рынке драгоценных металлов
В этом году серебро удвоило цену. Оно пользуется спросом не только как защитный актив, но и как промышленный магнит зелёной энергетики.
Наши...
ПАО «АПРИ» успешно разместило выпуск биржевых облигаций серии БО-002P-12
ПАО «АПРИ» успешно разместило выпуск биржевых облигаций серии БО-002P-12
💼 Книга заявок закрыта 23 декабря 2025 года в объёме...
🎄Новогодняя распродажа в Schoollive уже стартовала! 🎄
С сегодняшнего дня и до конца года забирайте любые наши курсы со скидкой 30%. Подробности вас ждут на странице «Обучение MOEX», заходите и...
см. Qlua.chm: функция SetTableNotificationCallback
Приложение 3. Примеры обработки событий для таблиц
Пример обработки событий мыши и клавиатуры
Собственно, вот:
smart-lab.ru/blog/454196.php
smart-lab.ru/blog/453384.php
тут просто окошки с таблицами выводятся. Остается только поискать как в окошки добавлять поля для ввода и как пишутся CallBack-и при нажатии на кнопки вроде Update
Не забудь(те) поделиться результатами своих изысканий!)
QLUA.chm
Функции для работы с таблицами Рабочего места QUIK, созданных с помощью скриптов на языке LUA.
Аккуратно посмотрите, что можно и чего нельзя. Там хороший набор функций. Мне хватило возможностей и для управления, и для отображения состояния.
Единственно — добавил сохранение и восстановление размеров и положения окна с таблицей.
а так, визуальный интерфейс на луа пишется довольно просто, вот простейший пример:
stackoverflow.com/questions/18056592/how-can-i-make-an-gui-application-in-lua
Проблема только в том, что гуевина может конфликтовать с квиком, блокировать скрипт, например.
Однако, если Вы понимаете, что существует хотя бы небольшая вероятность увеличения количества одновременно работающих роботов, или значительное увеличение количества обрабатываемых одновременно инструментов, то максимум через годик Вы поймете, что QLua — это тупик.
Настоятельно рекомендую уже сейчас смотреть в сторону C#. Я все это уже прошел, а у Вас есть возможность сэкономить время (как минимум, год).
github.com/finsight/QUIKSharp/issues
Это единственный абсолютно бесплатный проект, с открытым исходным кодом.
На сколько мне известно, ребята из TSLab положили в основу своего коннектора именно этот проект.
www.youtube.com/watch?v=DKkCvKeSFoc
из него понятно, что этот коннектор соединяется с квиком через сокеты по протоколу json. В принципе, это концептуально то же самое что я делаю, только более общо) По скорости мой подход должен быть несколько быстрее, т.к. параметры средствами луа передаются в dll, а не преобразуются внутри луа скрипта в json, а потом уже передаются по тем же сокетам. У меня не передается лишнее, конверсия в числа происходит средствами луа и только тех полей, которые необходимы. К чему это я? К тому, что получается, это то же самое использование qlua, только с переносом исходного кода робота с луа на си шарп. В моем случае — с луа на с++. Кроме бесспорных преимуществ разработки на с#/c++ над lua еще есть какие-то? В чем тупик у qlua, в том, что написав кучу кода, он при определенной сложности робота просто ляжет и будет «неподъемным» для интерпретатором луа, или есть еще что-то, что я не могу понять?
В Вашем случае, конечно же никаких дополнительных преимуществ не будет, т.к. по сути Вы делаете то же самое, но для другой среды. На счет скорости ничего вразумительного сказать не смогу. Помню только что автор проекта утверждал, что скорость работы этого коннектора достаточно большая, чтобы не особо задумываться об этом. Мне скорости хватает, но я не работаю ни с тиковыми данными, ни с обезличенными сделками.
Условно (с учетом изменения структуры запуска роботов после перехода на С#), можно сказать, что сейчас у меня одновременно подключены к одному терминалу и работают в общей сложности 58 роботов + 1 служебный на QLua, и остается немалый запас по увеличению количества запускаемых роботов. На QLua я себе такого позволить не смог бы ни при каких обстоятельствах.
*Кстати, раз коннектор использует сокеты, робота по идее можно не только в отдельный процесс вынести, но и на отдельную физическую машину. Если это в коннекторе еще не реализовано, это достаточно легко сделать, при необходимости. Если машины соединены проводом и стоят рядом, там пинг какие-то микросекунды будет, т.е. ноль считай.