Новый коннектор к Quik
Atom Reply
7/9/2014


Мы сделали новый коннектор к Quik. Доступен начиная с версии 4.2.4.0

Коннектор обраладет следующими преимуществами:

1. Быстрее скорость транспортировки данных.
2. Значительно упрощена настройка таблиц в Quik (все колонки по умолчанию, нужно просто открыть таблицы в терминале, без дополнительных каких-либо настроек).
3. Возможность подключаться удаленно к Quik.
4. Робот может быть скомпилирован под 64 бита.

Подробнее, о настроках и миграции.

Коннектор сделан с использование протокола FIX 4.4. Поэтому появилась новая возможность - подключение к Quik не из StockSharp программ. Если у вас есть код или готовая программа, использующая FIX, то вы можете попробовать подключиться к Quik терминалу через FIX протокол.

Давайте попробуем данный тип подключения, и отпишемся здесь о своих замечаниях. А к осени воздадим почет DDE+Trans2Quik как самой старой технологии, и первому коннектору в S#. И отправим на заслуженный покой.




162 Answers
< 1 2 3 4 5  > >>
Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 7/14/2014
Reply


vsnoopy83 Перейти
longtrades Перейти
Да , но это : "Тогда пробуем установить Visual C++ redistributable" в моем случае никак не помогает , ошибка та же.


Возможно у вас 64 разрядная система и вы установили redistributable именно для неё, тогда ошибка останется, надо ставить x86.


Добавил в доку.
Topic starter
Thanks:

vsnoopy83

Avatar
Date: 7/15/2014
Reply


Подскажите есть ли новости по поводу получения максимальной и минимальной возможной цены?
Thanks:

esper

Avatar
Programmer
Date: 7/15/2014
Reply


vsnoopy83 Перейти
Подскажите есть ли новости по поводу получения максимальной и минимальной возможной цены?

Будет фикс в следующей версии. Если надо очень срочно, то можно взять библиотеки из последней Гидры.
Thanks:

vsnoopy83

Avatar
Date: 7/16/2014
Reply


esper Перейти
vsnoopy83 Перейти
Подскажите есть ли новости по поводу получения максимальной и минимальной возможной цены?

Будет фикс в следующей версии. Если надо очень срочно, то можно взять библиотеки из последней Гидры.


Вроде все заработало, один вопрос: при перерегистрации заявок раньше по dde в окне сообщения об этом не сообщалось, теперь сообщается:

"Перестановка заявок завершена успешно. New Order1 ID: 2396988446, new Order2 ID: 0"

эти сообщения можно отключить? Из за них можно попустить что то важное, например время открытия вечерки или остановки торгов для расширения лимитов.

И кстати непонятно почему ID Order2 0.
Thanks:

esper

Avatar
Programmer
Date: 7/16/2014
Reply


vsnoopy83 Перейти
Вроде все заработало, один вопрос: при перерегистрации заявок раньше по dde в окне сообщения об этом не сообщалось, теперь сообщается:

"Перестановка заявок завершена успешно. New Order1 ID: 2396988446, new Order2 ID: 0"

эти сообщения можно отключить? Из за них можно попустить что то важное, например время открытия вечерки или остановки торгов для расширения лимитов.

Это вопрос скорее в поддержку квика.

vsnoopy83 Перейти
И кстати непонятно почему ID Order2 0.

Переставлялась только одна заявка, поэтому второй номер 0.
Thanks:

vsnoopy83

Avatar
Date: 7/16/2014
Reply


esper Перейти
vsnoopy83 Перейти
Вроде все заработало, один вопрос: при перерегистрации заявок раньше по dde в окне сообщения об этом не сообщалось, теперь сообщается:

"Перестановка заявок завершена успешно. New Order1 ID: 2396988446, new Order2 ID: 0"

эти сообщения можно отключить? Из за них можно попустить что то важное, например время открытия вечерки или остановки торгов для расширения лимитов.

Это вопрос скорее в поддержку квика.

vsnoopy83 Перейти
И кстати непонятно почему ID Order2 0.

Переставлялась только одна заявка, поэтому второй номер 0.


