Mikhail Sukhov
|
Дата: 07.04.2014
Ramil  В SampleBlackwood воспроизводится?
|
|
|
|
Ramil
|
Дата: 07.04.2014
В SampleBlackwood тоже самое если не открывать окно с компонентом SecurityPicker, а просто вставить код в главную форму после коннекта. Мне кажется что в SecurityPicker что-то нужное в коде компонента, после чего тикер появляется в списке trader.securities. Но пока его не откроешь код не срабатывает
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 07.04.2014
Ramil  В SampleBlackwood тоже самое если не открывать окно с компонентом SecurityPicker, а просто вставить код в главную форму после коннекта. Мне кажется что в SecurityPicker что-то нужное в коде компонента, после чего тикер появляется в списке trader.securities. Но пока его не откроешь код не срабатывает Не понял о каком коде идет речь.
|
|
|
|
Ramil
|
Дата: 07.04.2014
Код в первом сообщении. Он не работает if (security == null) { var criteria = new Security { Currency = CurrencyTypes.USD, Code = code, }; MainWindow.Instance._trader.LookupSecurities(criteria); }
|
Автор топика
|
|
|
Ramil
|
Дата: 08.04.2014
В версии 4.1.9 все работает, но на ней остаться проблематично, так как новые зарегистрированные у вас лицензии в версии 4.1.9 выдают ошибку System.InvalidOperationException: Лицензия не поддерживает BlackwoodTrade
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 08.04.2014
Ramil  Код в первом сообщении. Он не работает if (security == null) { var criteria = new Security { Currency = CurrencyTypes.USD, Code = code, }; MainWindow.Instance._trader.LookupSecurities(criteria); }
В SampleBlackwood такой код есть и он работает.
|
|
|
|
Ramil
|
Дата: 08.04.2014
Он работает только если открыть окно "Инструменты", а если его не открывать, а вставить в главную форму на любую кнопку и нажать ее после соединения, тогда он не работает! Также если я удалю из формы компонент SecurityPicker, который по идее только выводит список securities, то также поиск не работает!
|
Автор топика
|
|
|
Ramil
|
Дата: 08.04.2014
Выше, это то что касается именно того как в примере SampleBlackwood получить такую же проблему как у меня. Код у меня 100% одинаковый в версии 4.1.9 в которой все котировки приходили и поиск инструментов срабатывал и в версии 4.2.2.24. В данном случае я оказываюсь именно заложником лицензии и не могу остаться на рабочей версии 4.1.9, в связи с тем что у вас какие-то изменения в лицензировании. Я готов оплатить час консультации если это мой косяк, но повторю код 100% одинаковый и в версии 4.1.9 он работает, а в 4.2.2.24 нет
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 08.04.2014
Ramil  Он работает только если открыть окно "Инструменты", а если его не открывать, а вставить в главную форму на любую кнопку и нажать ее после соединения, тогда он не работает! Также если я удалю из формы компонент SecurityPicker, который по идее только выводит список securities, то также поиск не работает! Думаю, вы ошибаетесь.
|
|
|
|
Ramil
|
Дата: 08.04.2014
Я это проверил не один раз. Все как написано выше
|
Автор топика
|
|
|
Ramil
|
Дата: 08.04.2014
Также в версии 4.1.9 даже если котировки по инструменту не идут то поиск сработает и он будет найден среди trader.securities, в версии 4.2.2.24 в примере SampleBlackwood в этом случае инструмент не будет найден после поиска.
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 08.04.2014
Ramil  Я это проверил не один раз. Все как написано выше Вы можете сказать, как это воспроизвести?
|
|
|
|
Ramil
|
Дата: 08.04.2014
|
|
|
|
Как вариант заменить ShowSecuritiesClick() на приведенный ниже код в SampleBlackwood, где ищется инструмент "BK", при втором нажатии должно зайти если инструмент найден. Но в общем иногда это работает и в примере, иногда не работает, и как я понял не работает именно тогда когда котировки не идут в данный момент (акция неликвид. и т.п.), так например я запускаю за час где-то до открытия бирже (16-17 мск) или перед закрытием (23 и позже мск), в версии 4.1.9 инструмент будет найден в любое время если установилось соединение, а в 4.2.2.24 он оказывается найден только иногда.
private void ShowSecuritiesClick(object sender, RoutedEventArgs e) { Security security = null; foreach (Security s in Trader.Securities) if (s.Code == "BK" && (s.ExchangeBoard == ExchangeBoard.Nyse || s.ExchangeBoard == ExchangeBoard.Nasdaq || s.ExchangeBoard == ExchangeBoard.Amex)) { security = s; break; }
if (security == null) { var criteria = new Security { Currency = CurrencyTypes.USD, Code = "BK", }; MainWindow.Instance.Trader.LookupSecurities(criteria);
MessageBox.Show("Тикер не найден. Попробуйте запустить снова"); return; } ShowOrHide(_securitiesWindow); }
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 08.04.2014
Вообщем как-то все неоднозначно. Нужен отзыв еще одного пользователя. Пока на 99% уверен, что бага не в коннекторе.
|
|
|
|
Ramil
|
Дата: 08.04.2014
Вот именно, что и работает неоднозначно. Ну и где мне искать этого пользователя? Отзовитесь пожалуйста кто сталкивался. Как мне тогда можно сделать чтобы новая лицензия работала с версией 4.1.9, там проблемы нет?
|
Автор топика
|
|
|
Ramil
|
Дата: 09.04.2014
|
|
|
|
Проблема немного прояснилась, но неясно как ее решить. Поиск инструментов сразу после коннекта foreach (StrategyRecord st in Strategies.Items) FindSecurity(st.Security); приводит к тому что после этого ни один инструмент найден не будет. Если убрать поиск оттуда и выполнить его через примерно 3сек (обязательно нужно выждать иначе не работает, что-то происходит за это время!), то поиск выполняется и часть инструментов находит, если после этого подождать минут 10, то будут найдены все инструменты. Повторюсь что в версии 4.1.9 у меня поиск был именно в событии _trader.Connected, и все инструменты находились сразу без каких то задержек!
private void FindSecurity(string code) { Security security = null; foreach (Security s in _trader.Securities) if (s.Code == code) security = s; if (security == null) { var criteria = new Security { Currency = CurrencyTypes.USD, Code = code, }; _trader.LookupSecurities(criteria); } } _trader.Connected += () => { _isConnected = true; _trader.StartExport(); this.GuiAsync(() => { ChangeConnectStatus(true); //ищем заданные инструменты foreach (StrategyRecord st in Strategies.Items) FindSecurity(st.Security); }); };
|
Автор топика
|
|
|
Ramil
|
Дата: 10.04.2014
Также в версии 4.2.2.24 в случае коннекта к примеру за 4 часа до сессии информация по портфелям не приходит! в старых версиях также было все в порядке и информация о портфелях приходила при коннекте в любое время(если был коннект). Это вы можно легко увидеть запустив пример SampleBlackwood.
|
Автор топика
|
|