Решил всё же создать отдельную тему для MultiTrader.
У меня логика в роботе такая - есть несколько стратегий-роботов,
которые запускаются на одном квике, но на разных субсчетах (каждый
робот-стратегия - на отдельном субсчёте).
Соответственно, я создаю MultiTrader и добавляю в AggregatedTraders
счёт \ созданный QuikTrader (через конструктор, в который передаётся
один лишь путь до папки). Естественно, второй QuikTrader с таким же
путём мне добавить не дают - возникает исключение. Обхожу я это с
помощью мэпа-словаря: <pathToQuik.ToLower(), QuikTrader>. И не создаю
таким образом повторно QuikTrader. Но на мой взгляд, такая логика
должна быть внутри MultiTrader. Если я не прав - можно оставить как
есть, но стоит как-то пометить в документации для будущих поколений, я
потратил на то, чтоб это обнаружить какое-то время.
Вторая проблема, которую пока не решил - возникает эксепшен если
вызвать Disconnect для такой же структуры MultiTrader. Я так понимаю
вызывается Disconnect для каждого из AggregatedTraders, но т.к., по
сути, они все одинаковые (просто с разными счетами) - он успешно
завершится для первого, а дальше выскочит эксепшен.
Следующий момент, который не особо нравится - при такой же структуре
MultiTrader и при вызове метода StartExport для MultiTrader вначале
запустится StartExport для первого из AggregatedTraders. Затем, для
второго из списка экспорт вначале остановится (т.к. он уже был запущен
- опять же, QuikTraders ведь одинаковые, различаются только счета), и
потом опять запустится. И так для каждого.
Мне это мешало, потому я стал хранить список из различных QuikTraders
и для каждого элемента из списка вызывать StartExport.
Но, опять же, на мой взгляд, было бы здорово это всё запрятать внутрь
архитектуры MultiTrader.
Пока расписывал возник такой вопрос - если поставить обработчик
события ProcessUnknownDdeData для элемента класса MultiTrader - он
установится для каждого из элементов AggregatedTraders? Если да, тут,
опять же, как мне кажется, стоит устанавливать лишь на различные
элементы QuikTraders (сейчас я это делаю храня список различных квиков
и устанавливая событие для каждого из них - получается, само понятие
MultiTrader у меня очень смазано).