Мы сделали новый коннектор к Quik. Доступен начиная с версии 4.2.4.0
Коннектор обраладет следующими преимуществами:
- Быстрее скорость транспортировки данных.
- Значительно упрощена настройка таблиц в Quik (все колонки по умолчанию, нужно просто открыть таблицы в терминале, без дополнительных каких-либо настроек).
- Возможность подключаться удаленно к Quik.
- Робот может быть скомпилирован под 64 бита.
Подробнее, о настроках и миграции.
Коннектор сделан с использование протокола FIX 4.4. Поэтому появилась новая возможность - подключение к Quik не из StockSharp программ. Если у вас есть код или готовая программа, использующая FIX, то вы можете попробовать подключиться к Quik терминалу через FIX протокол.
Давайте попробуем данный тип подключения, и отпишемся здесь о своих замечаниях. А к осени воздадим почет DDE+Trans2Quik как самой старой технологии, и первому коннектору в S#. И отправим на заслуженный покой.
Comentários (163)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Скачал StockSharp_4.2.4_Sources, распаковал, добавляю скрипт StockSharp.QuikLua.lua в Quik и запускаю. Ошибка:
Этот файл есть по указанному пути? Может его разблокировать надо?
Да, есть. По указанному пути в папке все файлы, которые в папке References в архиве для скачивания. Попробовал скопировать папку в C:\References - та же самая ошибка.
На папку перед распаковкой делали Unblock?
Распаковывал в совершенно новую папку. На всякий случай проверил Unlocker'ом. Нет там блокировок никаких. Может библиотек каких не хватает в папке?
Версия Quik какая?
Кнопка была. Нажал разблокировать, разархивировал. Ошибка осталась. Квик 6.12.4.11
У меня не воспроизводится ни на 6.12.4.11, ни на более поздних версиях, специально качал архив с box.net для проверки. Необходимо искать кто у вас не дает загрузить файл. В свойствах dll файла есть такая кнопка?
Кнопки нет такой. Свойства файла
UPD: Попробовал запустить скрипт на виртуальном сервере - та же ошибка. Наверное дело в квике
UPD2: Скачал с БКС заново квик - не помогло
Тогда пробуем установить Visual C++ redistributable
Заработало
вопрос в тему: Гидра умеет с помощью этого коннектора к Квику подключаться, и если да, то как ее надо настраивать?
В ближайших версиях, смотрите по changelog-у.
Теперь если есть возможность подключаться удаленно, проддерживается ли подключение двух роботов к одному квику одновременно?
Да.
Решение на базе FIX Server появилось в рамках продукта S#.Broker. Данный продукт доступен только для корпоративных клиентов.
В коннекторе Quik используется сокращенная по функционалу версию, которая позволяет подключение только 1 клиенту. Возможно, после окончания тестирования, расширим для эту опцию до нескольких клиентов. Но она будет доступна только для учеников или по брокерской лицензии.
Можно же всегда сделать одного робота с кучей стратегий. Так и риски регулировать удобнее, и за общей позицией следить и т.д.
С одним терминалом могут работать:
Hydra + боевые роботы это вещь... надеюсь, хотя бы такое ограничение можно сделать для пользователей. Иметь 2 источника: 1 для данных, 1 для execution неудобно
Новый коннектор не бесплатен?
Бесплатен. А что вы сделали, что сейчас ошибка вылезла?
Просто запустил робота в первый раз. До этого я только с импортом скрипта возился.
С DDE работает нормально.
С базовой лицензией не работает. Лицензию перегенерировал. «Лицензия №56157 не поддерживает “FixTrader”» При переключении на соединение через DDE ошибка сохраняется.
Это как именно?
Лицензию нужно видимо обновить в личном кабинете.
Удалил лицензию в личном кабинете и сгенерировал заново. Все равно ошибка, номер лицензии при этом уже другой
С DDE работает. Ошибка у меня (.
Для примера создал лейбл на главном экране Sample, событие не вызывается, сделки не приходят. Понимаю, что там коллекция, разбирать времени не было, но событие не приходит. Trader.NewTrades += tr => this.GuiAsync(() => ); 4. При попытке отправить из Sample заявку в терминал выскочила ошибка(в приложении), не поддерживается лицензия. Позже обновил лицензию через LicensTool, но не помогло, выскакивает такая же ошибка.
Подскажите, что с лицензией то делать? Ошибка была в приложении к сообщению в картинке.
Буду выкладывать по мере повторения поступления ошибок, сейчас самое главное для меня получить сделки из таблицы всех сделок.
Спасибо за ответы!
Будет фикс, постараемся сегодня выложить.
_trader.NewTrades += trades
События так и не приходят, и стаканы так и не открываются. Стаканы то бог с ним, можно вручную открыть, данные начинают приходить, а вот со сделками беда.
Если к нужному инструменту сделать RegisterTrades(инструмент), начинают приходить, но только новые сделки, а как же получить историю с начала дня.
Хочу обратить внимание, что при DDE соединении при подписке на событие trades сделки из таблицы всех сделок приходят по умолчанию, даже без RegisterTrades(инструмент). Если здесь механизм другой, прошу подсказать как им пользоваться, как получить все сделки с начала дня.
В Sample, открываю таблицу всех сделок, сделок нет. При этом все остальные таблицы заполняются.
Интересно также, что после того, как нажимаешь в Sample кнопку отключится фактически отключения не происходит, продолжают приходить данные.
Спасибо, за ответы, будем проверять в понедельник, по поводу правильно не правильно я ж не знаю, как должно быть правильно, знаю только как работало)) Смущает, что при подписке на трейды по бумаге не приходит история, но будем разбираться.
После применения Level1 таблица всех сделок заработала, значит и к роботам прикрутим, но вот стаканы автоматически не открываются. т.е. выбираешь бумагу нажимаешь кнопку стакан, Sample стакан открывается, а в квике нет, при этом если вручную в квике открыть стакан, то в стакан sample начинают приходить данные. Ошибок никаких не вижу.
Для текущей версии читаем документацию и далее смотрим на скрин.
Все по инструкции, (см. скрин), есть таблица текущих параметров с названием Инструменты, есть первые 3 колонки правильные, но стакан не открывается, да это и мелочь на самом деле, не сложно его открыть руками, но вот сегодня опять не пришла история сделок с начала дня при подписке по Level1.
Также для избежания постоянной путаницы может быть есть смысл в стандартном файле настроек info_lua.wnd изменить название таблицы параметров на Инструменты. Т.к. я вот был уверен, что в этих настройках все так, как должно быть для корректной работы.
Попробуйте на 4.2.6
Сделки с начала дня пришли, стаканы открылись, все работает, проверяем функционал дальше. Спасибо!!
Осталась последняя проблема, не отображается корректно максимальная и минимальная цена на фортсе. Показывает 2147483647 и 1 соответственно, подскажите как получить эти данные, очень нужны для фортса и рыночных заявок.
На изменения по инструменту подписаны?
да, нажимаю сначала Level1, дожидаюсь пока придут все данные в таблице инструментов и потом только смотрю максимальную и минимальную цену.
Раньше в dde нужно было дополнительно эту информацию получать. Может здесь тоже что то подобное?
Так Level1 нужно нажимать после появления нужного инструмента.
Да естественно, Level1 активен только при выборе инструмента, когда он уже загружен в Sample
Здравствуйте , версия 4.2.6.0 при попытке запустить скрипт Луа в Квик выскакивает ошибка : error loading module 'StockSharp' from file 'C:\References\StockSharp.QuikLua.dll': The specified module could not be found. Подскажите пожалуйста в чем проблема.
Было.
Да , но это : "Тогда пробуем установить Visual C++ redistributable" в моем случае никак не помогает , ошибка та же.
Возможно у вас 64 разрядная система и вы установили redistributable именно для неё, тогда ошибка останется, надо ставить x86.
Да, так и было. Спасибо.
Добавил в доку.
Подскажите есть ли новости по поводу получения максимальной и минимальной возможной цены?
Вроде все заработало, один вопрос: при перерегистрации заявок раньше по dde в окне сообщения об этом не сообщалось, теперь сообщается:
"Перестановка заявок завершена успешно. New Order1 ID: 2396988446, new Order2 ID: 0"
эти сообщения можно отключить? Из за них можно попустить что то важное, например время открытия вечерки или остановки торгов для расширения лимитов.
И кстати непонятно почему ID Order2 0.
Спасибо!
В новом коннектроре на Луа есть одна большая проблема: до того пока не произойдет обнвление того или инного поля оно остается пустым, я уже упоминал об этом на примере стакана: на стакан подписался , но стакана еще нет и пока стакан не изменится в коннекторе он таки будет пустым. То же самое например с полями инструментов , например поля теор цены и волатильность опционов так и будут пустыми пока не произойдет событие в котором придет их обновление.
Думаю это неправильно , должно быть так:
Получил новый инструмент подписался на него и автоматом должны перечитаться из квика и заполнится все поля инструмента. Также со стаканом , как только я подписываюсь на стакан , коннектор должен принудительно взять стакан из квика, а не ждать пока произойдет обновление стакана.
Вот самое главное что разработчики пропустили в новом коннекторе .
Еще раз, процесс подписки и получения данных асинхронный. Если по каким-то причинам для каких-то коннекторов сразу после вызова метода RegisterMarketDepth (не дожидаясь события изменения стакана), можно получить заполненный стакан, это не значит, что это правильный подход в использовании S# и он будет работать всегда и для всех коннекторов.
Действительно приходят свойства и стаканы, но почемуто очень и очень медленно и мучительно долго, через ДДЕ все приходит в моменте, а тут нужно минут 10 чтобы все пришло.
Еще заметил что новый коннектор никак не учитывает настройки получения данных прописанные в квике в Связь- Списки , и подгружает все инструменты , может потому он так и тормозит ?
Может стоит отключить автоматическую подписку на все инструменты ? пусть каждый подписывается только на те инструменты которые ему нужны.
Интересно, а как с таблицей всех сделок, он хоть учитывает подписку на эти данные или тоже грузит все подряд?
Я и подписываюсь только на то что мне нужно . Вы уверены что коннектор не делает автоматом: connector.RegisterSecurity(sec) при получении ногого инструмента ?
Почему же такие тормоза ? Почему через ДДЕ все приходит намного быстрее ? По идее через Луа наоборот должно быть пошустрее.
Может проблема в самом скрипте луа то есть в длл что в него подгружается, ведь даже если я не подписался отсекать будет уже коннектор, может нужно что бы отсекал скрипт луа ? может все данные идут одним потоком в соннектор из луа?
есть информация с какой версии квика будет работать корректно, а то есть брокеры с довольно старыми?
Давайте подойдем с другой стороны, у вас что-то не работает?
мне бы настроить версию 6.5.2.11
Нет необходимости загружать именно этот файл настроек, все необходимые настройки описаны здесь.
При запуске Samples (S# 4.2.20, QUIK 6.14.0.12), через LUA, выскакивает ошибка "Операция является недоступной из-за текущего состояния объекта" http://gyazo.com/9167c69e6a43796ee40866289782da7b , в StockSharp.QuikLua ошибки нет. Что не так?
Скопируйте ошибку текстом.
Error System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта. в #=qlzAhmNJcRJj7yRqMy$HGIbaJ9VOJwEcYz4f_WwOTVNE=.#=qDgLWy14y870wz4tzTCEUQg==(Stream #=q0z4clprxecT1NtlVhkbsfQ==) в StockSharp.Fix.FixReader.ReadNextTag() в StockSharp.Fix.FixMessageAdapter.#=qacR_9DBjtFT9tmjFdlb977Xn632wOgT$bDM2ysPPVHA=()
Хорошо бы еще дебаг логи для QuikTrader-а увидеть.
В StockSharp.QuikLua только: "2014/08/29 22:52:01.685| |FixServer |FixServer started." (LogLevel=2)
Пробовал подключиться через другого брокера (Quik 6.13.0.104), результат аналогичный🤨
Логи нужны не LUA, а робота. В частности QuikTrader в режиме Debug
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.
Посмотрите еще лог 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=()
195.226.204.208:15300 - это что за адрес?
Михаил, я понял свою ошибку! Это адрес соединения брокера😂. Спасибо!
Добрый день. Как при Lua подключении получить значение "Входящие средства" (Размер позиции на начало торговой сессии) из таблицы "Портфель по бумагам"? portfolio.BeginValue выводит неправильные данные.
Подробнее
При соединении через DDE в Quke настраивается таблица "Портфель по бумагам", с колонками: Код клиента ВходСредства ТекСредства Тек.плечо
Данные из колонки "ВходСредства" выводятся с помощью portfolio.BeginValue. При соединении через Lua, portfolio.BeginValue выводит совершенно другие данные, не соответствующие данным в колонке "ВходСредства"🤨 (похоже на данные из колонки "Вход.активы", но это не то что надо) Как при соединении через Lua достать данные из колонки "ВходСредства"?
Добрый вечер!
Подскажите пож-та, запускаю скрипт, выдаёт ошибку! Visual C++ redistributable установлен, настройки Quik загрузил из Sample.
http://youtu.be/GVH3hv5CoyI
Приветствую всех. У меня вопрос про получение BestBid и BestAsk. Для этого обязательно запускать экспорт стаканов? В хелпе в описании метода RegisterSecurity указанно "Начать получать новую информацию (например, LastTrade или BestBid) по инструменту", но даже после его вызова BestBid и BestAsk у инструмента остаются равны null. В Sample также, при нажатии кнопки Level1 колонки bestbid и bestask остаются пустыми, при запуске стакана - заполняются. Verifier пишет, что все настроено правильно. Это баг или я что-то делаю/понимаю не так?
quik: 6.14.0.12 S#: 4.2.22 OS: Windows 7 x64
В режиме блиц-опроса повторю свой вопрос. Для проверки скачал только что 4.2.26 и запустил Sample, при нажатии Level1 bid'ов и ask'ов в таблице как не было, так и нет. Появляются только при запуске стакана.
Добрый день, подскажите пож-та, можно ли осуществить в коннекторе так, чтобы в список инструментов загружался только один определённый инструмент, а не весь список фьючей, акций, опционов и т.д.? Затрудняет поиск
Наверное настроить списки в квике...
Настраивал, оставлял один инструмент, но всё равно подгружаются куча других
В режиме блиц-опроса.
Какие то сейчас наблюдаются проблемы с новым коннектором через LUA или все были успешно устранены?
Пишите тут о своих проблемах, если они еще присутствуют.
Сам много времени убил на данную задачу и частично решил ее. В любом случае lua будет подгружать всю инфу с квика, причем настройки списков в самом квике никак на этом не сказываются.
Написал следующий код:
Listbox можно так же поменять на Combobox, кому как удобнее. После соединения проходит приличное время пока все подгрузится, но зато не приходится искать в списке из тысяч инструментов те, которыми постоянно пользуешься.
Я как-то не так вопрос задал (может в не ту ветку или этот вопрос из разряда моего непонимания и ответ доступен только пользователям платной поддержки)? В моем понимании Level1 - это Bid price, Bid size, Ask price, Ask size, Last price, Last size. А стаканы это уже Level2. Тем более судя по документации (см. мое предыдущее сообщение) после вызова RegisterSecurity биды и аски должны быть доступны у security. Вызов SubscribeMarketData(sec, StockSharp.Messages.MarketDataTypes.Level1) также нчиего не дает. Мне в программе нужна информация по множеству инструментов (опционы разных страйков и дат, пока для одного БА, в перспективе для нескольких) и как-то совсем не хочется открывать миллион стаканов.
Кто то еще может подтвердить данное поведение?
Да, действительно это так и есть.
И действительно не работает фильтр по настроенным спискам, выдает все инструменты. Сделайте фильтр, чтобы данные по LUA (по инструментам и сделкам) передавались только те, что настроены по списку в Квике.
Это скрин с окна из примеров Samples\Quik\Sample и открыты инструменты...
Вы не понимаете что такое луа. Читайте все сообщения посвященные новому коннектору, и только после этого используйте его.
в 6.14 QUIK версии все работает, в 6.15 уже не работает...
если нужны какие-то преднастройки, то было бы хорошо иметь описание или *.wnd
К тому, что Lua не опирается на разметку таблиц (wnd)
так как твитера нет - решил просто поделился здесь
http://quik.ru/forum/lua/121572/121572/ я не сотрудник Арки. Пишите им претензии. Я то что могу сделать?
А подскажите, почему трейдер LUA не возвращает статус заявки (null)?
Результат такой:
Order order = connector.Orders.FirstOrDefault(o => o.Id == oid);
Order order = connector.Orders.FirstOrDefault(o => o.Id == oid);
public void bla-bla-bla(string id, IConnector connector) { Order order = connector.Orders.FirstOrDefault(o => o.Id == id); //после этого order.status=null, на вход подается quiktrader с подключение через LUA } //В стратегии: protected override void OnStarted() { this.OrderRegistered += order => { //тут тоже order.Status == null }; }
public void bla-bla-bla(string id, IConnector connector) { Order order = connector.Orders.FirstOrDefault(o => o.Id == id); //после этого order.status=null, на вход подается quiktrader с подключение через LUA } //В стратегии: protected override void OnStarted() { this.OrderRegistered += order => { //тут тоже order.Status == null }; }
Добрый день!
Я тут новичок, поэтому прошу сильно тапками не бить :)
Поясните, пожалуйста, по утверждению "Текущая версия Quik Lua коннектора не поддерживает работу со стоп-заявками и получение истории изменений."
Если со стоп-заявками понятно, то на что влияет история изменений? Ну, то есть, чего я без неё не могу делать/видеть? И да, когда планируется наладить работу со стоп-заявками?
P.S. Спасибо за то, что вы делаете. Мне, как программисту, ваш проект понравился, в отличие от TS Lab и TradeMatic -- в плане возможностей, поддержки, документации :)
Уже поддерживаем. Вот было бы интересно их проверить, так как внесени недавно.
Это хорошо.
А что насчёт исторических данных? Я так понял, это значит, что через коннектор алгоритм не может запрашивать у QUIK данные (свечки) по предыдущим торговым сессиям, и, тем самым, при запуске алгоритма в боевом режиме [пока] нет возможности рассчитать какие-то параметры по прошлым данным (к примеру, суммарный объём сделок за конкретный период до начала работы алгоритма)?
Сначала стопы, затем история.
А еще было-бы здорово, если в свойствах инструмента тоже добавили его текущий статус (колонка "Статус" в таблице "Инструменты"), чтобы не заморачиваться со свойством Security.Board.WorkingTime и последующими приведениями временных зон, проверками попадает ли текущее время в торгуемое и т.п. Там-то сразу указано торгуется этот инструмент или нет.
У меня вот такая проблема с коннектором Луа, подключаюсь к квику , регистрирую стакан фьюча, все ок, начинаю регистрировать стаканы опционов ( около 20 инструментов), квик зависает на глухо. квик 6.15.1.17 , стокшарп 4.2.31
По логу такое впечатление что после регистрации стакана идет перезагрузка всех трейдов полностью.
В 4.2.30 Security.LastTrade.Time = Security.LastChangeTime, хотя первое должно считаться по последней сделке, а второе по последней сделке или последнему изменению стакана, сейчас оба значения меняются по изменению стакана
Скажите, пожалуйста, нормальной ли является такай ситуация :
Открыл два квика , с темже аккаунтом для торговли, к одному подключился по ДДЕ и совершаю там сделки , к другому подключился по Луа , в другом вижу сделки что совершаю в первом через ДДе , но вот робот который подключен через Луа этих сделок не видит ? почему ? что нужно изменить в коде что-бы видел ?
trader.SupportManualOrders = true; включено.
Оказывается через Луа я вообще не видел никаких сделок из квика , после откытия таблицы всех сделок сделки в программе подключенной через луа пошли . Закрываю таблицу всех сделок , в Луа сделки перестают идти :(
Вопрос : неужели чтобы коннектор луа видел сделки нужно открывать таблицу всех сделок ?
Своих сделок я так и не увидел..
Версия 4.2.35 ошибка при котировании:
LUA:
Здравствуйте. Решил воспользоваться новым коннектором для скачивания свечных данных и столкнулся с проблемой. Во-первых, происходит дублирование свечей в сериях, которые приходят в "CandleManager.Processing". Во-вторых, свечи на один и тот же временной отрезок в каждой серии отличаются как минимум объемом, и с каждой новой серией эта величина увеличивается, и ,в конце концов, после нескольких повторений объем принимает свое окончательное верное значение. Мне кажется это поведение некорректным. Можно ведь сразу все свечи, которые уже прошли, выдавать в конечном виде и не повторять их каждый раз.
Что-то ничего не понял, ни по описанию, ни по логам.
11/10/2014 10:00:00;101000;101000;101000;101000;0 11/10/2014 10:00:00;101000;101000;101000;101000;2 11/10/2014 10:00:00;101000;101000;101000;101000;4 11/10/2014 10:00:00;101000;101000;101000;101000;5 11/10/2014 10:00:00;101000;101000;101000;101000;6 11/10/2014 10:00:00;101000;101000;101000;101000;10 11/10/2014 10:00:00;101000;101000;101000;101000;11 11/10/2014 10:00:00;101000;101000;101000;101000;12 11/10/2014 10:00:00;101000;101000;101000;101000;13 11/10/2014 10:00:00;101000;101000;101000;101000;14 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101000;101000;101000;0 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101000;101000;101000;1 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101000;101000;101000;2 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101000;101000;101000;3 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101010;101000;101010;4 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101010;101000;101010;5 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101010;101000;101010;7 11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;101020;101000;101020;8
Как мы видим, у нас происходит постоянное наращивание объема свечи , например, с временем "11/10/2014 10:00:00". В какой-то момент, после очередного срабатывание обработчика я получаю значение окончательное "11/10/2014 10:00:00;101000;101000;101000;101000;15".
( ... 11/10/2014 10:00:00;101000;101000;101000;101000;11 11/10/2014 10:00:00;101000;101000;101000;101000;12 11/10/2014 10:00:00;101000;101000;101000;101000;13 11/10/2014 10:00:00;101000;101000;101000;101000;14 11/10/2014 10:00:00;101000;101000;101000;101000;15 ... )
Затем начинается аналогичный процесс для следующей свечи с временем 11/10/2014 10:00:01...Почему сразу нельзя выдать всю серию так:
11/10/2014 10:00:00;101000;101000;101000;101000;15 11/10/2014 10:01:00;101000;102000;100800;102000;1343 11/10/2014 10:02:00;101770;102020;101760;101910;567 ... ,без дублирования. Или это такая задумка? Черт с ним, с дублированием, зачем выдавать свечи с каким-то промежуточным значением объема. Конечно, это все можно обойти, но разве это логично. Могу Скинуть код.
Нет никакого дублирования, свечка меняется и вы получаете каждое изменение. Здесь.
Вот еще проблема более серьезная: В примере sample добавляем для открытия орддера котированием
В результате работы в систему выставляются "неэффективные" ордера с нулевым объемом:
В приложении лог MQS и LUA.
А это:
зачем в систему выставляется заявка с нулевым объемом или это нормально?
Здравствуйте,
скачал последнюю версию дистрибутива, пример Quik Sample, подключаюсь через Lua -- нету ни одной сделки. Level1 и стаканы идут, только сделки не транслируются. Открываю таблицу всех сделок в квик -- сделки начинають транслироватся . Теперь в Sample --> MainWindow исправляю: Trader.NewSecurities += securities => { foreach (var sec in securities) Trader.RegisterTrades(sec); _securitiesWindow.SecurityPicker.Securities.AddRange(securities); };
Тоесть хочу получать все сделки по всем инструментам, причем и в заказе всех сделок и в таблице всех сделок выбираю только фьюч и опционы на индекс РТС. Стартую сампле --> Quik тупо зависает...
Прошу проверить.
Спасибо.
Подскажите, почему Security.State всегда равно SecurityStates.Trading не зависимо от того, что показывается в таблице инструментов в Квике? (например на клиринге в квике состояние пишет "приостановлено", а транслируется как Trading) Исправьте пожалуйста.
Здравствуйте ,
когда можно ожидать что вы посмотрите в сторону проблеммы описаной здесь: http://stocksharp.com/posts/m/32257/
Спсибо.
Приветствую всех участников форума. Хотелось бы услышать пояснение об экспорте через ЛУА. Я конечно новичок и только учусь (смотрю 1 видеоурок), но сразу понятно, что ЛУА как-то избирательно передаёт информацию. Как я понял, раньше через ДДЕ, подключение робота проходило в 2 этапа:
То есть, до старта экспорта по ДДЕ никакие данные в робота априори поступать не могли. С ЛУА же другая ситуация, если не использовать "экспорт" (закомментировать метод StartExport), то список инструментов экспортироваться действительно не будет, но будут экспортироваться - портфели. То есть, ЛУА передаёт часть информации вообще сам по себе, без использования специальных методов/событий. Как-то неправильно это всё и нелогично. Нужно либо включить передачу "портфелей" в экспорт, либо вообще "экспорт" выкинуть, ведь он исходно был задуман для ДДЕ и импорта конкретных таблиц. Тут же ЛУА, тут нечего экспортировать. Текущая ситуация выглядит аллогично, и со стороны смотрится как утечка потока "портфели". ЛУА протекает ))). И у меня логичный вопрос: это специально так задумано или это баг в ЛУА-коннекторе?
http://s015.radikal.ru/i333/1501/b7/20de1adc06dc.jpg
http://s008.radikal.ru/i304/1501/bb/ef4cf78d1aef.jpg
Скажите, пожалуйста , это нормально что у всех сделок OrderDirection = null ?
И еще один вопрос , проэкт СтокШарп еще живой ? а то смотрю уж очень редко на форуме в последнее время отвечают на вопросы пользователей.
Заплатите деньги и вам в тех поддержке будут отвечать быстро.
Уважаемый, Михаил , я конечно понимаю вашу занятость, но если вы уже нашли время для того что бы ответить мне , не могли бы вы ответить и на два других вопроса с того же поста.
Из всех ваших наработок исполюзую только коннектор к квику, который как вы сами заявляете не является платным.
Какая на даный момент актуальная версия стокШарп АПИ ? у вас на сайте 4.2.43 , на гитхабе упоминается о 4.2.64 .
Спасибо.
Здравствуйте,
подскажите, что может быть, если подключение по Lua нормально идет на Quik v.6.16.0.42, а на Quik-Junior 6.16.1.15 с теми же самыми DLL, скриптом и wnd ни в какую. Выдает ошибку 'Unknown error. Possible unhandled exception'. Junior последний с Quik'а. Уже не знаю даже в какой последовательно что менять чтобы заработало, все перепробовал практически. На боевом Quik много не поэкспериментируешь. Может другой какой Junior нужно скачать.
А версия самого стокшарп?
Папку StockSharp_4.2.43_Sources (свежескачанная, перекачивал раза три с разблокировкой) положил на диск С:. На Quik v.6.16.0.42 скрипт заработал, а на Quik-Junior 6.16.1.15 (также свежескачанная) выдает ошибку. Только что на диске создал С:\StockSharp_4.2.43_Sourcesnew и бросил туда DLL скомпилированные с Githab. История повторилась.
В лог что-то пишет?
Я проверял на 6.16.1.15 - работало нормально. Проверял на том, что в Гите. Видимо есть какая-то особенность.
На Quik v.6.16.0.42 лог пишет:
2015/03/03 00:08:28.869| |LuaServer |OnInit 2015/03/03 00:08:28.882| |FixServer |FixServer started. 2015/03/03 00:08:28.882| |LuaServer |OnInit done 2015/03/03 00:08:28.886| |LuaServer |Main
Quik-Junior 6.16.1.15 вообще не оставляет лога при любом уровне логирования.
Установил от Finam Quik-Junior 6.12.4.11 все тоже работает хорошо.
Да уж половину выходных на тот нерабочий 6.16.1.15 убил, хотя обновлял с сервера и переустанавливал его 2 раза.
Такая же ошибка при подключении Lua скрипта 'Unknown error. Possible unhandled exception'. Quik v.6.16.2.20, Quik v.6.16.1.15 Лога нет. S# 4.2.64.
VolkSib, Скачал последний дистрибутив 68-ой версии. Скачал Квик 6.16.1.15. Запустил. Выбрал скрипт прямо в папке дистрибутива. Запустил. Запустилось.
Может привилегий нет, может файлы заблокированы, может антивирус - не знаю причину.
Не подскажите что бы это значило? Вылетает при вызове QuikTrader.Connect() Quik Junior: с сайта quik.ru и от Finam'a. Ошибку выдает на обеих версиях.
причем лог самого в Dubug-mode пишет, что сервер включен и данные отдает. В логе сервера никакой информации об ошибке не нашел
Update: Проблема решена. Сгенерировал новую лицензию. Может кому поможет...
Скачал версию 6.16.1.15 Запустил скрипт(всё без ошибок). Далее загрузил исходники с Github. Скомпилировал. Запускаю Sample Quik и вот что получаю:
[06.03.2015 15:05:48] StockSharp.Licensing, Version=4.2.68.0, Culture=neutral, PublicKeyToken=null: System.IO.FileNotFoundException: Не удается найти указанный файл. (Exception from HRESULT: 0x80070002) at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence) at System.Reflection.Assembly.LoadFile(String path) at CurrentDomain_AssemblyResolve(Object sender, ResolveEventArgs args) [06.03.2015 15:05:48] StockSharp.Licensing, Version=4.2.68.0, Culture=neutral, PublicKeyToken=null: System.IO.FileNotFoundException: Не удается найти указанный файл. (Exception from HRESULT: 0x80070002) at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence) at System.Reflection.Assembly.LoadFile(String path) at CurrentDomain_AssemblyResolve(Object sender, ResolveEventArgs args)
Какую лицензию он просит? Лицензия же отключена как вы писали в релизе № 4.2.68.0
Думаю, прежде чем качать что либо с Гита, вам стоит немного изучить .NET и C#
Спасибо, с прошлыми исходниками вроде как разобрался :)
Но всё же, зачем подключаться к Вашему on-line сервису лицензирования по адресу (stocksharp.com/services/licenseservice.svc), если вы говорите что лицензия в релизе № 4.2.68.0. ОТКЛЮЧЕНА ???
Можете не подключаться.
А как не подключаться? У меня как раз из-за этого коннектор отказывался работать... Так-то не трудно сгенерировать файл лицензии, но вообще интересно, как без нее обойтись, раз уж это стало возможным
Приходите на обучение http://stocksharp.com/edu/ Там расскажут, как отключить лицензию.
Михаил, мягко намекает, что нужно самому забираться в исходники вычищать всё это. И нет никакой гарантии, что остальные скомпилированные части dll-ок не заработают нормально. А если не хватает квалификации, то за деньги это всё сделают на обучении. Так что пока, ЧЕСТНОЙ независимости от лицензии не вижу...
Я не мягко намекаю, а прямо говорю - идите в ближайший книжный магазин и купите книгу по .NET. Ваши вопросы и проблемы идут от незнания .NET и C#, а не из-за лицензии.
Успокойтесь, Михаил. Все всё поняли...
Если что, то учебный Quik 6.16.1.15 со свежей версией с Githab'а нормально подключился по Lua.
Попробовал во всех комбинациях версии библиотеки с Гитхаба: последнюю и с тегом 68; и квики 6.16.1.15, 6.16.2.20. В отличие от 64 версии, теперь сообщения об ошибке нет, просто вылетает квик. Логи LUA не генерируются. Попробовал на 3 разных машинах, результат одинаковый. Запускалось все под администратором и при отключенных антивирусе и брандмауэре. Как искать причину? Есть ли у кого-то еще такая же проблема?
Архив был разблокирован?
Да.
VolkSib, а ты собирал все Dll в одину папку References? а в Quik делал ссылку на скрипт Lua именно в этой папке References?
Спасибо, это помогло.
Не собирате самостоятельно с Гита, если у вас недостаточно знаний. Это путь к багам, который приведет к потере денег на реальных торгах.
Доброго времени суток! Нужна помощь коллективного разума. Чувствую что что-то простое, но лыжи почему то не едут. Запускаю скрипт прям из папки References. Квик при попытке запуска все время падает с ошибкой. Что только не пробовал: И разные версии(качаю zip архив) библиотеки 4.3.10, 4.3.9, 4.2.75 Разные операционки Win7 x86 и x64. Разные Квики 6.12.4.11 и 6.17.3.6 И vcredist_x64 и vcredist_x86 .Net4.6 и 4.5.2
Варианты закончились( Ощущение, что я не сдала что то простое.
Только щас допер, что дело было в не разблокированном архиве )))
Может кому пригодится. Столкнулся с фичей. Quik учебный 6.16.1.15 запущен на виртуалке win7 x64 под Hyper-V.
Скрипт Lua по умолчанию запускает fix-сервер на порту 5002 и поэтому коннект не устанавливается.
Необходимо в скрипте раскомментировать строчку с портом сервера, принудительно поставить 5001. Тогда все начинает работать.
Здравствуйте, подскажите в NewOrders попадают только алго заявки из квика. Установка SupportManualOrders дела не меняет. В Lua коннекторе это не реализовано еще? Если нет, то как таки получить мануальные заявки? (использую последнюю версию)
Спасибо
Ручные заявки через Квик не поддерживаем начиная с версии 7.x.
Видимо поторопился и создал топик не в том разделе, но сути не меняет: исправления для QuikTerminal.cs из коннектора Quik
Добрый день! Есть большое желание научится создавать роботов при помощи ваше проги, но она у Вас сугубо для программистов и техподдержка как правила не оказывается должным образом, есть ли возможность заказать у вас робота? собственно на живом примере легче учится. А пока у Вас даже конект не установить с квиком sher_70@mail.ru