API 4.2.2.24 поиск инструмента

API 4.2.2.24 поиск инструмента
Atom
4/7/2014
Ramil


В версии 4.2.2.24 следующий код не приводит к поиску инструмента, котировки не идут if (security == null) { var criteria = new Security ; MainWindow.Instance._trader.LookupSecurities(criteria); }

Но есть один момент, если после поиска инструмента открыть компонент SecurityPicker, как в примере SampleBlackwood, то поиск срабатывает, если его не открывать то котировки получить невозможно.

В версии 4.1.19 было все нормально, такой проблемы не было. Но новая лицензия созданная в ЛК не работает со старой версией Blackwood, поэтому на старой версии тоже остаться не получается. Как можно решить проблему?


Tags:


Thanks:


< 1 2 
Ramil

Avatar
Date: 4/8/2014
Reply


Также в версии 4.1.9 даже если котировки по инструменту не идут то поиск сработает и он будет найден среди trader.securities, в версии 4.2.2.24 в примере SampleBlackwood в этом случае инструмент не будет найден после поиска.

Thanks:

Mikhail Sukhov

Avatar
Date: 4/8/2014
Reply


Ramil: Я это проверил не один раз. Все как написано выше

Вы можете сказать, как это воспроизвести?

Thanks:

Ramil

Avatar
Date: 4/8/2014
Reply


Как вариант заменить 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);
}
Thanks:

Mikhail Sukhov

Avatar
Date: 4/8/2014
Reply


Вообщем как-то все неоднозначно. Нужен отзыв еще одного пользователя. Пока на 99% уверен, что бага не в коннекторе.

Thanks: Ramil

Ramil

Avatar
Date: 4/8/2014
Reply


Вот именно, что и работает неоднозначно. Ну и где мне искать этого пользователя? Отзовитесь пожалуйста кто сталкивался. Как мне тогда можно сделать чтобы новая лицензия работала с версией 4.1.9, там проблемы нет?

Thanks:

Ramil

Avatar
Date: 4/9/2014
Reply


Проблема немного прояснилась, но неясно как ее решить. Поиск инструментов сразу после коннекта 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);
                    });
            };
Thanks:

Ramil

Avatar
Date: 4/10/2014
Reply


Также в версии 4.2.2.24 в случае коннекта к примеру за 4 часа до сессии информация по портфелям не приходит! в старых версиях также было все в порядке и информация о портфелях приходила при коннекте в любое время(если был коннект). Это вы можно легко увидеть запустив пример SampleBlackwood.

Thanks: Mikhail Sukhov
< 1 2 

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

loading
clippy