Запускаем два скрипта: 1) Считаем количество всех сделок:
Код
function main()
local hID = AllocTable()
AddColumn(hID, 1, 'Количество', true, QTABLE_INT_TYPE, 13)
CreateWindow(hID)
InsertRow(hID, -1)
while bRun do
local nLen = getNumberOf('all_trades')
SetCell(hID, 1, 1, tostring(nLen), nLen)
sleep(100)
end
end
2) Заказываем все сделки:
Код
function main()
local sClassCode = 'QJSIM'
for sSecCode in string.gmatch(getClassSecurities(sClassCode), '([^,]*),') do
(CreateDataSource(sClassCode, sSecCode, INTERVAL_TICK)):SetEmptyCallback()
end
message('ТВС заказана', 2)
end
Через некоторое время QUIK падает с созданием дампа. После нескольких попыток все сделки наконец закачиваются в хранилище. Но при этом есть вероятность, что часть сделок теряется. Повторное переподключение к серверу не помогает. Помогает только удаление файла alltrade.dat с повторной закачкой данных.
Также удалось локализовать ошибку, когда все сделки заказываются только со 2-го вызова CreateDataSource: это происходит, если во время запуска QUIK инструмент уже находился в списке [ALL_TRADES_DATA] файла INFO.INI
Надо делать так, как надо. А как не надо - делать не надо.
Сегодня произошло следующее: В QUIK не открыто ни одного окна, кроме "Доступные скрипты"; запущен только один скрипт, заказывающий все сделки по определённому списку инструментов по классу SPBOPT. Через некоторое время получаю такую ошибку:
При этом скрипт продолжает работать: судя по логу все сделки продолжают успешно заказываться. Есть подозрение, что, ошибка выскакивает из-за того, что заказ всех сделок по большому списку инструментов происходит длительное время, в течение которого процесс info.exe загружает одно ядро процессора на 100%.
Надо делать так, как надо. А как не надо - делать не надо.
Если не открыта ТВС или тиковый график, то при заказе всех сделок из скрипта сбрасываются настройки по уже заказанным инструментам. После остановки скрипта настройки "Заказ всех сделок..." полностью сбрасываются, как будто ничего не заказывалось (даже если функция :Close() не вызывалась).
Надо делать так, как надо. А как не надо - делать не надо.
Вы можете более подробно описать концепцию работы функции CreateDataSource: то, как вы представляете себе, как она должна работать? А то постоянно натыкаешься на какие-то неожиданности и не знаешь, как реагировать: то ли это ошибка, то ли так и задумано было...
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Если не открыта ТВС или тиковый график, то при заказе всех сделок из скрипта сбрасываются настройки по уже заказанным инструментам. После остановки скрипта настройки "Заказ всех сделок..." полностью сбрасываются, как будто ничего не заказывалось (даже если функция :Close() не вызывалась).
Это ошибка или что?
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Если не открыта ТВС или тиковый график, то при заказе всех сделок из скрипта сбрасываются настройки по уже заказанным инструментам. После остановки скрипта настройки "Заказ всех сделок..." полностью сбрасываются, как будто ничего не заказывалось (даже если функция :Close() не вызывалась).
Это ошибка или что?
Добрый день.
Можете прислать файл dmp и сам скрипт для разбора?
Egor Zaytsev пишет: Можете прислать файл dmp и сам скрипт для разбора?
Какой dmp? Дампы после ошибки "Internal exception happend" я отправлял. Мне ответили, что ошибка найдена и будет исправлена.
Это уже другой вопрос. После остановки скрипта
Код
function main()
message(tostring(CreateDataSource('QJSIM', 'SBER', INTERVAL_TICK)), 2)
while not stopped do sleep(200) end
end
function OnStop()
stopped = true
end
кнопкой "Остановить" сбрасываются настройки всех выбранных инструментов для заказа всех сделок.
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: Можете прислать файл dmp и сам скрипт для разбора?
Какой dmp? Дампы после ошибки "Internal exception happend" я отправлял. Мне ответили, что ошибка найдена и будет исправлена.
Это уже другой вопрос. После остановки скрипта
Код
function main()
message(tostring(CreateDataSource('QJSIM', 'SBER', INTERVAL_TICK)), 2)
while not stopped do sleep(200) end
end
function OnStop()
stopped = true
end
кнопкой "Остановить" сбрасываются настройки всех выбранных инструментов для заказа всех сделок.
Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Egor Zaytsev пишет: Можете прислать файл dmp и сам скрипт для разбора?
Какой dmp? Дампы после ошибки "Internal exception happend" я отправлял. Мне ответили, что ошибка найдена и будет исправлена.
Это уже другой вопрос. После остановки скрипта
Код
function main()
message(tostring(CreateDataSource('QJSIM', 'SBER', INTERVAL_TICK)), 2)
while not stopped do sleep(200) end
end
function OnStop()
stopped = true
end
кнопкой "Остановить" сбрасываются настройки всех выбранных инструментов для заказа всех сделок.
Добрый день,
Описанная проблема будет устранена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.
Серж пишет: Но при этом есть вероятность, что часть сделок теряется. Повторное переподключение к серверу не помогает. Помогает только удаление файла alltrade.dat с повторной закачкой данных.
А что насчёт этого факта? Рекомендую всё же обратить внимание на него: при падении Квика нередко часть сделок "выпадает" из БД. В этом можно убедиться, вызвав неоднократное падение Квика во время загрузки сделок (см. пост #1) и сравнив полученное число сделок с количеством закачанных сделок при штатной загрузке. Падение Квика при использовании Lua-скриптов - не редкое явление в текущей реализации. Посему необходимо обеспечить целостность таблицы всех сделок при загрузке.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Но при этом есть вероятность, что часть сделок теряется. Повторное переподключение к серверу не помогает. Помогает только удаление файла alltrade.dat с повторной закачкой данных.
А что насчёт этого факта? Рекомендую всё же обратить внимание на него: при падении Квика нередко часть сделок "выпадает" из БД. В этом можно убедиться, вызвав неоднократное падение Квика во время загрузки сделок (см. пост #1 ) и сравнив полученное число сделок с количеством закачанных сделок при штатной загрузке. Падение Квика при использовании Lua-скриптов - не редкое явление в текущей реализации. Посему необходимо обеспечить целостность таблицы всех сделок при загрузке.
Добрый день,
Так как причина аварийного завершения QUIK была установлена по присланному Вами ранее файлу дампа, рекомендуем, в том числе и по указанной особенности, ожидать решения проблемы в одной из очередных версий программы.
sam063rus пишет: удивляюсь, однако сколько в квике ошибок...
А я уже не удивляюсь... Но вот упорство сотрудников ARQA, с которым они "не хотят" видеть те проблемы, о которых им рапортуют, уже бесит.
2_сотрудникам_ARQA: учитывая количество багов, найденных мной и исправленных благодаря этому, в ИТС QUIK, можно сказать, что я выполняю работу ваших бета-тестеров, которых у вас нет. Пора бы уже меня принять в штат и поставить на полное довольствие. С кем можно пообщаться по этому поводу?
Цитата
Stanislav Tvorogov пишет: Так как причина аварийного завершения QUIK была установлена по присланному Вами ранее файлу дампа, рекомендуем, в том числе и по указанной особенности, ожидать решения проблемы в одной из очередных версий программы.
Решение проблемы падения QUIK в результате заказа всех сделок функцией CreateDataSource не решит проблему "пропуска" сделок в результате краха QUIK по другим причинам. Поэтому рассматривать эти проблемы нужно отдельно.
Цитата
Серж пишет: Через некоторое время QUIK падает с созданием дампа. После нескольких попыток все сделки наконец закачиваются в хранилище. Но при этом есть вероятность, что часть сделок теряется.
Я просто привёл пример, как вы можете воспроизвести описанную ситуацию. Но у меня есть основания полагать, что это не единственная ситуация, когда часть всех сделок не сохраняется.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Пора бы уже меня принять в штат и поставить на полное довольствие.
и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , и меня! :) , на довольствие!!!:)))))
Stanislav Tvorogov пишет: Так как причина аварийного завершения QUIK была установлена по присланному Вами ранее файлу дампа, рекомендуем, в том числе и по указанной особенности, ожидать решения проблемы в одной из очередных версий программы.
Решение проблемы падения QUIK в результате заказа всех сделок функцией CreateDataSource не решит проблему "пропуска" сделок в результате краха QUIK по другим причинам. Поэтому рассматривать эти проблемы нужно отдельно.
Цитата
Серж пишет: Через некоторое время QUIK падает с созданием дампа. После нескольких попыток все сделки наконец закачиваются в хранилище. Но при этом есть вероятность, что часть сделок теряется.
Я просто привёл пример, как вы можете воспроизвести описанную ситуацию. Но у меня есть основания полагать, что это не единственная ситуация, когда часть всех сделок не сохраняется.
Добрый день.
Сергей, воспроизводить можно на скриптах в вашем первом посте?
Egor Zaytsev пишет: Сергей, воспроизводить можно на скриптах в вашем первом посте?
Да, можно на них. Перед первым запуском теста удалите файл "alltrade.dat" и очистите секцию [ALL_TRADES_DATA] в файле INFO.INI
PS: обратил внимание, что, если открыта ТВС (в ТВС могут быть выбраны бумаги, отличные от заказываемых в скрипте), то заказ всех сделок по большому числу бумаг длится гораздо дольше. При этом возрастает вероятность краха терминала во время заказа.
Надо делать так, как надо. А как не надо - делать не надо.
Данная ошибка была исправлена в версии 7.0.0 терминала QUIK. Данная версия терминала была выслана всем брокерам, использующим систему QUIK вчера, 07.10.2015, в установленном порядке передачи обновлений. Рекомендуем Вам дождаться обновления версии терминала у Вашего брокера и обновить Ваш терминал.
Данная ошибка была исправлена в версии 7.0.0 терминала QUIK. Данная версия терминала была выслана всем брокерам, использующим систему QUIK вчера, 07.10.2015, в установленном порядке передачи обновлений. Рекомендуем Вам дождаться обновления версии терминала у Вашего брокера и обновить Ваш терминал.
Старатель пишет: Alex Dronov , спасибо за ваш отзыв.
Но речь только об устранении проблемы с падением терминала, описанной в первом сообщении этой темы. Другие проблемы, как я понял, ещё не решены.
А вы уже на 7-ой версии? Там тоже нельзя без открытых ТВС или чарта подписаться на тики? и также после CreateDataSource() сбрасываются настройки заказанных данных?
судя по срокам и качеству ваших работ, но видимо из лучших намерений, вы не рассматривали вариант кроссплатформенного скриптогвого API, н-р, питонового?
те чтобы те, кто сейчас мучаются с луа, но не являются профессиональными программерами могли работать с вашими серверами минуя терминал. по фактическим таймингам терминала на задачах это выглядит вполнее сообразным.
Alex Dronov пишет: Там тоже нельзя без открытых ТВС или чарта подписаться на тики? и также после CreateDataSource() сбрасываются настройки заказанных данных?
Да, всё по-прежнему.
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus пишет: удивляюсь, однако сколько в квике ошибок... и как в такой системе только торговать... )))))))))
p.s. ладно хоть она бесплатна для рядовых пользователей, а то бы эту компанию просто засудили ))
пробежавшись по форуму можно сделать вывод: они, АРКА, делают таксебе продукт исключительно на таксебе ОС для таксебе пользователей.
с претензиями на качество и оптимальность тут очевидно делать нечего. это территория лоха.
Как говорит Козьма Прудков "Бди в корень" Когда что-то делается для раздачи как бесплатное приложение, то не стоит ожидать чуда. Но замечу, что, для российского рынка, КВИК лучше всех живых решений. ---------------------------------------------------------------- Ну так уж в России заведено, чтобы не делали, но лучше, чем автомат Калашникова, не получается.
sam063rus пишет: удивляюсь, однако сколько в квике ошибок... и как в такой системе только торговать... )))))))))
p.s. ладно хоть она бесплатна для рядовых пользователей, а то бы эту компанию просто засудили ))
пробежавшись по форуму можно сделать вывод: они, АРКА, делают таксебе продукт исключительно на таксебе ОС для таксебе пользователей.
с претензиями на качество и оптимальность тут очевидно делать нечего. это территория лоха.
Как говорит Козьма Прудков "Бди в корень" Когда что-то делается для раздачи как бесплатное приложение, то не стоит ожидать чуда. Но замечу, что, для российского рынка, КВИК лучше всех живых решений. ---------------------------------------------------------------- Ну так уж в России заведено, чтобы не делали, но лучше, чем автомат Калашникова, не получается.
я и не говорил, что знаю что-то хорошее про торговые терминалы в РФ не только квик огорчает, просто столь популярный фронтенд так слабо сопровождается - это чуть выше понимания
Alex Dronov пишет: Там тоже нельзя без открытых ТВС или чарта подписаться на тики? и также после CreateDataSource() сбрасываются настройки заказанных данных?
Да, всё по-прежнему.
Вы не подскажите в чем преимущество qlua относительно метода экспортировать тики qpile и потом работать с .tri/.tro любым языком? это замерялось как быстрее или зачем все эти мучения с виртуальной машиной? только этот вопрос остался. спасибо.
Alex Dronov пишет: Там тоже нельзя без открытых ТВС или чарта подписаться на тики?
нет, но и в "два раза ку - желтые штаны"-Луа тоже уже скоро год как не получается я и грю, может скриптовый АПИ таки развивать? тем более, что работающие в потоке терминала колбэки не добавляют гибкости и собственно вынуждают всё равно отдельно парсить
те что-то мая не догадывается что всё это за такое странное понаделано тут да к тому же еще и не работает толком :)
Старатель пишет: В QPILE же вообще нельзя подписаться на тики, в Lua - можно (соблюдая некоторые правила). Или я ошибаюсь? (Давно не писал на QPILE - то ещё мучение)
при открытой твс купайл отлично парсит тики, причем я это делал лет пять-шесть назад где-то
Alex Dronov пишет: Вы не подскажите в чем преимущество qlua относительно метода экспортировать тики qpile и потом работать с .tri/.tro любым языком? это замерялось как быстрее или зачем все эти мучения с виртуальной машиной? только этот вопрос остался. спасибо.
примерно одно и тоже, но чем сложнее алгоритм, чем больше разница.
Alex Dronov пишет: Вы не подскажите в чем преимущество qlua относительно метода экспортировать тики qpile и потом работать с .tri/.tro любым языком? это замерялось как быстрее или зачем все эти мучения с виртуальной машиной? только этот вопрос остался. спасибо.
примерно одно и тоже, но чем сложнее алгоритм, чем больше разница.
да? а с какой минимальной частотой нынче квик умеет заглядывать в .tri\.tro?
Alex Dronov пишет: Вы не подскажите в чем преимущество qlua относительно метода экспортировать тики qpile и потом работать с .tri/.tro любым языком? это замерялось как быстрее или зачем все эти мучения с виртуальной машиной? только этот вопрос остался. спасибо.
примерно одно и тоже, но чем сложнее алгоритм, чем больше разница.
да? а с какой минимальной частотой нынче квик умеет заглядывать в .tri\.tro?
Проблема, описанная в этой ветке, так за год и не решена.
Версия 7.0.4.10. В скрипте производится заказ всех сделок: CreateDataSource(..., ..., INTERVAL_TICK) SetUpdateCallback(...) Подписка выполняется только в скрипте, таблицы всех сделок в терминале не открываются.
Данные начинают поступать, callback-функция вызывается. При последующих перезапусках скрипта поведение также корректно.
Вывод: ошибка проявляется только при первом запуске скрипта и только при установленном до запуска соединении с сервером. Воспроизводится стабильно. Также установлено, что очистка данных при запуске (info.exe -clear) на описанное поведение не влияет.
Проблема, описанная в этой ветке, так за год и не решена.
Версия 7.0.4.10. В скрипте производится заказ всех сделок: CreateDataSource(..., ..., INTERVAL_TICK) SetUpdateCallback(...) Подписка выполняется только в скрипте, таблицы всех сделок в терминале не открываются.
Данные начинают поступать, callback-функция вызывается. При последующих перезапусках скрипта поведение также корректно.
Вывод: ошибка проявляется только при первом запуске скрипта и только при установленном до запуска соединении с сервером. Воспроизводится стабильно. Также установлено, что очистка данных при запуске (info.exe -clear) на описанное поведение не влияет.
Здравствуйте!
Ваше обращение получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Проблема, описанная в этой ветке, так за год и не решена.
Версия 7.0.4.10. В скрипте производится заказ всех сделок: CreateDataSource(..., ..., INTERVAL_TICK) SetUpdateCallback(...) Подписка выполняется только в скрипте, таблицы всех сделок в терминале не открываются.
Данные начинают поступать, callback-функция вызывается. При последующих перезапусках скрипта поведение также корректно.
Вывод: ошибка проявляется только при первом запуске скрипта и только при установленном до запуска соединении с сервером. Воспроизводится стабильно. Также установлено, что очистка данных при запуске (info.exe -clear) на описанное поведение не влияет.
Добрый день.
Ошибка будет исправлена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.
Проблема, описанная в этой ветке, так за год и не решена.
Версия 7.0.4.10. В скрипте производится заказ всех сделок: CreateDataSource(..., ..., INTERVAL_TICK) SetUpdateCallback(...) Подписка выполняется только в скрипте, таблицы всех сделок в терминале не открываются.
Данные начинают поступать, callback-функция вызывается. При последующих перезапусках скрипта поведение также корректно.
Вывод: ошибка проявляется только при первом запуске скрипта и только при установленном до запуска соединении с сервером. Воспроизводится стабильно. Также установлено, что очистка данных при запуске (info.exe -clear) на описанное поведение не влияет.
Добрый день.
Ошибка будет исправлена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.
Незаметно прошел еще год. Версия 7.4.0.79. Реально ли дождаться исправления ошибки?
Проблема, описанная в этой ветке, так за год и не решена.
Версия 7.0.4.10. В скрипте производится заказ всех сделок: CreateDataSource(..., ..., INTERVAL_TICK) SetUpdateCallback(...) Подписка выполняется только в скрипте, таблицы всех сделок в терминале не открываются.
Данные начинают поступать, callback-функция вызывается. При последующих перезапусках скрипта поведение также корректно.
Вывод: ошибка проявляется только при первом запуске скрипта и только при установленном до запуска соединении с сервером. Воспроизводится стабильно. Также установлено, что очистка данных при запуске (info.exe -clear) на описанное поведение не влияет.
Добрый день.
Ошибка будет исправлена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.
Незаметно прошел еще год. Версия 7.4.0.79. Реально ли дождаться исправления ошибки?