Enfernuz/quik-lua-rpc

Множественные ошибки при подключении к брокеру

Closed this issue · 11 comments

При подключении к брокеру иногда сыплются множественные ошибки ..._QUIK\lua\quik-lua-rpc/impl\event_data_converter.lua:18: attempt to index global 'alltrade' (a nil value).

Так же при исполнении заявки C:\Open_Broker_QUIK\lua\quik-lua-rpc/utils\utils.lua:189: attempt to call method 'len' (a nil value)

Первое пофиксил, можно скачать из ветки master.
Насчёт второго: видимо, где-то в конверсиях cp1251 в utf-8 затесалась передача табличного параметра. Будет легче определить, если Вы уточните версию своего терминала -- я посмотрю документацию к той версии и проверю параметры, которые в коде принимаются за строки.

Терминал 7.27.2.1 от Открытия.

image

Благодарю за оперативный фикс!

Пофиксил некорректное преобразование параметра order.withdraw_datetime в обработке события OnOrder. Возможно, в этом дело было. Проверьте, пожалуйста.

Сейчас ошибок нет, все ок.
Скажите, это нормально, что Quik при включенном скрипте съедает практически весь свободной CPU?

Надо смотреть. Если только RPC-endpoint открыт, то не должен сильно жрать, т.к. там вроде блокирующий поллинг (посмотрю ещё, уже не помню). А вот если есть подписка на коллбэки терминала, то увеличенная нагрузка ожидаема, так как процессору надо постоянно обрабатывать данные.
Если не сложно, сбросьте скрины какие-нибудь "до" и "после". Другие скрипты ведь при этом не работают?

Подписка на коллбеки включена. Quik запущен на виртуальном сервере, кроме него там ничего нет. Других скриптов в Quik не установлено. Вот скрины до и после:

before

after

А если деактивировать PUB-endpoint, картина меняется?

Да, если деактивировать нагрузка сразу пропадает. При чем, если оставить его включенным, но закрыть все таблицы, загрузка все все равно присутствует.

Моё предположение такое, что при наличии активной PUB-точки терминалу приходится вызывать все коллбэки ("OnTrade", "OnFirm", "OnQuote" и прочие), даже если подписчиков (SUB-сокетов) именно на эти эвенты нет.
Можно попытаться решить проблему таким образом, что определять список публикуемых эвентов заранее в json-конфиге для PUB-точки -- таким образом, в терминале не будут зарегистрированы те коллбэки, которые заранее не интересны. Посмотрю.

Проблема с чрезмерным использованием CPU при подключении PUB-точки решена в #51.