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

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


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

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

Tags:


Thanks:


< 1 2 3  >
Mikhail Sukhov

Avatar
Date: 1/14/2015
Reply


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

RomSunZ

Avatar
Date: 1/14/2015
Reply


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

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

Quote:

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
Thanks:

Mikhail Sukhov

Avatar
Date: 1/14/2015
Reply


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


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

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

RomSunZ

Avatar
Date: 1/14/2015
Reply


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

Mikhail Sukhov

Avatar
Date: 1/14/2015
Reply


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


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

RomSunZ

Avatar
Date: 1/15/2015
Reply


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


Quote:

|#=qzzwyV9am9xL8xDgkxXU0XQ==|FixServer started.
Thanks:

Mikhail Sukhov

Avatar
Date: 1/15/2015
Reply


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

RomSunZ

Avatar
Date: 1/15/2015
Reply


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

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

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


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

esper

Avatar
Date: 1/15/2015
Reply


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

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

b5ed1-clip-70kb.png 62 KB (440)
Thanks:

Mikhail Sukhov

Avatar
Date: 1/15/2015
Reply


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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy