QuikTrader.IsAsyncMode
Atom Reply
6/28/2010


А это свойство можно менять в любой момент?

я могу сделать так:

trader.IsAsyncMode = true;
trader.RegisterOrder(order); //это в асинхронном режиме
trader.IsAsyncMode = false;
trader.RegisterOrder(order2); //это в синхронном режиме


Tags:


Thanks:




16 Answers
Mikhail Sukhov

Avatar
Date: 6/29/2010
Reply


Есть всякие внутренние коллекции, которые будут уже заполнены
специфичными асинхронными данными... Лучше пересоздавать.

Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


QuikTrader пересоздавать?

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


Дело в том, что в момент

trader.IsAsyncMode = true;
trader.RegisterOrder(order); //это в асинхронном режиме

моя задача выкинуть заявки и забыть о них

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


Попробовал порабоать в ассинхронном режиме. Пр ивыставлении двух
заявок подряд выдается эксепшн "не могу добавить в коллекцию элемент с
существующим ключом" .Это видимо изза Order.ID = 0?

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 6/29/2010
Reply


Всмысле, не работает асинхронный режим или не работает, если на него
переключится с синхронного?

Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


не работает в обоих случаях. ясинхронный делаю при инициалиции шлюза и
потом не трогаю

вот код

иницализация
trader = new QuikTrader(@"C:\Program Files\Quik 5") {IsAsyncMode =
true, ClientCode = "11369/06"};

метод

public List<Order> SellBasketByMarket(int volume = 1)
{

var leftSide = trader.Securities.First(sec => sec.Code ==
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);

trader.RegisterOrder(order);

List<Order> orders = new
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);
orders.Add(rightOrder);
}

return orders;
}

судя по логам, падает на моменте
trader.RegisterOrder(rightOrder);

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


версия 2.0 (не 2.0.1)

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


генертор для генерации Order.TransactionID никак не надо хитро
настраивать перед запуском trader?

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


И еще вопрос - в асинхронном режиме сатусы у заявок и баланс
обновляются нормально?

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 6/29/2010
Reply


Думаю в этом причина.

Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


В чем - этом? :)

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 6/29/2010
Reply


версия 2.0 (не 2.0.1) А я помню, что в 2.0 как раз схожая была бага.

Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


щас проапдейтим

Topic starter
Thanks:

Tauler

Avatar
Date: 6/29/2010
Reply


А я погял в чем затык. Номер тарнзакции генерится от времни
системного? так они проходят подряд так резво, что не усвает пройти 55
мкс , и поэтому получается что номера транзакций совпадают. Оно?

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 6/29/2010
Reply


Нет, в 2.0 банально код неработающий для асинхронных заявок. А насчет
быстроты - не знаю. У меня так быстро не работает ничего =)

Thanks:

Tauler

Avatar
Date: 6/30/2010
Reply


ну у меня в 2.0.1 2 пордряд заявки в ассинхронном не регились, пока не
сделал инкрементальный генератор транзакций.не успевал кварц
тикнуть :)

Topic starter
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy