Mikhail Sukhov
|
Date: 10/24/2010
У меня код:
trader.NewSecurities += securities =>
{
foreach (var security in securities)
{
if (security.Code == "RIZ0")
{
_riz0 = security;
trader.RegisterSecurity(_rim0);
}
}
};
и на демо и на реале стабильно находил фьюч. Но я не проверял порядок прихода инструментов. Может быть там не всегда одна и так же сортировка?
|
|
|
|
Thanks:
|
|
|
|
|
|
eaa
|
Date: 10/24/2010
у меня то же самое, разве что в цикле печатает все, что приходит.
стабильно работает, работает, а потом так же стабильно эта бумага не появляется. Потом опять начинает появляться...
это и смущает. сначала думал что может оно где-то лочится в коде, но вроде нет - остальное-то приходит стабильно.
|
|
|
|
Thanks:
|
|
|
|
|
|
eaa
|
Date: 10/26/2010
Вот еще заметил такую вещь...
trader.NewSecurities += securities =>
{
foreach (var security in securities)
{
if (security.Code == "RIZ0")
{
_riz0 = security;
trader.RegisterSecurity(_rim0);
waitHandle.Set();
}
}
};
waitHandle.WaitOne();
Если ставлю точку останова на waitHandle.WaitOne() и потом продолжаю выполнение - приходят все коды, если убираю - некоторые теряются, в т.ч. тот, который мне нужен, хотя не только он...
Пробовал перед ним ставить sleep() - толку нет.
Может есть мысль, как победить?
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/26/2010
eaa:
Вот еще заметил такую вещь...
Если ставлю точку останова на waitHandle.WaitOne() и потом продолжаю выполнение - приходят все коды, если убираю - некоторые теряются, в т.ч. тот, который мне нужен, хотя не только он...
Пробовал перед ним ставить sleep() - толку нет.
Может есть мысль, как победить?
Я весь код не вижу, но думаю это то, о чем я писал выше. Инструменты приходят не всегда в одном и том же порядке. А Вы в коде ожидаете, что RIZ придется одним из первых. В качестве проверки сделайте простое приложение, которое выводит в консоль момент прихода RIZ0:
trader.NewSecurities += securities =>
{
foreach (var security in securities)
{
if (security.Code == "RIZ0")
{
Console.WriteLine("Пришло!!!");
}
}
};
Console.ReadLine();
Уверен, что надпись Пришло будет появляться всегда, хоть и с небольшими задержками.
|
|
|
|
Thanks:
|
|
|
|
|
|
eaa
|
Date: 10/27/2010
Нашел как обойти, но так и не понял причину.
Собственно, когда я ставлю точку останова, то приходит событие NewSecurities, если я ее не ставлю, то приходит SecuritiesChanged, и ловить эту бумагу надо в другом обработчике...
Странно, но факт.
Если кто знает почему так - отпишите плз.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/28/2010
eaa:
Если кто знает почему так - отпишите плз.
А мой ответ чем не подошел?
|
|
|
|
Thanks:
|
|
|
|
|
|
eaa
|
Date: 10/28/2010
Он не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/28/2010
eaa:
Он не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
Я думаю проблема в синхронизации данных. Вы пробовали создать простой приложение с кодом, которое я написал? Всегда ли приходит фьюч на РТС?
|
|
|
|
Thanks:
|
|
|
|
|
|
Alex2
|
Date: 10/29/2010
Mikhail Sukhov:
eaa:
Он не объясняет, почему в одном случае приходит NewSecurity, а в другом - SecurityChanged.
Я думаю проблема в синхронизации данных. Вы пробовали создать простой приложение с кодом, которое я написал? Всегда ли приходит фьюч на РТС?
Подтверждаю, такая же проблема с RIZ0
Пробовал приведенный вами код для NewSecurities не срабатывает:
trader.NewSecurities += securities =>
{
foreach (var security in securities)
{
if (security.Code == "RIZ0")
{
Console.WriteLine(security.Code);
}
}
Бумага не находится.
А вот если поместить этот же код в trader.SecuritiesChanged RIZ0 находится.
ps: если бы не инфа в предыдущих постах о SecuritiesChanged - до сих пор ломал бы голову, почему не приходит RIZ0
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/29/2010
Alex2:
Подтверждаю, такая же проблема с RIZ0
Пробовал приведенный вами код для NewSecurities не срабатывает:
Ок, понятно. Проблема в том, что инструмент инициализируется позднее. Из-за того, что сделки (или заявки) по инструменту приходят раньше, чем сама информация по инструменту. Из-за этого в NewSecurities посылается не полностью инициализированный объект Security. Как вариант - смотрите на Security.Id, а не на Code. Он не изменяется в процессе работы.
|
|
|
|
Thanks:
|
|
|
|
|