После обновления QUIK до версии 6.16.1.15 он стал периодически вылетать с ошибкой при запуске LUA-скрипта. В предыдущей версии 6.15 скрипт работал стабильно. Я хочу вернуться к предыдущей стабильной версии, но, к сожалению, после обновления я удалил из папки "backup" нужные файлы. Связался с брокером, но у него предыдущей версии уже нет. Брокер порекомендовал запросить версию 6.15 у разработчика на данном форуме, и указал, какие настройки надо будет поменять, чтобы она была совместима с его серверами.
Просьба к сотрудникам ARQA Technologies предоставить ссылку на дистрибутив QUIK версии 6.15 ( не Junior )
Сергей Иваницкий пишет: После обновления QUIK до версии 6.16.1.15 он стал периодически вылетать с ошибкой при запуске LUA-скрипта. В предыдущей версии 6.15 скрипт работал стабильно. Я хочу вернуться к предыдущей стабильной версии, но, к сожалению, после обновления я удалил из папки "backup" нужные файлы. Связался с брокером, но у него предыдущей версии уже нет. Брокер порекомендовал запросить версию 6.15 у разработчика на данном форуме, и указал, какие настройки надо будет поменять, чтобы она была совместима с его серверами.
Просьба к сотрудникам ARQA Technologies предоставить ссылку на дистрибутив QUIK версии 6.15 ( не Junior )
Добрый день,
Для диагностики проблемы, могли бы прислать нам на почту quiksupport@arqatech.com скрипт Lua, а также скриншот возникающей ошибки. В письме необходимо указать ссылку на данную ветку форума.
Удалось решить проблему своими силами. После замены в папке QUIK библиотеки lua5.1.dll версии 1.0.0.3 на старую версию 1.0.0.0 - вылеты с ошибкой прекратились, и всё работает стабильно.
не знаю, как насчёт 1.0.0.0. но, 1.0.0.3. - это просто библиотека импорта функций LUA из той же QLUA.dll. В поставке QUIK - она оставлена исключительно для совместимости. На данный момент, qlua.dll - полностью заменяет стандартный (с точки зрения LUA-дистрибутива файл). Скорей всего, проблема том, что Вы используете какие-то дополнительные внешние dll в своём скрипте, которые скомпилированы под lua.5.1.dll.
В любом случае, даже если, как Вы считаете, решили свою проблему то, могли бы хотя бы написать какую именно ошибку выдаёт квик.
Sam063rus, вы правы, дело не в версии lua5.1.dll. Сперва показалось, что проблема решена, но нет - вылеты с ошибкой продолжаются.
Речь идет о довольно известном скрипте "Intraday LUA", выполняющем функцию автостопа. QUIK вылетает с ошибкой "Internal exception happend", причем вылетает не сразу после запуска скрипта, а спустя некоторое время, от 20-30 минут до нескольких часов.
Сегодня на неподключенном к торгам терминале опытным путем выяснил, что вылет происходит при переключении на вкладку со свечным графиком нефтяного фьючерса BR. В понедельник проверю это в режиме торгов. Если окажется, что скрипт рушит терминал только на этом графике, просто удалю его, и дело с концом. Всё равно я этим фьючерсом не торгую, а его график использую лишь в справочных целях.
если Вы про те скрипты, которые распространяет mycreditcard.ru - то в них очень много багов. В таком случае, Вам лучше обратиться к ним, т.к. они не распространяют исходники от него. К тому же, сам привод - бесплатен у них - поэтому тут вряд ли получится, что-то потребовать.
одна из причин вылета может заключаться в том, что они используют в своём скрипте vcl.dll (так же известную, как VCLua 0.3.5). Она не предназначена для стабильной работы в среде QLUA. Подробно вся эта хрень обсуждалась на quik2dde.ru. На данный момент пока не удалось пересобрать полностью стабильный релиз, т.к. и сама QLUA оказалась не без греха: http://forum.quik.ru/messages/forum10/message1324/topic176/#message1324
К mycreditcard по этому вопросу обращаться смысла особого нет. Они пишут: "В версии QUIK 6.16.0.42 и старше были внесены изменения, которые приводят к ошибке после завершения QUIK при использовании библиотеки VCL. В версии 6.15.2.9 все работает корректно. К сожалению внести какие-либо корректировки в скрипт на данный момент не представляется возможным, т.к. не известна причина такой работы QUIK." Что ж, значит, придется смириться с ситуацией.
Удалось четко локализовать условия, при которых терминал вылетает с ошибкой при запущенном скрипте. Происходит это только в двух случаях: а) при открытии одной из вкладок; б) при двойном щелчке левой кнопкой мыши по графику в другой вкладке. Если избегать этих действий, связка терминал-скрипт работает стабильно без ограничения по времени.
Так что тем, кто использует скрипт "Intraday LUA" и сталкивался с такой же проблемой, можно порекомендовать опытным путем выявить, какие действия служит триггером сбоя, и после запуска данного скрипта воздерживаться от них, если, конечно, они не критичны для работы.
присоединяюсь - тоже это замечал. но не могу понять причину такого поведения. Michael Bulychev - Вам слово. получается при потере фокуса окна скрипта (и то, не во всех случаях) - LUA VM ведёт себя непредсказуемым образом. Обычно такое зависание происходит в момент входа в критическую секцию (или в её теле) и вытекающую из этого непредсказуемость поведения всей системы (т.к. это основная обратная сторона медали использования критических секций).
получается при потере фокуса окна скрипта (и то, не во всех случаях) - LUA VM ведёт себя непредсказуемым образом.
В моем случае потеря фокуса окна скрипта сама по себе не вызывает падения. Я могу свободно переключаться на любые вкладки ( кроме одной-единственной ) и вообще выполнять абсолютно любые действия в терминале, кроме двух вышеописанных. Окно скрипта при этом, естественно, находится "не в фокусе". И оно спокойно может быть "не в фокусе" сколь угодно долго, и при этом нормально работает как QUIK, так и сам скрипт. Падение ( опять-таки, в моем случае, как у других, не знаю ) вызывают именно "триггерные" действия, как таковые, а не вызванная ими потеря фокуса окна скрипта.
sam063rus пишет: Обычно такое зависание происходит в момент входа в критическую секцию (или в её теле) и вытекающую из этого непредсказуемость поведения всей системы
тут я поясню - если во время входа в критическую секцию или в её теле произошло не обработанное исключение (неважно по какой-либо причине) - то, система ведёт себя именно так.
sam063rus, я вам благодарен за внимание к моей проблеме. Ни в коей мере не хотел поставить под сомнение ваши выводы на основании вашего опыта ( который явно больше, чем мой ). Я просто изложил свои наблюдения в одном конкретно взятом случае. А под "другими" имел ввиду не вас лично, а пользователей вообще.
Сергей Иваницкий пишет: Удалось четко локализовать условия, при которых терминал вылетает с ошибкой при запущенном скрипте. Происходит это только в двух случаях: а) при открытии одной из вкладок; б) при двойном щелчке левой кнопкой мыши по графику в другой вкладке. Если избегать этих действий, связка терминал-скрипт работает стабильно без ограничения по времени.
Так что тем, кто использует скрипт "Intraday LUA" и сталкивался с такой же проблемой, можно порекомендовать опытным путем выявить, какие действия служит триггером сбоя, и после запуска данного скрипта воздерживаться от них, если, конечно, они не критичны для работы.
Добрый день,
Ваше сообщение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Сергей Иваницкий пишет: Удалось четко локализовать условия, при которых терминал вылетает с ошибкой при запущенном скрипте. Происходит это только в двух случаях: а) при открытии одной из вкладок; б) при двойном щелчке левой кнопкой мыши по графику в другой вкладке. Если избегать этих действий, связка терминал-скрипт работает стабильно без ограничения по времени.
Так что тем, кто использует скрипт "Intraday LUA" и сталкивался с такой же проблемой, можно порекомендовать опытным путем выявить, какие действия служит триггером сбоя, и после запуска данного скрипта воздерживаться от них, если, конечно, они не критичны для работы.
Добрый день. Проблема в использовании vcl.dll Подробности можно почитать тут
Столкнулся с аналогичной проблемой при работе собственного скрипта. Скрипт делает следующее: создает Quik таблицу (AllocTable / CreateWindow) и периодически обновляет в ней данные. Данные обновляются через полную очистку таблицы (Clear) и добавление новых строк (InsertRow). Скрипт спокойно себя ведет, когда окно таблицы не в фокусе, но стоит только кликнуть по строке таблицы (видимо в момент обновления данных) - сразу вылетает ошибка. Как ранее упоминал sam063rus , скорее всего причина в гонке потоков и некорректной синхронизации. Версия Quik 7.5.0.72.