trader.IsAsyncMode = true;
trader.RegisterOrder(order); //это в асинхронном режиме
trader.IsAsyncMode = false;
trader.RegisterOrder(order2); //это в синхронном режиме
Комментарии (16)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Попробовал порабоать в ассинхронном режиме. Пр ивыставлении двух
заявок подряд выдается эксепшн "не могу добавить в коллекцию элемент с
существующим ключом" .Это видимо изза Order.ID = 0?
А я погял в чем затык. Номер тарнзакции генерится от времни
системного? так они проходят подряд так резво, что не усвает пройти 55
мкс , и поэтому получается что номера транзакций совпадают. Оно?
Комментарии (16)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Есть всякие внутренние коллекции, которые будут уже заполнены специфичными асинхронными данными... Лучше пересоздавать.
QuikTrader пересоздавать?
Дело в том, что в момент
trader.IsAsyncMode = true; trader.RegisterOrder(order); //это в асинхронном режиме
моя задача выкинуть заявки и забыть о них
Попробовал порабоать в ассинхронном режиме. Пр ивыставлении двух заявок подряд выдается эксепшн "не могу добавить в коллекцию элемент с существующим ключом" .Это видимо изза Order.ID = 0?
Всмысле, не работает асинхронный режим или не работает, если на него переключится с синхронного?
не работает в обоих случаях. ясинхронный делаю при инициалиции шлюза и потом не трогаю
вот код
иницализация trader = new QuikTrader(@"C:\Program Files\Quik 5") ;
метод
public List<Order> SellBasketByMarket(int volume = 1) {
basket.Basket.LeftSide[0].Asset.Name); var price = GetMarketPrice(leftSide, OrderDirections.Sell); var order = makeOrder(OrderDirections.Sell, leftSide, basket.Basket.LeftSide[0].Weight * volume, price, leftSideAccount);
List<Order>(basket.Basket.RightSide.Count); foreach (BasketItem basketItem in basket.Basket.RightSide) { var item = basketItem; var security = trader.Securities.First(sec => sec.Code == item.Asset.Name); var rightPrice = GetMarketPrice(security, OrderDirections.Buy, MarketPriceModifier.Pips, 5); Order rightOrder = makeOrder(OrderDirections.Buy, security, basketItem.Weight * volume, rightPrice, rightSideAccount);
судя по логам, падает на моменте trader.RegisterOrder(rightOrder);
версия 2.0 (не 2.0.1)
генертор для генерации Order.TransactionID никак не надо хитро настраивать перед запуском trader?
И еще вопрос - в асинхронном режиме сатусы у заявок и баланс обновляются нормально?
Думаю в этом причина.
В чем - этом? :)
версия 2.0 (не 2.0.1) А я помню, что в 2.0 как раз схожая была бага.
щас проапдейтим
А я погял в чем затык. Номер тарнзакции генерится от времни системного? так они проходят подряд так резво, что не усвает пройти 55 мкс , и поэтому получается что номера транзакций совпадают. Оно?
Нет, в 2.0 банально код неработающий для асинхронных заявок. А насчет быстроты - не знаю. У меня так быстро не работает ничего =)
ну у меня в 2.0.1 2 пордряд заявки в ассинхронном не регились, пока не сделал инкрементальный генератор транзакций.не успевал кварц тикнуть :)