повторный Init() без OnDestroy() в индикаторе

Страницы: 1
RSS
повторный Init() без OnDestroy() в индикаторе, При смене инструмента графика в Lua индикаторе перечитывается файл без предварительного срабатывания OnDestroy()
 
Есть Таблица текущих торгов и связанный с ней график.
На график добавлен индикатор за основу взят пример индикатора ATR.
Изменения:
Код
dofile(getWorkingFolder().."\\LuaScripts\\kv_log.lua")

inited = false
            
function Init()
    if not inited then
        kvLogOpen()
        kvLog("ATR Price Init")
        func = ATR()
        inited = true
    end
    return #Settings.line
end

function OnDestroy() 
    if inited then
        kvLog("ATR Price OnDestroy")
        kvLogClose()
        inited = false
    end
end

function OnCalculate(Index) 
    if Index == 1 then kvLog("ATR Price OnCalculate(Index == 1)") end
    return func(Index, Settings)
end
При смене инструмента срабатывает
Код
kvLog("ATR Price Init")
из лога:
Цитата
: ATR Price Init
: ATR Price OnCalculate(Index == 1)
14:50:28 : ATR Price OnCalculate(Index == 1)
< Меняем инструмент >
14:50:43 : ATR Price Init
14:50:43 : ATR Price OnCalculate(Index == 1)
Соответственно теряется дескриптор открытого в первый раз файла лога.
Как можно этого избежать?

Скрытый текст
 
Добрый день.

Уточните, какую версию клиентского места QUIK используете?
Дело в том, что подобные проблемы ранее возникали, если версия ниже 7.5, то обновитесь до актуальной 7.10.
 
версия 7.9.1.1 - последняя на серверах Открытие Брокер.
Не будет конфликтов если обновлюсь с вашего сайта?
 
Цитата
Владимир Киселев написал:
dofile(getWorkingFolder().."\\LuaScripts\\kv_log.lua")
Владимир, так как у Вас версия 7.9, то можно пока не обновляться.
Пришлите вот этот файл
dofile(getWorkingFolder().."\\LuaScripts\\kv_log.lua")
Мы проверим у себя.
 
Цитата
Egor Zaytsev написал:
ело в том, что подобные проблемы ранее возникали, если версия ниже 7.5, то обновитесь до актуальной 7.10.
В 7.10, как и в предыдущих, при смене инструмента скрипт индикатора перечитывается заново. При этом значения всех переменных принимают первоначальные значения.
OnDestroy при этом не вызывается.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Цитата
Egor Zaytsev   написал:
ело в том, что подобные проблемы ранее возникали, если версия ниже 7.5, то обновитесь до актуальной 7.10.
В 7.10, как и в предыдущих, при смене инструмента скрипт индикатора перечитывается заново. При этом значения всех переменных принимают первоначальные значения.
OnDestroy при этом не вызывается.
Здравствуйте!

Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
Цитата
Egor Zaytsev написал:
Пришлите вот этот файл
dofile(getWorkingFolder().."\\LuaScripts\\kv_log.lua")
Мы проверим у себя.
Его текст в первом сообщении под спойлером (скрытый текст).
пока не разобрался как у вас прикреплять файлы.
 
Цитата
Владимир Киселев написал:
Цитата
Egor Zaytsev   написал:
Пришлите вот этот файл
dofile(getWorkingFolder().."\\LuaScripts\\kv_log.lua")
Мы проверим у себя.
Его текст в первом сообщении под спойлером (скрытый текст).
пока не разобрался как у вас прикреплять файлы.
Здравствуйте,
Мы зарегистрировали обращение. Как будет результат дадим здесь ответ.
 
Добрый день,
   
    Ошибка, описанная в данном инциденте, будет исправлена в одной из     очередных версий программы.
    Приносим извинения за причиненные неудобства.
 
Что вы признали ошибкой? Обнуление значений переменных?
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
скрипт индикатора перечитывается заново. При этом значения всех переменных принимают первоначальные значения.
OnDestroy при этом не вызывается.
Добрый день.

То, что скрипт индикатора перечитывался заново. OnDestroy при этом не вызывался.
 
Цитата
Egor Zaytsev написал:
То, что скрипт индикатора перечитывался заново.
В этом есть свой плюс: при изменении кода индикатора не нужно выполнять кучу манипуляций по его удалению и повторному добавлению на график. Достаточно переключить инструмент в режиме связанных окон туда-обратно.
А вот обнуление значений переменных - это проблема: теряются хендлеры файлов, меток и пр.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель написал:
Цитата
А вот обнуление значений переменных - это проблема: теряются хендлеры файлов, меток и пр.
Об этом и тема, поднятая мной.
А ваш плюс?:
Цитата
Старатель написал:
В этом есть свой плюс: при изменении кода индикатора не нужно выполнять кучу манипуляций по его удалению и повторному добавлению на график. Достаточно переключить инструмент в режиме связанных окон туда-обратно.
Вы используете Quik для "изменения кода"? или Вы пишите для более удобной работы в Quik?
 
P.S.: и парный OnDestroy() совсем не мешает
Цитата
Владимир Киселев написал:
удалению и повторному добавлению на график
на график
 
Проблема отсутствия вызова "OnDestroy" при смене инструмента до сих пор актуальна (QUIK 8.13.1.6). Не вызываются даже финализаторы объектов Lua, созданных в контексте предыдущего инструмента. Годы идут, когда ожидать решения проблемы?)
 
