Пишу потому, что к большому моему удивлению открыл, что весьма активные писатели Смарт-лаба этого не знают. В главном потоке программы Quik работают только функции обратного вызова типа OnTransReply, OnTrade и индикаторы. Кстати, OnTrade срабатывает не только по заявкам из скрипта, но и поданным интерактивно.
Дело обработчиков событий не обрабатывать, но регистрировать их.
Неверные представления о потоках в Quik'е вынуждают этих писателей городить абсурдный обмен данными между Quik'ом и внешними приложениями. Тогда как вся информация по событиям может быть обработана средствами QLua во вторичных скриптовых потоках без помех для главного потока Quik'а.
Хотя QLua обладает весьма эффективными средствами взаимодействия с любым приложением Windows, не так просто придумать повод для обращения QLua за посторонней помощью. Например, сохранять на диске текущие данные QLua может массой способов от простейшего io.read/write до SQLite.
Количество библиотек для QLua просто изумляет.
NB. Известная проблема скриптовых языков, что ошибки-описки в именах функций и переменных влекут трудно диагностируемые сбои работы, решается двумя простейшими средствами.
1) Все константы собираются в одном модуле с контролем доступа через мета-функцию __index(). Это даёт диагностику времени выполнения.
2) Для контроля имён при разработке кода следует использовать общедоступную программу lualint. А для блокировки ложных срабатываний по глобальным именам из других модулей, можно написать свой код, фильтрующий эти имена.
Чтобы расширить область контроля lualint, следует больше данных именовать как отдельные переменные. Имена полей в таблицах контролю не доступны. По возможности, их следует представлять константами из упомянутых модулей констант.
Поэтому, там где напрашивается сгруппировать переменные и функции в объект-таблицу, я сдерживаю свои навыки ООП и для группировки использую вульгарные префиксы. Например, pos_EntryPrice, pos_Exit() означают поле и функцию в «виртуальном» объекте типа Position.
1. события
2.main()
Других потоков не существует в природе.
Если вы говорите о нитях lua — это фактически один поток, принудительно переключаемый между задачами.
Вы пишите абсурд. Видимо, от непонимания предмета.
Что там в разных программах в main() разные потоки, это очевидно, и неинтересно.
По идее он просто по событию срабатывает(пришла новая сделка) неважно откуда, чтобы лишний раз не проверять таблицу сделок как в квипл скрипте
Но это древний отстой!!!
Есть ли нормальная современная ide для qlua?
Есть ли нормальный дебаг?
По сравнению с java в Idea
Где там в луа управление потоками, пулы, таймауты, jdbc, лямбды?
Пишу детские скрипты в notepad++ и думаю, что это никуда не годится