Столкнулся еще с такой проблемой: при включении LUA скрипта и подключении робота начинает дико тормозить работа с заявками в квике, не важно как их выставлять, хоть руками через стакан квика, хоть из робота - задержка вырастает до 2-3 секунд с момента приказа до момента изменения заявки в стакане квик (выставить, снять, переставить - не важно). Версия АПИ - 4.2.43. Простая перезагрузка Квик при этом не помогает. Приходится отключать ЛУА-скрипт и перезагружать квик - после этого скорость работы с заявками восстанавливается. Сначала написал в техподдержку Цериха, но несколькими тестами выяснил, что проблема именно в ЛУА. Смена портов не помогает... В чем может быть проблема и в какую сторону копать?
P.S. Для повторения бага достаточно в примере Quik SampleSMA изменить метод подключения с DDE на LUA, запустить робота и попробовать выставить заявку вручную в квике в стакане.
Comments (28)
Login or Create account, Log in or register to leave a comment
У Lua дебаг логи включены?
нет. Кстати проблему легко воспроизвести даже если запустить пример Sample в режиме LUA и в ручную попробовать выставить заявку.
P.S. И еще очень странная проблема. Если запущен LUA при подключении к серверу Цериха 80.249.134.243, то ЛУА блокирует поступление всех сделок (не обновляется таблица "Все сделки"), со второго сервера сделки при этом поступают. Пробовал на двух разных компах.
Проверил выставление заявок на Quik Junior 6.16.0.42, визуально разницы не вижу, что при работающем скрипте, что при остановленном (после перезапуска терминала, как написано в первом сообщении).
При выводе информации в лог и выставлении заявок из Sample, среднее время между отправкой приказа и получением ответа около 1с (800-900 мсек).
Методика измерения времени на глаз как-то не очень показательна, нужны более точные методы измерения. Необходимо смотреть данные по логу, что по выставлению заявок, что по получению всех сделок.
Так и есть, от секунды до нескольких секунд. Попробуйте при запущенном роботе выставить заявку вручную. Задержку получите такую-же. Потом отключите ЛУА и перезапустите квик и попробуйте выставить вручную заявку. Без луа такой дикой задержки нет - заявки выставляются и снимаются с задержками соизмеримыми с пингом до сервера квик.
P.S. У меня сервер квика пингуется 50-80 мс.
Сегодня закоментировал в скрипте пароль и логин, вроде опять стало работать без задержек. Буду смотреть дальше...
Проблема осталась. Прикладываю логи стратегии SampleSMA и лог ЛУА. В логе SMA с 14:07 до 14:09 торговля через ЛУА, после через ДДЕ. На самые первые ордера можно внимания не обращать - они выставляются пока еще подгружается история, а вот со вторых можно смотреть задержки. ЛУА- 6 сек, ДДЕ-0,3сек.
По какой-то причине не смог прикрепить архив одним файлом, пришлось его разбить. part1.zip переименовать в 1.z01, part2.zip в 1.z02 и разархивировать.
По проблеме что-нибудь делается? Выяснил экспериментально: такие задержки возникают по мере роста объема файла info.log. При его удалении задержка при работе с ордерами пропадает (у меня последний раз размер этого файла был 70 мб и тормоза уже были).
P.S. удаление можно сказать не помогает... PPS. Еще наблюдение, простой запуск скрипта (без запуска робота) увеличивает загрузку процессора процессом info.exe с 3% до 11%.
Насколько я понимаю, это файл Квика. Может быть стоит обратиться с проблемой в Арку? В лог Квика мы ничего не пишем (если вообще есть такая возможность). Поэтому про багу (если она вообще из-за этого) стоит написать создателям Квика. Пускай анализируют лог. Может даже у вас терминал настроен неправильно, и в лог пишется все, что нужно и не нужно.
Попробую переустановить квик с нуля, хотя проблема присутствует и на боевом и на тестовом квике.
Попробовал установить квик по-новой - не помогло. Взял в аренду выделенный сервер VPS, установил на чистую систему квик- та же хрень, как только запускаю скрипт LUA, то сразу появляются дикие задержки плюс растет нагрузка на процессор, выключаю LUA - задержки пропадают. Пожалуйста, проверьте библиотеку, явно ведь в ней какой-то косяк. Тестировалось с примером SampleSMA (логи выше). Для примера скриншот из последнего. Был запущен пример Sample из пакета Quik в режиме LUA, обратите на время: в терминале Quik время сервера - 21:18:03, время последней сделки в таблице всех сделок - 21:18:02, а в окне Инструменты примера Sample время последней сделки - 21:18:06! ЛУА тормозит терминал на 3 секунды! На втором скриншоте подключение по DDE, там такого косяка нет - сервер 21:28:32, последняя сделка совпадает с таблицей всех сделок - 21:28:27...
Дело явно не в терминале, а в библиотеке...
Я правильно понял, что нагрузка появляется сразу после запуска скрипта? Тоесть когда нет никаких подключений еще.
Именно так. Я сейчас еще проверяю, не является ли это следствием работы робота с базой mysql...
P.S. в логе LUA есть ошибка: OnQuoteF unable to make cast может проблема в этом...
К сожалению в последние годы русский не всегда однозначно воспринимается.
Задам еще раз вопрос. Нагрузка начинается сразу же после загрузки скрипта? Тоесть на компьютере ничего больше не запущено, кроме Квик?
Да, нагрузка на процессор от процесса info.exe начинает расти сразу после запуска скрипта, кроме квика больше ничего не запущено.
В логах QuikLua при этом что-то пишется?
Если это единственная строчка лога, значит скрипт неактивен, тоесть нет внешних подключений. В таком варианте нагрузка не воспроизводится. Что-то у вас стоит такое, что не дает нормально работать Квику. Вам или к Арке или попробовать другой комп.
Пробовал запускать на VPS (виртуальном сервере), там стояла только чиста windows 2008r2 и все, пробовал на 2х компьютерах. Проблема воспроизводится и там тоже. Пробовал тестовые аккаунты от цериха и втб24, проблема и там и там.
Сравните выставление заявок с работой по DDE и получите 300мс. Разница даже у вас воспроизведется. Проблема скорее всего в АПИ.
Вы пишите, что при включенном скрипте заявки ставятся медленней, я ответил, что визуально ни до запуска скрипта, ни после, никакой разницы не видно, причем здесь DDE абсолютно не ясно.
Сейчас специально проверил загрузку процессора на последней версии квика от арки на их демо логине, никакой сверхъестественной загрузки на скрине не видно (при этом есть один подключенный клиент на который приходят тики и стаканы по одному инструменту).
Вы сейчас о какой проблеме пишите? Выставлении заявок или нагрузке на проц? Чем больше вы вносите путан цы тем меньше шансов решить проблему
Это взаимосвязанные проблемы. При включении LUA возрастает нагрузка на процессор от квика, терминал начинает тормозить и появляются задержки при работе через терминал (выставление, изменение и отмена заявок хоть в ручную, хоть через робота). Выключение LUA (т.е. работа через ДДЕ) приводят к нормализации работы терминала и задержки падают до нормальных, что я продемонстрировал в логах в посте №7.
В общем путем долгих мытарств можно с большой долей вероятности сказать, что проблема такого поведения в брандмауэре виндовс (при том, что у меня он был отключен). Мне помогло (по крайней мере на сегодня) следующее: открываем панель управления->брандмауэр->Дополнительные параметры. Там выбираем закладку "Правила для входящих подключений" и нажимаем "Создать правило". Выбираем тип правила="Для программы" и нажимаем "Далее", программа=выбираем info.exe из папки, в которую установлен квик, жмем "Далее", действие="Разрешить подключение", опять "Далее", профиль - я оставил все три галки на доменный, частный и публичный, на следующей вкладке задаем имя и жмем "Готово". После этого открываем свойства созданного правила, идем на вкладку "Дополнительно" и обход узлов выбираем "Разрешить обход узлов". Сохраняемся. Далее в дополнительных параметра брандмауэра выбираем закладку "Правила для исходящих подключений" и создаем правило там тоже. Я изменил только на закладке "действие" на "разрешить подключение", а все остальное оставил по дефолту. После этого на одном компьютере квик сразу стал работать нормально, а на другом, где у меня установлен еще и антивирус пришлось через службы полностью остановить службу брандмауэра, после чего квик тоже стал работать нормально.
Надеюсь поможет и дальше.
В общем и целом решение помогло но не до конца. Я могу подключать к квику робота без лагов, но периодически они все равно возникают. Лечится только перезагрузкой квик с отключенным скриптом ЛУА (иногда нужно перезагрузиться несколько раз). Из наблюдений по поводу увеличения нагрузки на процессор. Ощущения такие, что в info.exe начинается постоянная обработка исключений, что приводит к увеличению нагрузки на процессор с 0-1% до 10-13%, что в свою очередь приводит к задержкам при работе с ордерами в терминале. Я подключил квик к дебаггеру visual studio, и полчил такие логи.
При включении ЛУА
При подключении робота
Попробуйте запустить профайлер. Например dotTrace
Из наблюдений. В начале торговой сессии проблем практически никогда нет. Но если приходится перезагружать квик ближе к вечеру - практически всегда возникает эта проблема. Файлы: info_exe.zip - запущен луа-скрипт без подключения к нему робота, вариант профайлера Sampling, загрузка процессора 9-11% info_exe1.zip - запущен луа-скрипт без подключения к нему робота, вариант профайлера Tracing, загрузка процессора 9-11% info_exe_off.zip - луа-скрипт остановлен (сначала получены предыдущие отчеты, потом скрипт остановил, и снял этот отчет), вариант профайлера Tracing, загрузка процессора 2-3% В нормальной ситуации даже с включенным роботом info.exe нагружает процессор на 0-1%.
На сайт загрузить отчеты опять не получается, ссылка на файлообменник: dropmefiles.com/18zdQ
Профайлинг ничего не показал, что не удивительно. Вы не то и не так профилировали. Профилировать нужно когда нет задержки и когда она есть. Смысла в профилировании когда скрипт включен и нет особого нет.
Михаил, я попробую найти VPS сервер и дать Вам доступ к нему, чтобы Вы сами могли посмотреть и снять логи какие Вам надо.
Спасибо, но сильно занят. И так много уже времени потратили на несуществующую проблему.
Собирайте логи, доказываймне мне, что проблема есть и она не только у вас.