← 戻る

QuikTrader.IsAsyncMode

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

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

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

このトピックは参考になりましたか?

トピックを共有

コメント (16)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler 著者

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

Tauler
Tauler 著者

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

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

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

Tauler
Tauler 著者

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler 著者

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

вот код

иницализация trader = new QuikTrader(@"C:\Program Files\Quik 5") ;

метод

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);

Tauler
Tauler 著者

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

Tauler
Tauler 著者

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

Tauler
Tauler 著者

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler 著者

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler 著者

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

Tauler
Tauler 著者

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler 著者

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