API 4.2.2.24 поиск инструмента
Atom Ответить
07.04.2014


В версии 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, поэтому на старой версии тоже остаться не получается.
Как можно решить проблему?

Теги:


Спасибо:




17 Ответов
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

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


В версии 4.1.9 все работает, но на ней остаться проблематично, так как новые зарегистрированные у вас лицензии в версии 4.1.9 выдают ошибку System.InvalidOperationException: Лицензия не поддерживает BlackwoodTrade
Автор топика
Спасибо:

Mikhail Sukhov

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


Ramil Перейти
Код в первом сообщении. Он не работает
if (security == null)
{
var criteria = new Security
{
Currency = CurrencyTypes.USD,
Code = code,
};
MainWindow.Instance._trader.LookupSecurities(criteria);
}


В SampleBlackwood такой код есть и он работает.
Спасибо:

Ramil

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


Он работает только если открыть окно "Инструменты", а если его не открывать, а вставить в главную форму на любую кнопку и нажать ее после соединения, тогда он не работает! Также если я удалю из формы компонент SecurityPicker, который по идее только выводит список securities, то также поиск не работает!
Автор топика
Спасибо:

Ramil

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


Выше, это то что касается именно того как в примере SampleBlackwood получить такую же проблему как у меня. Код у меня 100% одинаковый в версии 4.1.9 в которой все котировки приходили и поиск инструментов срабатывал и в версии 4.2.2.24. В данном случае я оказываюсь именно заложником лицензии и не могу остаться на рабочей версии 4.1.9, в связи с тем что у вас какие-то изменения в лицензировании. Я готов оплатить час консультации если это мой косяк, но повторю код 100% одинаковый и в версии 4.1.9 он работает, а в 4.2.2.24 нет
Автор топика
Спасибо:

Mikhail Sukhov

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


Ramil Перейти
Он работает только если открыть окно "Инструменты", а если его не открывать, а вставить в главную форму на любую кнопку и нажать ее после соединения, тогда он не работает! Также если я удалю из формы компонент SecurityPicker, который по идее только выводит список securities, то также поиск не работает!


Думаю, вы ошибаетесь.
Спасибо:

Ramil

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


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

Ramil

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 07.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

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.
Автор топика
Спасибо: Mikhail Sukhov


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

loading
clippy