Использую MultiTrader; при добавлении стратегии смотрю - если Portfolio уже присутствует в списке добавленных через событие NewPortfolios, то использую его (определяю по Name - должно совпадать с именем счёта), если нет - создаю через var result = GetPortfolio(name); //base.RegisterPortfolio(result); return result; (у меня свой OwnQuikTrader, наследованный от QuikTrader).
При попытке зарегистрировать самую обычную заявку: var newTestOrder = CreateOrder(OrderDirections.Buy, Security.MaxPrice, 1); RegisterOrder(newTestOrder); возникает исключение System.ArgumentException was unhandled by user code Message=Не найден шлюз для заявки 0. Parameter name: order InnerException:
С чем может быть связано? В версии 2.1 всё отлично работало
Комментарии (7)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Когда создаете портфель, присвойте Trader нужный шлюз. MultiTrader по нему переадресовывает заявку нужному шлюзу.
Да, я уже в 2.3 сделал так, чтобы портфели брались из Торговля -> Управление счетами. А то как то не очень хорошо создавать портфель ручками.
Не помогло. Более того - после вызова var result = GetPortfolio(account.Account); (account.Account - имя счёта) у result Trader проставлен уже.
Кстати, попутно вопрос - надо ли вызывать base.RegisterPortfolio(result); или это делается автоматически при создании портфеля?
Trader ÐÒÏÓÔÁ×ÌÅÎ × ÍÏÊ ËÌÁÓÓ OwnQuikTrader:
public class OwnQuikTrader : QuikTrader { public OwnQuikTrader(string path, string ddeServer, string dllName) : base(path, ddeServer, dllName)
Так понятно. Бага. Выставите Order.Trader.
Всё заработало, спасибо.
Чтобы по теме не осталось вопросов - надо ли регистрировать через метод RegisterPortfolio новые портфели (как те, которые приходят в событие NewPortfolios так и те, которые создаются через GetPortfolio)? Через метод GetPortfolio могут быть возвращены уже созданные портфели
Для QuikTrader RegisterPortfolio ничего не делает. Я его сделал для аналогии с SmartCOM, но и там от него можно отказаться. Надо посмотреть на другие системы. Возможно его вообще стоит выкинуть.