Важно: При включении ЛУА падает скорость работы КВИК с заявками

Важно: При включении ЛУА падает скорость работы КВИК с заявками
Atom
24.12.2014
RomSunZ


Столкнулся еще с такой проблемой: при включении LUA скрипта и подключении робота начинает дико тормозить работа с заявками в квике, не важно как их выставлять, хоть руками через стакан квика, хоть из робота - задержка вырастает до 2-3 секунд с момента приказа до момента изменения заявки в стакане квик (выставить, снять, переставить - не важно). Версия АПИ - 4.2.43. Простая перезагрузка Квик при этом не помогает. Приходится отключать ЛУА-скрипт и перезагружать квик - после этого скорость работы с заявками восстанавливается.
Сначала написал в техподдержку Цериха, но несколькими тестами выяснил, что проблема именно в ЛУА. Смена портов не помогает...
В чем может быть проблема и в какую сторону копать?

P.S. Для повторения бага достаточно в примере Quik SampleSMA изменить метод подключения с DDE на LUA, запустить робота и попробовать выставить заявку вручную в квике в стакане.

Теги:


Спасибо:


< 1 2 3  >
Mikhail Sukhov

Фотография
Дата: 14.01.2015
Ответить


Я правильно понял, что нагрузка появляется сразу после запуска скрипта? Тоесть когда нет никаких подключений еще.
Спасибо:

RomSunZ

Фотография
Дата: 14.01.2015
Ответить


Именно так.
Я сейчас еще проверяю, не является ли это следствием работы робота с базой mysql...

P.S. в логе LUA есть ошибка: OnQuoteF unable to make cast
может проблема в этом...

Цитата:

2015/01/15 00:10:52.294|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:54.024|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:54.027|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:55.756|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:57.651|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:57.654|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:59.464|Error |None |OnQuoteF unable to make cast
2015/01/15 00:10:59.468|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:05.072|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:06.923|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:06.925|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:10.741|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:10.747|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:12.586|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:14.371|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:20.199|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:20.202|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:22.200| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: TestRequest
2015/01/15 00:11:23.360|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:23.883| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: TestRequest
2015/01/15 00:11:32.699|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:34.594|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:36.509|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:38.556|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:38.559|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:40.396|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:42.393|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:42.397|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:46.291|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:51.941|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:53.872|Error |None |OnQuoteF unable to make cast
2015/01/15 00:11:55.776|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:01.675|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:03.462|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:05.334|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:09.285|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:09.290|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:12.793|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:22.206| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: TestRequest
2015/01/15 00:12:23.895| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: TestRequest
2015/01/15 00:12:27.908|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:29.701|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:31.653|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:31.656|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:33.435|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:35.366|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:35.370|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:37.212|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:39.851| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: OrderCancelRequest
2015/01/15 00:12:39.854| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: OrderCancelRequest
2015/01/15 00:12:39.857| |None |SendTransaction: t = {}
t["CLASSCODE"] = "SPBFUT"
t["SECCODE"] = "SPH5"
t["ORDER_KEY"] = "2569671479"
t["ACTION"] = "KILL_ORDER"
t["TRANS_ID"] = "559314"
return sendTransaction(t)

2015/01/15 00:12:39.857| |None |SendTransaction: t = {}
t["CLASSCODE"] = "SPBFUT"
t["SECCODE"] = "SPH5"
t["ORDER_KEY"] = "2569671682"
t["ACTION"] = "KILL_ORDER"
t["TRANS_ID"] = "559315"
return sendTransaction(t)