Эти контексты (контексты Lua от предыдущих инструментов на графике) - тупо живые! Я сохранял lua_State* от них и проверял все в OnInit - в этих контекстах тестовые глобальные переменные и их значения сохранены. И финализаторы не вызываются даже при закрытии терминала. Утечка ресурсов в нетривиальном пользовательском индикаторе неизбежна.
 
Добрый день.

К сожалению, на данный момент ошибка действительна не исправлена.
 
Цитата
Egor Zaytsev написал:
Добрый день.

К сожалению, на данный момент ошибка действительна не исправлена.
Будьте любезны, заведите/освежите "тикет", пожалуйста)
Вставить вызов пользовательской функции OnDestroy и/или закрыть Lua контекст пользовательского скрипта (для вызова финализаторов) при смене инструмента графика, как это делается при удалении индикатора.
 
Добрый день.

Информация добавлена в обращение.
 
Извиняюсь, что влезаю в тему, но вроде как это касается обсуждаемого вопроса.

Вызывать OnDestroy() еще и при смене интервала инструмента надо бы, график же меняется.
И соответственно, после смены интервала OnInit() заново вызывать.

Собственно, нужно это для того, чтобы скрипт индикатора понимал, что параметры графика изменили, и надо бы пересчитывать весь индикатор заново.
Сейчас выкручиваюсь тем, что в OnCalculate(), отслеживаю не изменился ли инструмент или интервал графика, но это как-то "неправильно" по моему.
 
Здравствуйте BlaZed,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
 
Цитата
Sergey Hlynovskii написал:
 Здравствуйте  BlaZed ,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Похоже, у каждого вновь прибывшего сотрудникпа Арка свой маленький блокнотик, в который он чирикает пожелалки карандашиком.

в 2013 году Михаил Булычев дважды обещал мне исправить эту проблему - в приватной переписке и на этом форуме тоже.

Потом я поднимал эту тему в ином разрезе. Написал, что в момент смены инструмента на вызывается destroy() уже на этом форуме. Алексей Иванников попросил сделать скрипт и прислать , чтобы "провести исследования". Как понимаю, в надежде, чтобы я отвязался. Я прислал. 6 строчек. После длительных обсуждений и "проверок на непротиворечивость и соответствие политике компании" признали, ну и дальше по тексту, "в одной из следующих версий". В результате потеряли блокнотик, или рыбу завернули неудачно в ту самую страничку.

Сергей Горохов, помнится, тоже поучаствовал, и с его блокнотиком тоже беда приключилась. Или просто карандашик сломался и записать было нечем.

а вы какую рыбу любите, Сергей?

P.S. Номера обращений не нужно спрашивать, поиск по форуму даст все ответы.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Sergey Hlynovskii написал:
 Здравствуйте  BlaZed ,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Какие новости по фиксу бага утечки ресурсов в скрипте индикатора? Вы же как баг это зарегистрировали, не так ли? Рука не поднимается (язык не поворачивается) назвать просьбу исправить такую грубую функциональность "пожеланием".
 
Анатолий, Я всё-таки пробежался по сообщениям службы техподдержки. Слова "Ваше пожелание зарегистрировано" встречаются более двухсот раз. Слова же "Ваше пожелание было реализовано в версии X.X.X терминала QUIK" встретились лишь 6 раз. Ещё реже встречается "Ваше пожелание учтено и будет внедрено в ближайших версиях" или "Ваше пожелание не реализовано. При его реализации сообщим Вам в этой ветке форума". Иногда встречаются просто шедевры, например:
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить...
Или:
С учётом ограниченного трудового ресурса и критичностью стоящих перед нами задач, к сожалению, вопреки Вашим ожиданиям, не представляется возможным сделать "всё и сразу, хорошо и правильно". Мы вынуждены расставлять соответствующие приоритеты, выделяя из них в первую очередь безусловно приоритетные задачи, критичные для всей системы в целом.
Последний пример - фрагмент обращения лично ко мне

Ну и, наконец, пост одного из пользователей:
Никто не просит вас отчитываться за каждое пожелание, но хотя бы список ближайших внедрений или вообще список, который вы учитываете, можете выложить. В конце концов есть конечный клиент, который написал вам об ошибке или пожелании. Вы присвоили номер, адресно в личном кабинете можно хранить список заявок со статусом и ответами? Это вообще стандартная практика по тех.поддержке по любому проекту. Сейчас все выглядит так, что вы просто делаете отписку в теме в надежде, что она затеряется и забудется за кучей аналогичных и других.
А вот это фиг! Как мне здесь объяснили, "Текущая политика компании в отношении работы с клиентскими пожеланиями не предполагает открытого доступа к списку пожеланий и их статусам. В данном вопросе, в обозримой перспективе каких-либо изменений не предвидится".
 
Цитата
Владимир написал:
Я всё-таки пробежался по сообщениям службы техподдержки.
Слова же "Ваше пожелание было реализовано в версии X.X.X терминала QUIK" встретились лишь 6 раз.

Гугл не согласен:

Цитата
Результатов: примерно 53 (0,28 сек.)
 
swerg, Мне насрать на Гугл. Я пробежался по сообщениям службы техподдержки на форуме "Программирование на языке Lua".
Страницы: 1
Читают тему
Наверх