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