← Atrás

QuikTrader.IsAsyncMode

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

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

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

¿Le resultó útil este tema?

Compartir tema

Comentarios (16)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

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 пордряд заявки в ассинхронном не регились, пока не сделал инкрементальный генератор транзакций.не успевал кварц тикнуть :)