public void cant_add_two_confirmations_for_one_order_to_hashset()
        {
            ObservableHashSet <OrderDeliveryConfirmation> confirmations =
                new ObservableHashSet <OrderDeliveryConfirmation>(new OrderDeliveryConfirmationComparer());

            Order o1 = new Order(1,
                                 BrokerDateTime.Make(DateTime.Now),
                                 "BP12345-RF-01",
                                 "RTS-9.13_FT",
                                 TradeAction.Buy,
                                 OrderType.Limit,
                                 10,
                                 136000,
                                 0);

            OrderDeliveryConfirmation c1 =
                new OrderDeliveryConfirmation(o1, BrokerDateTime.Make(DateTime.Now));

            confirmations.Add(c1);
            Assert.AreEqual(1, confirmations.Count);

            OrderDeliveryConfirmation c2 =
                new OrderDeliveryConfirmation(o1, BrokerDateTime.Make(DateTime.Now));

            confirmations.Add(c2);
            Assert.AreEqual(1, confirmations.Count);
        }
        public void BuySpreadOnQuote_ignore_updates_when_any_position_from_basket_of_strategies_exists()
        {
            StrategyHeader strtgy = this.tradingData.Get <IEnumerable <StrategyHeader> >().Single(s => s.Id == 1);

            Signal sgnl = new Signal(strtgy, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Market, 143000, 0, 0);

            this.tradingData.Get <ICollection <Signal> >().Add(sgnl);

            Order ordr = new Order(sgnl);

            this.tradingData.Get <ICollection <Order> >().Add(ordr);

            OrderDeliveryConfirmation cnfrmtn = new OrderDeliveryConfirmation(ordr, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(cnfrmtn);
            Assert.IsTrue(ordr.IsDelivered);

            Trade trd = new Trade(ordr, ordr.Portfolio, ordr.Symbol, 1430000, ordr.Amount, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(trd);
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Position> >().Count());

            this.qProvider.Update(0, "RTS-12.13_FT", 128990, 20, 129000, 100);
            this.qProvider.Update(0, "Si-12.13_FT", 33000, 50, 33001, 40);
            this.qProvider.Update(0, "Eu-12.13_FT", 44000, 30, 44001, 0);

            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Signal> >().Count());
        }
        public void MakeOrderCancellationRequest_adds_order_cancellaction_request_for_short()
        {
            MockOrderManager mom = (MockOrderManager)this.orderManager;

            Assert.AreEqual(0, mom.CancelCounter);
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Order> >().Count());

            Signal signal = new Signal(this.strategyHeader,
                                       BrokerDateTime.Make(DateTime.Now),
                                       TradeAction.Sell,
                                       OrderType.Limit,
                                       145000,
                                       0,
                                       145100);

            this.signalQueue.Enqueue(signal);

            Order order = this.tradingData.Get <IEnumerable <Order> >().Last();

            OrderDeliveryConfirmation odc = new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(odc);

            this.quotesProvider.Update(0, this.strategyHeader.Symbol, 145040, 150, 145050, 150);

            Assert.AreEqual(1, this.tradingData.CancellationRequests.Count());
            Assert.AreEqual(1, mom.CancelCounter);
        }
        public void two_confirmations_for_different_orders_are_not_equals()
        {
            Order o1 = new Order(1,
                                 BrokerDateTime.Make(DateTime.Now),
                                 "BP12345-RF-01",
                                 "RTS-9.13_FT",
                                 TradeAction.Buy,
                                 OrderType.Limit,
                                 10,
                                 136000,
                                 0);

            OrderDeliveryConfirmation c1 =
                new OrderDeliveryConfirmation(o1, BrokerDateTime.Make(DateTime.Now));

            Order o2 = new Order(2,
                                 BrokerDateTime.Make(DateTime.Now),
                                 "BP12345-RF-01",
                                 "RTS-9.13_FT",
                                 TradeAction.Sell,
                                 OrderType.Limit,
                                 10,
                                 136000,
                                 0);

            OrderDeliveryConfirmation c2 =
                new OrderDeliveryConfirmation(o2, BrokerDateTime.Make(DateTime.Now));

            EqualityComparer <OrderDeliveryConfirmation> ec =
                new OrderDeliveryConfirmationComparer();

            Assert.IsFalse(ec.Equals(c1, c2));
        }
        public void MakeOrderCancellationRequest_does_not_add_order_cancellaction_request_for_long()
        {
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Order> >().Count());

            Signal signal = new Signal(this.strategyHeader,
                                       BrokerDateTime.Make(DateTime.Now),
                                       TradeAction.Buy,
                                       OrderType.Limit,
                                       145000,
                                       0,
                                       145100);

            this.signalQueue.Enqueue(signal);

            Order order = this.tradingData.Get <IEnumerable <Order> >().Last();

            OrderDeliveryConfirmation odc = new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(odc);

            this.quotesProvider.Update(0, this.strategyHeader.Symbol, 145140, 150, 145150, 150);

            Assert.AreEqual(0, this.tradingData.CancellationRequests.Count());
        }
        public void repeat_cancellation_request_if_previous_is_older_than_sixty_seconds_for_sell_test()
        {
            MockOrderManager mom = (MockOrderManager)this.orderManager;

            Assert.AreEqual(0, mom.CancelCounter);
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <Order> >().Count());
            Assert.AreEqual(0, this.tradingData.CancellationRequests.Count());

            Signal signal = new Signal(this.strategyHeader,
                                       BrokerDateTime.Make(DateTime.Now),
                                       TradeAction.Sell,
                                       OrderType.Limit,
                                       145000,
                                       0,
                                       145100);

            this.signalQueue.Enqueue(signal);

            Order order = this.tradingData.Get <IEnumerable <Order> >().Last();

            OrderCancellationRequest firstRequest = new OrderCancellationRequest(order, "First request");

            firstRequest.DateTime = BrokerDateTime.Make(DateTime.Now.AddSeconds(-61));
            this.tradingData.Get <ICollection <OrderCancellationRequest> >().Add(firstRequest);

            OrderDeliveryConfirmation odc = new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(odc);

            this.quotesProvider.Update(0, this.strategyHeader.Symbol, 144800, 150, 144810, 150);

            Assert.AreEqual(2, this.tradingData.CancellationRequests.Count());
            Assert.AreEqual(1, mom.CancelCounter);
        }
Beispiel #7
0
        public void SetDeliveryDate_test()
        {
            StrategyHeader strategyHeader = new StrategyHeader(1, "Sample strategyHeader", "BP12345-RF-01", "RTS-9.13_FT", 10);

            this.tradingData.Get <ICollection <StrategyHeader> >().Add(strategyHeader);

            Signal signal = new Signal(strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Market, 150000, 0, 0);

            this.tradingData.Get <ICollection <Signal> >().Add(signal);

            Order order = new Order(signal, 150);

            this.tradingData.Get <ICollection <Order> >().Add(order);
            Assert.IsFalse(order.IsDelivered);
            Assert.AreEqual(0, this.tradingData.Get <IEnumerable <OrderDeliveryConfirmation> >().Count());

            OrderSucceeded os = new OrderSucceeded(order.Id, "12345");

            this.rawData.GetData <OrderSucceeded>().Add(os);

            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <OrderDeliveryConfirmation> >().Count());
            OrderDeliveryConfirmation confirmation = this.tradingData.Get <IEnumerable <OrderDeliveryConfirmation> >().Last();

            Assert.AreEqual(order.Id, confirmation.OrderId);
            Assert.AreEqual(order, confirmation.Order);
            Assert.AreEqual(os.DateTime, confirmation.DateTime);
        }
        public void Handlers_update_order_on_delivery_confirmation()
        {
            Order o = new Order(this.s1);

            Assert.IsFalse(o.IsDelivered);
            this.tradingData.Get <ICollection <Order> >().Add(o);

            OrderDeliveryConfirmation c = new OrderDeliveryConfirmation(o, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(c);
            Assert.IsTrue(o.IsDelivered);
        }
        public override void Update(OrderSucceeded item)
        {
            Order order = GetOrder(item.Cookie);

            if (order == null)
            {
                return;
            }

            OrderDeliveryConfirmation confirmation = new OrderDeliveryConfirmation(order, item.DateTime);

            this.logger.Log(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, сформировано уведомление о доставке заявки {2}",
                                          BrokerDateTime.Make(DateTime.Now),
                                          this.GetType().Name,
                                          confirmation.ToString()));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(confirmation);
        }
        public void Handlers_do_not_update_order_that_already_delivered()
        {
            Order o = new Order(this.s1);

            Assert.IsFalse(o.IsDelivered);
            this.tradingData.Get <ICollection <Order> >().Add(o);

            DateTime date = BrokerDateTime.Make(DateTime.Now);
            OrderDeliveryConfirmation c = new OrderDeliveryConfirmation(o, date);

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(c);
            Assert.IsTrue(o.IsDelivered);
            Assert.AreEqual(date, o.DeliveryDate);

            OrderDeliveryConfirmation c1 = new OrderDeliveryConfirmation(o, BrokerDateTime.Make(DateTime.Now).AddSeconds(5));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(c1);
            Assert.AreEqual(date, o.DeliveryDate);
        }
Beispiel #11
0
        public void OrderDeliveryConfirmation_constructor_test()
        {
            Order order =
                new Order(1,
                          BrokerDateTime.Make(DateTime.Now),
                          "BP12345-RF-01",
                          "RTS-9.13_FT",
                          TradeAction.Buy,
                          OrderType.Limit,
                          10,
                          136000,
                          0);

            DateTime deliveryDate = BrokerDateTime.Make(DateTime.Now).AddSeconds(1);
            OrderDeliveryConfirmation orderDeliveryConfirmation =
                new OrderDeliveryConfirmation(order, deliveryDate);

            Assert.AreEqual(order, orderDeliveryConfirmation.Order);
            Assert.AreEqual(order.Id, orderDeliveryConfirmation.OrderId);
            Assert.AreEqual(deliveryDate, orderDeliveryConfirmation.DateTime);
        }
Beispiel #12
0
        public void OrderDeliveryConfirmation_ToString_test()
        {
            Order order =
                new Order(1,
                          BrokerDateTime.Make(DateTime.Now),
                          "BP12345-RF-01",
                          "RTS-9.13_FT",
                          TradeAction.Buy,
                          OrderType.Limit,
                          10,
                          136000,
                          0);

            DateTime deliveryDate = BrokerDateTime.Make(DateTime.Now).AddSeconds(1);
            OrderDeliveryConfirmation orderDeliveryConfirmation =
                new OrderDeliveryConfirmation(order, deliveryDate);

            string result = String.Format("Order delivery confirmation for: {0}, {1}",
                                          orderDeliveryConfirmation.OrderId,
                                          orderDeliveryConfirmation.DateTime.ToString(CultureInfo.InvariantCulture));

            Assert.AreEqual(result, orderDeliveryConfirmation.ToString());
        }
        public void two_confirmations_for_one_order_are_equals()
        {
            Order order = new Order(1,
                                    BrokerDateTime.Make(DateTime.Now),
                                    "BP12345-RF-01",
                                    "RTS-9.13_FT",
                                    TradeAction.Buy,
                                    OrderType.Limit,
                                    10,
                                    136000,
                                    0);

            OrderDeliveryConfirmation c1 =
                new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            OrderDeliveryConfirmation c2 =
                new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            EqualityComparer <OrderDeliveryConfirmation> ec =
                new OrderDeliveryConfirmationComparer();

            Assert.IsTrue(ec.Equals(c1, c2));
        }
Beispiel #14
0
        private void ConfirmOrderDelivery(Order order)
        {
            OrderDeliveryConfirmation dc = new OrderDeliveryConfirmation(order, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(dc);
        }
        public void CoverSpreadOnQuote_make_signals_to_close_existing_position()
        {
            StrategyHeader strtgy = this.tradingData.Get <IEnumerable <StrategyHeader> >().Single(s => s.Id == 1);

            Signal sgnl = new Signal(strtgy, BrokerDateTime.Make(DateTime.Now), TradeAction.Sell, OrderType.Market, 140000, 0, 0);

            this.tradingData.Get <ICollection <Signal> >().Add(sgnl);

            Order ordr = new Order(sgnl);

            this.tradingData.Get <ICollection <Order> >().Add(ordr);

            OrderDeliveryConfirmation cnfrmtn = new OrderDeliveryConfirmation(ordr, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(cnfrmtn);
            Assert.IsTrue(ordr.IsDelivered);

            Trade trd = new Trade(ordr, ordr.Portfolio, ordr.Symbol, 1430000, -ordr.Amount, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(trd);
            Assert.AreEqual(1, this.tradingData.Get <IEnumerable <Position> >().Count());


            StrategyHeader strategy2 = this.tradingData.Get <IEnumerable <StrategyHeader> >().Single(s => s.Id == 2);

            Signal signal2 = new Signal(strategy2, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Market, 31000, 0, 0);

            this.tradingData.Get <ICollection <Signal> >().Add(signal2);

            Order order2 = new Order(signal2);

            this.tradingData.Get <ICollection <Order> >().Add(order2);

            OrderDeliveryConfirmation confirmation2 = new OrderDeliveryConfirmation(order2, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(confirmation2);
            Assert.IsTrue(order2.IsDelivered);

            Trade trade2 = new Trade(order2, order2.Portfolio, order2.Symbol, 31000, order2.Amount, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(trade2);
            Assert.AreEqual(2, this.tradingData.Get <IEnumerable <Position> >().Count());


            StrategyHeader strategy3 = this.tradingData.Get <IEnumerable <StrategyHeader> >().Single(s => s.Id == 3);

            Signal signal3 = new Signal(strategy3, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Market, 41000, 0, 0);

            this.tradingData.Get <ICollection <Signal> >().Add(signal3);

            Order order3 = new Order(signal3);

            this.tradingData.Get <ICollection <Order> >().Add(order3);

            OrderDeliveryConfirmation confirmation3 = new OrderDeliveryConfirmation(order3, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <OrderDeliveryConfirmation> >().Add(confirmation3);
            Assert.IsTrue(order3.IsDelivered);

            Trade trade3 = new Trade(order3, order3.Portfolio, order3.Symbol, 41000, order3.Amount, BrokerDateTime.Make(DateTime.Now));

            this.tradingData.Get <ObservableHashSet <Trade> >().Add(trade3);
            Assert.AreEqual(3, this.tradingData.Get <IEnumerable <Position> >().Count());


            this.qProvider.Update(0, "RTS-12.13_FT", 144990, 20, 145000, 100);
            this.qProvider.Update(0, "Si-12.13_FT", 32000, 50, 32001, 40);
            this.qProvider.Update(0, "Eu-12.13_FT", 44000, 30, 44001, 0);

            Assert.AreEqual(6, this.tradingData.Get <IEnumerable <Signal> >().Count());
            Assert.AreEqual(6, this.tradingData.Get <IEnumerable <Order> >().Count());
            Assert.AreEqual(TradeAction.Buy, this.tradingData.Make <Order>().ElementAt(3).TradeAction);
            Assert.AreEqual(TradeAction.Sell, this.tradingData.Make <Order>().ElementAt(4).TradeAction);
            Assert.AreEqual(TradeAction.Sell, this.tradingData.Make <Order>().ElementAt(5).TradeAction);

            foreach (Order o in this.tradingData.Make <Order>())
            {
                Assert.AreEqual(OrderType.Market, o.OrderType);
            }
        }