Спасибо!
Thanks:

longtrades

Avatar
Date: 7/27/2014
Reply


В новом коннектроре на Луа есть одна большая проблема: до того пока не произойдет обнвление того или инного поля оно остается пустым, я уже упоминал об этом на примере стакана: на стакан подписался , но стакана еще нет и пока стакан не изменится в коннекторе он таки будет пустым.
То же самое например с полями инструментов , например поля теор цены и волатильность опционов так и будут пустыми пока не произойдет событие в котором придет их обновление.

Думаю это неправильно , должно быть так:

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

Вот самое главное что разработчики пропустили в новом коннекторе .
Thanks:

esper

Avatar
Programmer
Date: 7/28/2014
Reply


longtrades Перейти
В новом коннектроре на Луа есть одна большая проблема: до того пока не произойдет обнвление того или инного поля оно остается пустым, я уже упоминал об этом на примере стакана: на стакан подписался , но стакана еще нет и пока стакан не изменится в коннекторе он таки будет пустым.
То же самое например с полями инструментов , например поля теор цены и волатильность опционов так и будут пустыми пока не произойдет событие в котором придет их обновление.

В процессе подписки на данные автоматически запрашивается текущее состояние. Если это стакан, то его срез, если Level1, то текущие данные, если тики, то вся история до текущего момента.

longtrades Перейти
Думаю это неправильно , должно быть так:

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

Именно так оно и работает. Откройте стакан на неликвидном инструменте и подпишитесь на него, стакан придет еще до изменения его в квике.

Еще раз, процесс подписки и получения данных асинхронный. Если по каким-то причинам для каких-то коннекторов сразу после вызова метода RegisterMarketDepth (не дожидаясь события изменения стакана), можно получить заполненный стакан, это не значит, что это правильный подход в использовании S# и он будет работать всегда и для всех коннекторов.

Thanks:

longtrades

Avatar
Date: 7/28/2014
Reply


esper Перейти

В процессе подписки на данные автоматически запрашивается текущее состояние. Если это стакан, то его срез, если Level1, то текущие данные, если тики, то вся история до текущего момента.


Действительно приходят свойства и стаканы, но почемуто очень и очень медленно и мучительно долго, через ДДЕ все приходит в моменте, а тут нужно минут 10 чтобы все пришло.

Еще заметил что новый коннектор никак не учитывает настройки получения данных прописанные в квике в Связь- Списки , и подгружает все инструменты , может потому он так и тормозит ?

Может стоит отключить автоматическую подписку на все инструменты ? пусть каждый подписывается только на те инструменты которые ему нужны.

Интересно, а как с таблицей всех сделок, он хоть учитывает подписку на эти данные или тоже грузит все подряд?
Thanks:

esper

Avatar
Programmer
Date: 7/28/2014
Reply


longtrades Перейти
Еще заметил что новый коннектор никак не учитывает настройки получения данных прописанные в квике в Связь- Списки , и подгружает все инструменты , может потому он так и тормозит ?

С этим вопросом лучше в поддержку квика.

longtrades Перейти
Может стоит отключить автоматическую подписку на все инструменты ? пусть каждый подписывается только на те инструменты которые ему нужны.

На данные подписываетесь вы сами, поэтому подписывайтесь только на те инструменты, которые вам нужны. Но список инструментов приходит весь, чтобы можно было подписаться на все, что необходимо.

longtrades Перейти
Интересно, а как с таблицей всех сделок, он хоть учитывает подписку на эти данные или тоже грузит все подряд?

Не знаю как сейчас это сделано в квике, а раньше он всегда получал все тики, но показывал только те инструменты, что выбраны в фильтре.
Thanks:

longtrades

Avatar
Date: 7/28/2014
Reply


Я и подписываюсь только на то что мне нужно . Вы уверены что коннектор не делает автоматом: connector.RegisterSecurity(sec) при получении ногого инструмента ?

Почему же такие тормоза ? Почему через ДДЕ все приходит намного быстрее ? По идее через Луа наоборот должно быть пошустрее.

