На основе описанного в документации QLUA.chm можно сделать вывод, что после вызова OnStop() не гарантировано, что main() завершится до конца, поэтому в вашем случае таблица и не удаляется.
На основе этого предлагаем добавить процедуру удаления окна в тело колбека OnStop().
Могли бы Вы, пожалуйста, проверить настройки Вашей ТОС ? Зайдите в настройки и, выбрав необходимый Вам класс, нажмите на "..." напротив пункта "фильтр инструментов" (См. скриншот 1). В появившемся окне нажмите "Добавить всё" или добавьте только необходимые Вам классы (См. скриншот 2). После этого нажмите "Да". Сообщите, пожалуйста, результат.
Касательно того, что не появляются свечи на графике. Вы сказали, что стакан отображается нормально, могли бы Вы уточнить, стакан изменяется или он статичен ? Изменяется ли таблица текущих торгов или она также статична в момент того, как Вы видите, что свечи не отображаются на графике ?
От количества используемых функций, переменных растёт потребление оперативной памяти. По сути, количество неиспользуемых переменных или функций не должно влиять на производительность работы скрипта или индикатора.
Однако по обращениям клиентов мы подозреваем, что в текущей реализации QLUA данная зависимость, к сожалению, присутствует, то есть, чем больше объявленных переменных, тем хуже производительность. Данная проблема сейчас нами изучается.
Касательно Вашего вопроса. К сожалению, подобные "нагрузочные" тесты с индикаторами не проводились, поэтому предоставить какую-либо информацию по Вашему вопросу мы не можем.
Если Вы столкнётесь с проблемами производительности, используя индикаторы на графиках, просьба сообщить и предоставить подробное описание - будем изучать проблему.
Касательно Вашего пожелания. Могли бы Вы, пожалуйста, подробно описать, для чего Вам необходим данный функционал ? Какие задачи Вы хотите решать, используя его ?
Ответы на Ваши вопросы: 1) Да; 2) alltrade.dat очищается с новой торговой сессией, изменить это нельзя; 3) Что конкретно понимается под фразой "Мы можем во внешнюю программу получать тики" ? Если речь идёт о том, можно ли при помощи сторонней программы получить доступ к содержимому dat-файлов - то нельзя. Но Вы можете экспортировать содержимое ТОС при помощи ODBC или DDE в базы данных или excel-таблицы, информацию из которых потом Вы можете импортировать во внешние системы анализа.
Правильно понимаем, что Вы хотите увеличить производительность терминала QUIK, так как сталкиваетесь с торможением или зависанием при работе ? Если да, то в первую очередь предлагаем выполнить обновления терминала до актуальной (9.4) версии. Также предлагаем выполнить рекомендации, указанные по ссылкам ниже: https://forum.quik.ru/forum1/topic1539/ https://forum.quik.ru/forum1/topic1540/
Если у Вас какие-либо другие цели, просьба это, пожалуйста, уточнить.
Чтобы вручную обновить терминал, скачайте архив для обновления по данной ссылке. Перед обновлением необходимо сделать полную резервную копию директории с действующим терминалом. Для обновления скопируйте абсолютно все файлы из скачанного архива в директорию с действующим терминалом с полной заменой.
DASTAD написал: Сегодня появились новые сообщения после перезаказа данных - При создании диаграммы "Polymetal График цены и объёма" не удалось создать график "Polymetal [Volume]" для инструмента "POLY[TQBR]", так как данный инструмент отсутствует в справочнике инструментов. Порядка 20 шт. (Видимо, для каждого инструмента выделенного на одной из таблиц текущих параметров, для просмотра графика)
Данная ошибка появляется, когда в терминале открыты окна с графиками по параметрам инструментов, которые больше в терминале не транслируются. Чтобы данные сообщения больше не появлялись, предлагаем таковые окна с диаграммами закрыть.
Kolossi написал: Наверное я не точно сформулировал вопрос разработчикам и по этому не вижу ответа. Вопрос: Почему после закрытия пользовательской таблицы (см. пример) функцией DestroyTable(skt_id), функция IsWindowClosed(skt_id) считает что окно таблицы по прежнему открыто?
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Обновил. Скрипт работает, но метки на графике не ставит. В старой версии метки ставятся.
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Старатель написал: Добавлю: даже если торговый счёт (поле А) каким-то чудом не слетел после подключения к серверу, то чтобы отображалась верная текущая позиция, надо поменять счет на другой и вернуть обратно. QUIK 9.3.1.11
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Старатель написал: Оказывается, при включенной настройке "Верхняя панель" в стакане.
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
На вкладке не более 2 стаканов по разным инструментам, торговый счет отображается во всех стаканах и они без проблем работают. Крайне неудобно, что теперь после любого нового соединения с сервером приходится перенастраивать стаканы (у меня их несколько десятков).
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Денис написал: QUIK 9.2.3.15 Метка, при выставлении на график, привязывается к горизонтальной оси, т.е. при масштабировании по времени метка "следует" за свечками. Однако, при масштабировании графика по высоте, метка уже не "следует" за своим исходным положением. ЕМНИП, в 8-й версии квика метка была привязана и к вертикальной оси тоже. Если есть возможность вернуть утраченные свойства меткам, то верните, пожалуйста.
Прошу простить, за эту фичу отвечает галочка "перемещать со шкалой цены". Тему можно удалить.
Опять переобусь и попрошу вернуть привязку метки к вертикальной шкале по-умолчанию, как это было для предыдущих версий.
Добрый день,
Описанная в данном обращении проблема была устранена в версии 9.4.0 терминала QUIK. Рекомендуем вам обновить версию ПО. Приносим извинения за причиненные неудобства.
Кирилл написал: Спасибо, Даниил, кнопка действительно сбросилась.
По дробной части:если в установленную программу с вашего сайта добавляю файлы из прикрепленного архива https://disk.yandex.ru/d/KnAeWNwwqz1UHw на графике именно норникеля происходит вышеописанный баг, возможно дело в брокере. Хотя, если в компьютерах при запуске программы еще до подключения и ввода пароля посмотреть на графики, с ними все в порядке, кроме окон с % от закрытия. Там просто сплошная прямая линия по всем.
Добрый день,
Описанная в данном обращении проблема будет устранена в одной из очередных версий ПО. Приносим извинения за причиненные неудобства.
nikolz написал: запустил Ваш тест на боевом квике ------------------ вот результаты:
Там колбеки-то были? Сравнивать имеет смысл при наличии колбеков.
Цитата
Старатель написал: Нагрузка на CPU пропорциональна количеству любых объявленных переменных [...] и количеству колбеков , получаемых скриптом.
Скрипт: Скрытый текст
Код
--local n = 0
--local n = 1000000
--local n = 3000000
local list = {TQBR = {"SBER", "GAZP" , "VTBR" , "RUAL" }, CETS = {"USD000UTSTOM"}, SPBFUT = {"BRH2", "RIH2" , "SiH2" , "SRH2" }}
local param = {"BID", "OFFER" , "LAST" , "NUMTRADES" , "NUMBIDS" , "NUMOFFERS" }
local run
function OnStop ()
run = nil
end
local c = 0
function OnQuote (class_code, sec_code)
if not run then return end
c = c + 1
end
function OnParam (class_code, sec_code)
if not run then return end
c = c + 1
end
function OnAllTrade (alltrade)
if not run then return end
c = c + 1
end
function main ()
local a = {}
for i = 1 , n do a[i] = i end
for class, sec in pairs(list) do
for i = 1 , # sec do
Subscribe_Level_II_Quotes (class, sec[i])
for i = 1 , # param do
ParamRequest(class, sec, param[i])
end
end
end
local t = os.clock ()
run = true
while run and t + 90 > os.clock () do
sleep ( 500 )
end
t = os.clock () - t
for class, sec in pairs(list) do
for i = 1 , # sec do
Unsubscribe_Level_II_Quotes (class, sec[i])
for i = 1 , # param do
CancelParamRequest(class, sec[i], param[i])
end
end
end
message ( string.format ( "%u: %u; %.0f/сек" , n, c, c/t))
end
Результаты в боевом QUIK 9.3.3.3
В утреннюю сессию (~ 9 ч. МСК)
1. n = 0: 18233; 202/сек Скрытый текст
2. n = 1000000: 19444; 215/сек Скрытый текст
3. n = 3000000: 18127; 200/сек Скрытый текст
В дневную сессию (~ 10 ч. МСК)
4. n = 0: 54455; 605/сек Скрытый текст
5. n = 1000000: 45956; 510/сек Скрытый текст
Здравствуйте! Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Ваши пожелания зарегистрированы. Мы постараемся рассмотреть их и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.
В текущей реализации действительно предусмотрен алфавитный порядок, причём наименования, начинающиеся с большой буквы, будут иметь более высокий приоритет. Поменять таковой порядок и расположить в нужном Вам, к сожалению, нельзя.
Графики, в том числе и тиковый, формируются на основе информации полученной в таблице обезличенных сделок, поэтому предлагаем настроить вывод данной таблицы по OBDC или DDE для последующего экспорта таковой информации во внешние системы анализа.
В силу того, что конкретной версии Вашего терминала указано не было, тестировали данное поведение на 9.3.3.3. К сожалению, у нас данное поведение не воспроизвелось (См. скриншоты). Если данная проблема у Вас ещё сохраняется, предлагаем обновиться до актуальной версии терминала (9.3.3.3), если версия Вашего терминала ниже таковой.
Если после обновления данное поведение ТОС будет сохраняться, необходимо будет создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
На данный момент и в текущей реализации QUIK нет возможности создать окно с параметрами "Убрать заголовок", "Поверх всех окон" при помощи QLUA. Можем зарегистрировать пожелание на добавление такого функционала, регистрируем ?
Касательно проблемы с нехваткой памяти. Если Вы уверены, что ничего не загружает процессор и память, то предлагаем выполнить инструкции, указанные ниже:
1. Закройте Рабочее место QUIK. 2. В директории с Рабочим местом QUIK удалите все файлы с расширениями *.log и *.dat (кроме файлов alerts.dat, metastok.dat, portfolio.dat и scripts.dat, в которых хранятся пользовательские настройки). 3. Запустите Рабочее место QUIK.
Если данные рекомендации не помогли, то, скорее всего, файл настроек с расширением *.wnd, используемый терминалом, повреждён. Предлагаем его удалить, запустить терминал QUIK без файла и создать его заново.
Если данная рекомендация также не помогла, то, в таком случае, просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Касательно ошибки "General Protection Fault...". Просьба, пожалуйста, прислать файл с расширением *.dmp, указанный в теле получаемой ошибки, на адрес quiksupport@arqatech.com для анализа.
Описываемый Вами эффект у нас, к сожалению, не воспроизводится. Если Вы обновляли терминал до актуальной (9.3.3.3) версии, а также выполняли рекомендации по оптимизации терминала и ошибка до сих пор актуальна, то просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
По данной проблеме Вам необходимо обратиться к брокеру, клиентом которого Вы являетесь, чтобы он, в свою очередь, сделал запрос к нам. После получения обращения, проблема будет изучаться совместно с Вашим брокером.
Просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Прежде всего приносим извинения за длительную задержку с ответом.
К сожалению, по присланным скриншотам дать какой-либо содержательный комментарий мне не представляется возможным. Могли бы Вы, пожалуйста, прислать новые скриншоты, только теперь с полями таблицы (Код инструмента, текущий остаток и другие) в момент, когда функция getDepoEx возвращает 0.
Также для анализа необходим весь код используемого Вами скрипта. Если не хотите выкладывать его на форуме, то можете прислать письмом на почту: quiksupport@arqatech.com.
Если будете отправлять письмо на почту, в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Могли бы Вы, пожалуйста, уточнить, для чего Вам необходим данный функционал ? От какого неудобства Вы хотели бы избавиться, используя таковой ? А также почему вариант временно убрать индикатор с графика Вас не устраивает ?
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Просьба дополнительно уточнить, при переподключении к серверу брокера перезаказывали ли Вы данные ? Если да, то именно из-за этого у Вас не накапливается информация.
Чтобы история накапливалась, необходимо сделать следующее: 1) Открыть и держать открытым терминал QUIK 2) Открыть и держать открытым график по необходимому инструменту или параметру таблиц. 3) Не перезаказывать данные (Данная рекомендация была дана, чтобы заказать с сервера исторические данные, но так как выяснилось, что Ваш брокер не может накапливать историческую информацию, для Вас данная рекомендация больше не актуальна)
Если Вы выполняли данные рекомендации и история всё равно не накапливается, просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
--local v = 0
--local v = 100
--local v = "socket"
--local v = "iuplua"
local function f(n)
if type(n) = = "number" then
local a = {}
for i = 1 , n do
a[i] = {}
for j = 1 , 1000 do a[i][j] = j end
end
return a
elseif n = = "socket" then
local socket = require ( "socket" )
require ( "socket.smtp" )
return socket
else
return require (n)
end
end
local run = true
function OnStop ()
run = nil
end
local m
function OnInit ()
m = f(v)
end
local t
function OnAllTrade ()
if getNumberOf ( "all_trades" ) = = 1 then
local num = 1
function OnAllTrade (alltrade)
if not run then return end
num = num + 1
if num = = 200000 then
t = os.clock () - t
run = false
end
end
t = os.clock ()
end
end
function main ()
while run do sleep ( 500 ) end
if t then message (v .. ": " .. t) end
end
Поочерёдно раскомментирую одну из 4-х первых строк и запускаю скрипт. Далее делаю перезаказ обезличенных сделок: Система / Настройки / Основные настройки... -> «Программа» / «Получение данных» / «Обезличенные сделки». Выбираю класс "Акции 1-го уровня (эмулятор)" -> "Перезаказать данные"
Оговорюсь, что сейчас помимо тестового у меня запущено ещё 3 квика и несколько других приложений. Поэтому результаты могут быть искажены. Но позволяют сделать следующие выводы :
Цитата
Старатель написал: Сам по себе скрипт не выполняет какой-либо полезной работы, он только вызывает пустой OnAllTrade(), больше ничего. Увеличение времени работы скрипта при подключении различных библиотек как раз свидетельствует о наличии зависимости нагрузки, создаваемой колбеком, и количеством данных в скрипте.
Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Просьба создать архив директории терминала без *.txk ключей, выложить его на какой-либо файлообменный сервер и на адрес quiksupport@arqatech.com прислать ссылку для скачивания.
Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Предлагаем поменять язык приложения (с экрана авторизации) на английский, подключиться к серверу, затем выйти, вернуть язык обратно на русский и снова подключиться.
Прежде всего приносим извинения за длительную задержку с ответом.
Данные рекомендации были выданы для того, чтобы Вы обратились к брокеру с вопросом накопления таковым исторической информации. Если судить по предоставленной Вами информации, то брокер её не накапливает.
Daniil Pozdnyakov написал: Если данные рекомендации не помогут, необходимо будет с данной проблемой обратиться к брокеру, клиентом которого Вы являетесь.
Касательно
Цитата
JIMB написал: nikolz, понимаю вашу обиду, тк не заказал программу. Но АРКА разработала возможность накопления архива на локальном компьютере и просмотра в терминале QUIK . Поэтому я спрашиваю - может ли брокер Сбербанк технически препятствовать просмотру уже накопленного мной архива?
Цитата
как просмотр мной накопленного локального архива зависит от брокера, может ли Сбербанк препятствовать этому?
Брокер никак этому не может препятствовать.
Касательно того, что история до сих пор не накапливается. Правильно понимаем, что Вы не выключаете терминал, не закрываете график по интересующему параметру, а исторические данные до сих пор не накапливаются ?
Прежде всего приносим извинения за задержку с ответом.
Если посмотреть на первое сообщение данного трэда, то заметим, что "...никто не запускает скрипты с тысячами функций, но при нескольких запущенных скриптах с десятками функций при высокой активности на бирже получаем нихилую загрузку CPU.", возникают вопросы: "сколько конкретно скриптов ?", "Какие конкретно функции используются в данных скриптах ?", "Какие конкретно параметры ОС".
Так как данная информация представлена не была, тестировали скрипт обособленно. Получили следующие результаты: До запуска скрипта: (см. скриншот До_запуска(1) )
Запуск скриптов с дополнительными окнами, стаканами и ТОС : (См. скриншот Запуск_скриптов_с_дополнительными...(1))
После запуска скриптов: (См. скриншот После_запуска_скриптов(1))
После того, как данное тестирование результатов не дало, начали анализировать сообщение #19.
Результаты тестирования следующие: До запуска скриптов: (См. скриншот Сообщение_#19_До_запуска(2))
запуск скриптов: (См. скриншот Сообщение_#19_Запуск_скриптов(2))
После запуска 3 копий скрипта, а также перезаказа данных (Важно отметить, что на мгновение загрузка CPU действительно выросла, однако это вызвано перезаказом данных): (См. скриншот Сообщение_#19_После_запуска_скриптов(2))
Добавим, что данные обращения тестировались, как на версии 9.3.1.11, так и на 9.3.3.3.
После этого анализировали обращение под номером #51.
Вот, какие результаты были получены, не подключаясь к серверу. (см. 2 скриншота #51_результаты...)
На основе этого и было написано, что проблему воспроизвести не удалось. Важно добавить, что данную проблему перепроверили вновь ещё раз по обращениям в данном трэде (отражено на скриншотах). Если есть какие-либо дополнительные параметры запуска, просьба их уточнить, также просьба предоставить конкретные параметры ОС.
Ещё, если в процессе воспроизведения проблем, описанных в данном трэде, с нашей стороны были допущены какие-либо ошибки воспроизведения, просьба это уточнить, перепроверим.
Кирилл написал: Еще из обнаруженного: если на графике % от цены закрытия начертить линии тренда, каналы, то на следующий день то ли при выходе компьютера из спящего режима, то ли при подключении, эти линии съезжают со своих мест. Можно возвращать, но всё повторяется.
Могли бы Вы, пожалуйста, прислать скриншоты, на которых данное поведение будет отчётливо видно.
Прежде всего приносим извинения за длительную задержку с ответом.
Могли бы Вы, пожалуйста, прислать 2 скриншота, где данную проблему будет отчётливо видно. Необходимо прислать скриншот с корректной скорр. маржой, а также скриншот с некорректной скорр. маржой со снятыми активными заявками.
Просьба уточнить, правильно ли мы понимаем, что у Вас несколько таблиц обезличенных сделок, и все они привязаны к разным таблицам текущих торгов. И когда Вы выбираете какой-либо инструмент в ттт, то в привязанной тос не меняется инструмент. Если да, то просьба уточнить версия используемого Вами терминала. Если нет, то опишите, пожалуйста, подробнее проблему, с которой сталкиваетесь.