2015/01/15 00:12:39.882| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: MarketDataRequest
2015/01/15 00:12:39.882| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: MarketDataRequest
2015/01/15 00:12:39.882| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: MarketDataRequest
2015/01/15 00:12:39.883| |None |Lookup (Level1Change, 0, S#:SPH5@SPBFUT, Native:,Type:, )
2015/01/15 00:12:39.883| |None |Lookup (Level1Change, 0, S#:SRH5@SPBFUT, Native:,Type:, )
2015/01/15 00:12:39.884| |None |Lookup (QuoteChange, 0, S#:SRH5@SPBFUT, Native:,Type:, )
2015/01/15 00:12:39.884| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: Logout
2015/01/15 00:12:39.884| |#=qzzwyV9am9xL8xDgkxXU0XQ==|Отключение quik сессии MD.
2015/01/15 00:12:39.884|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Клиент quik. Ошибка 'System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.Sockets.NetworkStream".
в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
в #=qGWW8w2lZfBYLfMlid177BtTUZb8msZrU0lpCWsrGcq4=.#=qj_S_XxLxC6l9gdyBBws_DC0JfJgmlX5G9xDBCsw0Dqc=.#=q0EzXcZWJwkN7X7GFEGKANQ==(IAsyncResult #=qpEcfU8GXaUmwkClBJFXSMQ==)'.
2015/01/15 00:12:39.885|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Клиент quik (ошибок 1/1). Ошибка 'System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.Sockets.NetworkStream".
в System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
в #=qGWW8w2lZfBYLfMlid177BtTUZb8msZrU0lpCWsrGcq4=.#=qUEcprFe5MOx7Njw1g$B9nHk58PbcKjUL2Y9_$8racDU=(Stream #=qWMPGswinC9yf$BK$cEiX1w==, Encoding #=qWwCAcnRWZ3vu$ZRs6CdC7g==, String #=qhjfxg$un4_kCzpbcFqNFpQ==)
в StockSharp.Fix.FixSession.#=qx74$7Mpjt8simooVqY_5ig==(Message #=qyH38GhRJ8rSDIf6Gd3uqwA==, ILogReceiver #=qAX1zN2meoFhaHq3jDXrBLg==, Boolean #=qTzz5MqleR3l7flCVEEWRJA==)
в StockSharp.Fix.FixServer.#=qRY8U01ZLiPFGQR4TNC24B9UZh32LYRC1w$9hpNHdh7Y=.#=q1jRdvf2mqGGM4BcP5ZfbncJa7fmiHZXVNPDjSOzXg_U=()'.
2015/01/15 00:12:39.887|Error |None |Unsubscribe_Level_II_Quotes error.
2015/01/15 00:12:39.887|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Клиент quik был ранее отключен.
2015/01/15 00:12:39.888|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Клиент quik был ранее отключен.
2015/01/15 00:12:39.888| |#=qzzwyV9am9xL8xDgkxXU0XQ==|From client quik: Logout
2015/01/15 00:12:39.888| |#=qzzwyV9am9xL8xDgkxXU0XQ==|Отключение quik сессии TS.
2015/01/15 00:12:39.888|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Клиент quik. Ошибка 'System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен.
Имя объекта: "System.Net.Sockets.NetworkStream".
в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
в #=qGWW8w2lZfBYLfMlid177BtTUZb8msZrU0lpCWsrGcq4=.#=qj_S_XxLxC6l9gdyBBws_DC0JfJgmlX5G9xDBCsw0Dqc=.#=q0EzXcZWJwkN7X7GFEGKANQ==(IAsyncResult #=qpEcfU8GXaUmwkClBJFXSMQ==)'.
2015/01/15 00:12:39.888|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Для клиента quik не была ранее создана сессия.
2015/01/15 00:12:39.888|Error |#=qzzwyV9am9xL8xDgkxXU0XQ==|Для клиента quik не была ранее создана сессия.
2015/01/15 00:12:41.141|Error |None |OnQuoteF unable to make cast
2015/01/15 00:12:44.732|Error |None |OnQuoteF unable to make cast
Спасибо:

Mikhail Sukhov

Фотография
Дата: 14.01.2015
Ответить


RomSunZ
Именно так.
Я сейчас еще проверяю, не является ли это следствием работы робота с базой mysql...


К сожалению в последние годы русский не всегда однозначно воспринимается.

Задам еще раз вопрос. Нагрузка начинается сразу же после загрузки скрипта? Тоесть на компьютере ничего больше не запущено, кроме Квик?
Спасибо:

RomSunZ

Фотография
Дата: 14.01.2015
Ответить


Да, нагрузка на процессор от процесса info.exe начинает расти сразу после запуска скрипта, кроме квика больше ничего не запущено.
Спасибо:

Mikhail Sukhov

Фотография
Дата: 14.01.2015
Ответить


RomSunZ
Да, нагрузка на процессор от процесса info.exe начинает расти сразу после запуска скрипта, кроме квика больше ничего не запущено.


В логах QuikLua при этом что-то пишется?
Спасибо:

RomSunZ

Фотография
Дата: 15.01.2015
Ответить


Михаил Сухов
В логах QuikLua при этом что-то пишется?


Цитата:

|#=qzzwyV9am9xL8xDgkxXU0XQ==|FixServer started.
Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.01.2015
Ответить


Если это единственная строчка лога, значит скрипт неактивен, тоесть нет внешних подключений. В таком варианте нагрузка не воспроизводится. Что-то у вас стоит такое, что не дает нормально работать Квику. Вам или к Арке или попробовать другой комп.
Спасибо:

RomSunZ

Фотография
Дата: 15.01.2015
Ответить


Пробовал запускать на VPS (виртуальном сервере), там стояла только чиста windows 2008r2 и все, пробовал на 2х компьютерах. Проблема воспроизводится и там тоже.
Пробовал тестовые аккаунты от цериха и втб24, проблема и там и там.

esper
Проверил выставление заявок на Quik Junior 6.16.0.42, визуально разницы не вижу, что при работающем скрипте, что при остановленном (после перезапуска терминала, как написано в первом сообщении).

При выводе информации в лог и выставлении заявок из Sample, среднее время между отправкой приказа и получением ответа около 1с (800-900 мсек).


Сравните выставление заявок с работой по DDE и получите 300мс. Разница даже у вас воспроизведется. Проблема скорее всего в АПИ.
Спасибо:

esper

Фотография
Дата: 15.01.2015
Ответить


1. Вы пишите, что при включенном скрипте заявки ставятся медленней, я ответил, что визуально ни до запуска скрипта, ни после, никакой разницы не видно, причем здесь DDE абсолютно не ясно.

2. Сейчас специально проверил загрузку процессора на последней версии квика от арки на их демо логине, никакой сверхъестественной загрузки на скрине не видно (при этом есть один подключенный клиент на который приходят тики и стаканы по одному инструменту).

b5ed1-clip-70kb.png 62 KB (433)
Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.01.2015
Ответить


Вы сейчас о какой проблеме пишите? Выставлении заявок или нагрузке на проц? Чем больше вы вносите путан цы тем меньше шансов решить проблему
Спасибо:
< 1 2 3  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy