← Voltar

QuikTrader.IsAsyncMode

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

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (16)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler Autor

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

Tauler
Tauler Autor

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

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

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

Tauler
Tauler Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler Autor

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

вот код

иницализация 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 Autor

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

Tauler
Tauler Autor

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

Tauler
Tauler Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler Autor

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

Tauler
Tauler Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

Tauler
Tauler Autor

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