Closed QApplication closed 6 years ago
Проблема в том, что часть функций QLua не может в действительности вызываться одновременно. Т.е. например функцию Clear если вызывать и main скрипта и любого callback-а скрипта, то, если вызов на main скрипта произойдет до того, как OnXXX закончится, info.exe повиснет в ожидании. В спредовом боте я делал синхронизацию тремя разными способами, думая, что проблема у меня. В итоге дело закончилось вот этой темой на форуме Arqa: https://forum.quik.ru/forum10/topic3225/ Думаю, что исправлять они это не будут, потому что у тех, кто пишет на Lua такой локинг случается раз в годы и они просто перезапустят терминал. В Qlua скриптах main скрипта обычно 99% ничего не делает и ждет во вставленном в цикле sleep.
Чтоб подвисания не было, пока единственный способ, который я вижу, либо убрать эту таблицу с интерфейсом, либо сделать синхронизацию через lock-free структуру, как в log_all_trades.
Упростил бота - 02712e52fbf32665d7f37a4c92525daf79c6fed7 Должно работать.
Попробовал Ваш пример по спредовому боту. После запуска quik зависает, загрузка процесса на нуле. Бот выставляет сделки, однако, текущее состояние пользователь не может видеть.
Вот что выдает дебагер
Может требуются спецефические настройки QUIK? Или проблема в чем-то другом?