Может проблема в самом скрипте луа то есть в длл что в него подгружается, ведь даже если я не подписался отсекать будет уже коннектор, может нужно что бы отсекал скрипт луа ? может все данные идут одним потоком в соннектор из луа?

Thanks:

Andrii

Avatar
Date: 8/21/2014
Reply


есть информация с какой версии квика будет работать корректно, а то есть брокеры с довольно старыми?
Thanks:

esper

Avatar
Programmer
Date: 8/21/2014
Reply


Давайте подойдем с другой стороны, у вас что-то не работает?
Thanks:

Andrii

Avatar
Date: 8/22/2014
Reply


esper Перейти
Давайте подойдем с другой стороны, у вас что-то не работает?

да, по порядку:
- настройки для квика info_lua.wnd, нельзя применить для старых версий квика.
- если брать старые настройки, info.wnd из сорса, которые используются при DDE, то получаем ошибку при верификации:
Ошибка верификации

мне бы настроить версию 6.5.2.11

Thanks:

esper

Avatar
Programmer
Date: 8/22/2014
Reply


Нет необходимости загружать именно этот файл настроек, все необходимые настройки описаны здесь.
Thanks:

Andrii

Avatar
Date: 8/22/2014
Reply


esper Перейти
Нет необходимости загружать именно этот файл настроек, все необходимые настройки описаны здесь.

да, это читал, только вот на скрине показываю как не находит таблицу которая уже открыта.

Thanks:

Axell

Avatar
Training
Date: 8/29/2014
Reply


При запуске Samples (S# 4.2.20, QUIK 6.14.0.12), через LUA, выскакивает ошибка "Операция является недоступной из-за текущего состояния объекта" http://gyazo.com/9167c69e6a43796ee40866289782da7b ,
в StockSharp.QuikLua ошибки нет. Что не так?
Thanks:

esper

Avatar
Programmer
Date: 8/29/2014
Reply


Скопируйте ошибку текстом.
Thanks:

Axell

Avatar
Training
Date: 8/29/2014
Reply


Error System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
в #=qlzAhmNJcRJj7yRqMy$HGIbaJ9VOJwEcYz4f_WwOTVNE=.#=qDgLWy14y870wz4tzTCEUQg==(Stream #=q0z4clprxecT1NtlVhkbsfQ==)
в StockSharp.Fix.FixReader.ReadNextTag()
в StockSharp.Fix.FixMessageAdapter.#=qacR_9DBjtFT9tmjFdlb977Xn632wOgT$bDM2ysPPVHA=()
Thanks:

esper

Avatar
Programmer
Date: 8/29/2014
Reply


Хорошо бы еще дебаг логи для QuikTrader-а увидеть.
Thanks:

Axell

Avatar
Training
Date: 8/29/2014
Reply


В StockSharp.QuikLua только: "2014/08/29 22:52:01.685| |FixServer |FixServer started." (LogLevel=2)

Пробовал подключиться через другого брокера (Quik 6.13.0.104), результат аналогичныйConfused
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 8/30/2014
Reply


Логи нужны не LUA, а робота. В частности QuikTrader в режиме Debug
Topic starter
Thanks:

Axell

Avatar
Training
Date: 9/1/2014
Reply


0001/01/01 00:00:00.000| |QuikTrader|Connect
2014/09/01 17:00:56.454|Debug |FIX |Sending to 80.249.134.243:15101: 8=FIX.4.49=10135=A34=149=*****52=20140901-13:00:56.44056=StockSharpTS98=0108=60141=Y553=*****554=********10=172
0001/01/01 00:00:00.000|Debug |QuikTrader|BP:Connect,T=2014.09.01 17:00:56.523,Error=Операция является недопустимой из-за текущего состояния объекта.
2014/09/01 17:00:56.523|Error |QuikTrader|System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
в #=qlzAhmNJcRJj7yRqMy$HGIbaJ9VOJwEcYz4f_WwOTVNE=.#=qDgLWy14y870wz4tzTCEUQg==(Stream #=q0z4clprxecT1NtlVhkbsfQ==)
в StockSharp.Fix.FixReader.ReadNextTag()
в StockSharp.Fix.FixMessageAdapter.#=qacR_9DBjtFT9tmjFdlb977Xn632wOgT$bDM2ysPPVHA=()
2014/09/01 17:00:56.523| |QuikTrader|Disconnect
2014/09/01 17:00:56.523|Warning|QuikTrader|Невозможно выполнить отключение, так как соединение находится в состоянии Failed.
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 9/1/2014
Reply


Посмотрите еще лог Lua. Есть ли там хоть какие-то признаки подключения. Судя по стрнной ошибке и что ее нет у других - у вас проблемы сетевого характера (фаервол, неправильный порт, адрес и т.д.), а не коннектора.
Topic starter
Thanks: Axell

Axell

Avatar
Training
Date: 9/1/2014
Reply


Михаил Сухов Перейти
Посмотрите еще лог Lua. Есть ли там хоть какие-то признаки подключения. Судя по стрнной ошибке и что ее нет у других - у вас проблемы сетевого характера (фаервол, неправильный порт, адрес и т.д.), а не коннектора.


Попробовал подключится через другого брокера, антивирусы/фаерволы отключил, порты и адреса проверил. После запуска Квика лог Lua:

2014/09/01 22:20:24.074| |FixServer |FixServer started.
2014/09/01 22:20:24.074|Debug |None |OnInit done
2014/09/01 22:20:24.075|Debug |None |Main
2014/09/01 22:21:06.545|Debug |None |OnParam
2014/09/01 22:21:06.555|Debug |Quik |Out. Level1Change,T=2014.09.01 22:21:06.558,Sec=S#:RU000A0JPZ35@EQOB, Native:,Type:,Changes=[PriceStep, 0,01]
2014/09/01 22:21:06.564|Debug |None |OnParam done
...
2014/09/01 22:21:07.729|Debug |None |OnDepoLimit
2014/09/01 22:21:07.729|Debug |Quik |Out. PortfolioChange,T=2014.09.01 22:21:07.729,P=139892,Changes=[DepoName, L01-00000F00]
2014/09/01 22:21:07.729|Debug |Quik |Out. Position,T=2014.09.01 22:21:07.730,Sec=S#:RU000A0GN9B5@, Native:,Type:Stock,P=139892
2014/09/01 22:21:07.730|Debug |Quik |Out. PositionChange,T=2014.09.01 22:21:07.730,Sec=S#:RU000A0GN9B5@, Native:,Type:Stock,P=139892,Changes=[BeginValue, 12],[CurrentValue, 12]
2014/09/01 22:21:07.730|Debug |None |OnDepoLimit done

как я понимаю информация по бумагам и позициям идёт. Когда запускаю стратегию, в логе Lua новых записей не появляется, а QuikTrader выдаёт новую ошибку:

0001/01/01 00:00:00.000| |QuikTrader|Connect
2014/09/01 22:23:29.541|Debug |FIX |Sending to 195.226.204.208:15300: 8=FIX.4.49=10235=A34=149=*****52=20140901-18:23:29.53056=StockSharpTS98=0108=60141=Y553=*****554=***10=183
0001/01/01 00:00:00.000|Debug |QuikTrader|BP:Connect,T=2014.09.01 22:23:29.560,Error=Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение.
2014/09/01 22:23:29.560|Error |QuikTrader|System.IO.IOException: Не удается прочитать данные из транспортного соединения: Удаленный хост принудительно разорвал существующее подключение. ---> System.Net.Sockets.SocketException: Удаленный хост принудительно разорвал существующее подключение
в System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
в System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- Конец трассировки внутреннего стека исключений ---
в System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
в System.IO.Stream.ReadByte()
в #=qlzAhmNJcRJj7yRqMy$HGIbaJ9VOJwEcYz4f_WwOTVNE=.#=qDgLWy14y870wz4tzTCEUQg==(Stream #=q0z4clprxecT1NtlVhkbsfQ==)
в StockSharp.Fix.FixReader.ReadNextTag()
в StockSharp.Fix.FixMessageAdapter.#=qacR_9DBjtFT9tmjFdlb977Xn632wOgT$bDM2ysPPVHA=()
Thanks:
< 1 2 3 4 5  > >>

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

loading
clippy