trader.IsAsyncMode = true;
trader.RegisterOrder(order); //это в асинхронном режиме
trader.IsAsyncMode = false;
trader.RegisterOrder(order2); //это в синхронном режиме
Попробовал порабоать в ассинхронном режиме. Пр ивыставлении двух
заявок подряд выдается эксепшн "не могу добавить в коллекцию элемент с
существующим ключом" .Это видимо изза 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 пордряд заявки в ассинхронном не регились, пока не сделал инкрементальный генератор транзакций.не успевал кварц тикнуть :)