Банальная задача, но непонятно как решать.
Задача - написать отдельный сервис, который бы срабатывал в моменты 18:45:20 и 23:45:20, снимал бы статус всех счетов (балансы, открытые позиции) и отключался. В связи с асинхронной моделью задача кажется некрасиво реализуемой.
Что делаем:
1. Подписываемся на .NewPortfolios += portfolios => .... Trader.RegisterPortfolio() здесь.
Подписываемся на .NewPositions += positions => ... (хотя наверное этого можно и не делать).
2. Запускаем StartExport
3. Тупо в цикле делаем Thread.Sleep(1000) 20-30 раз, за это время приходят события по портфелям и по позициям. Подозреваю, что в моменты клиринга и ночью этого времени достаточно, но если времени не хватит - как понять, что вся инфомация пришла? Использовать вариант waitHandle нереально, так как кол-во портфелей может поменяться (в теории) и позиции точно каждый день разные, и сколько их - заранее неизвестно.
4. После паузы делаем
Trader.portfolios.ForEach(снять данные портфеля)
Trader.positions.ForEach(снять позиции по портфелям).
5. Далее проще - регистрируем акции/фюьчи из портфеля, смотрим их котировки/ГО и все считаем.
6. Отключаемся.
Господа авторы, подскажите пожалуйста правильный путь. Есть ли какие-то варианты того, как убедиться в том, что
(1) пришла / актуализировалась информация по всем портфелям
(2) прошла информация по всем позициям?
Заранее благодарю.