Новый коннектор к Quik
Atom Ответить
09.07.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 Ответов
< 1 2 3 4 5  > >>
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.07.2014
Ответить


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


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


Добавил в доку.
Автор топика
Спасибо:

vsnoopy83

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


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

esper

Фотография
Программист
Дата: 15.07.2014
Ответить


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

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

vsnoopy83

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


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

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


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

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

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

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

esper

Фотография
Программист
Дата: 16.07.2014
Ответить


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

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

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

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

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

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

vsnoopy83

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


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

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

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

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

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

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


Спасибо!
Спасибо:

longtrades

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


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

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

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

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

esper

Фотография
Программист
Дата: 28.07.2014
Ответить


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

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

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

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

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

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

Спасибо:

longtrades

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


esper Перейти

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


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

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

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

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

esper

Фотография
Программист
Дата: 28.07.2014
Ответить


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

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

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

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

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

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

longtrades

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


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

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

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

Спасибо:

Andrii

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


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

esper

Фотография
Программист
Дата: 21.08.2014
Ответить


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

Andrii

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


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

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

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

Спасибо:

esper

Фотография
Программист
Дата: 22.08.2014
Ответить


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

Andrii

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


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

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

Спасибо:

Axell

Фотография
Курсы
Дата: 29.08.2014
Ответить


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

esper

Фотография
Программист
Дата: 29.08.2014
Ответить


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

Axell

Фотография
Курсы
Дата: 29.08.2014
Ответить


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

esper

Фотография
Программист
Дата: 29.08.2014
Ответить


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

Axell

Фотография
Курсы
Дата: 29.08.2014
Ответить


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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.08.2014
Ответить


Логи нужны не LUA, а робота. В частности QuikTrader в режиме Debug
Автор топика
Спасибо:

Axell

Фотография
Курсы
Дата: 01.09.2014
Ответить


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.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.09.2014
Ответить


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

Axell

Фотография
Курсы
Дата: 01.09.2014
Ответить


Михаил Сухов Перейти
Посмотрите еще лог 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=()
Спасибо:
< 1 2 3 4 5  > >>

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

loading
clippy