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
{
Currency = CurrencyTypes.USD,
Code = code,
};
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