Ejemplo n.º 1
0
        public void ignore_OrderMoveSucceeded_if_request_already_confirmed_test()
        {
            Signal signal = new Signal(this.strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Limit, 150000, 0, 150000);

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

            Order order = new Order(signal);

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

            OrderMoveRequest request = new OrderMoveRequest(order, 151000, 0, "Move order");

            this.tradingData.Get <ICollection <OrderMoveRequest> >().Add(request);

            Assert.IsFalse(request.IsDelivered);

            OrderMoveSucceeded confirmation = new OrderMoveSucceeded(request.OrderId, "588");

            this.rawData.GetData <OrderMoveSucceeded>().Add(confirmation);

            Assert.IsTrue(request.IsDelivered);

            OrderMoveSucceeded duplicate = new OrderMoveSucceeded(request.OrderId, "588");

            duplicate.DateTime = duplicate.DateTime.AddMilliseconds(1);
            this.rawData.GetData <OrderMoveSucceeded>().Add(duplicate);

            Assert.AreNotEqual(request.DeliveryDate, duplicate.DateTime);
            Assert.AreEqual(request.DeliveryDate, confirmation.DateTime);
        }
Ejemplo n.º 2
0
        public override void OnItemAdded(OrderMoveFailed item)
        {
            Order order = FindOrder(item.Cookie);

            if (order == null)
            {
                return;
            }

            OrderMoveRequest request = FindRequest(order);

            if (request == null)
            {
                return;
            }

            if (request.IsFailed)
            {
                return;
            }

            request.Failed(BrokerDateTime.Make(DateTime.Now), item.Reason);

            this.logger.Log(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, получено уведомление об отклонении запроса {2} на сдвиг заявки.",
                                          BrokerDateTime.Make(DateTime.Now),
                                          this.GetType().Name,
                                          request.ToString()));
        }
Ejemplo n.º 3
0
        public void OrderMoveRequest_Failed_test()
        {
            DateTime date = BrokerDateTime.Make(DateTime.Now).Date;

            double stopPrice = 149900;

            double limitPrice = 0;

            string description = "Move order";

            Order order = new Order(1, DateTime.Now, "BP12345-RF-01", "RTS-12.13_FT", TradeAction.Sell, OrderType.Stop, 1, 0, 150000);

            OrderMoveRequest request = new OrderMoveRequest(order, limitPrice, stopPrice, description);

            Assert.IsFalse(request.IsFailed);

            DateTime faultDate   = BrokerDateTime.Make(DateTime.Now);
            string   faultReason = "Fault";

            request.Failed(faultDate, faultReason);

            Assert.AreEqual(faultDate, request.FaultDate);
            Assert.AreEqual(faultReason, request.FaultDescription);
            Assert.IsTrue(request.IsFailed);
        }
Ejemplo n.º 4
0
        public void OrderMoveRequest_constructor_test()
        {
            DateTime date = BrokerDateTime.Make(DateTime.Now).Date;

            double stopPrice = 149900;

            double limitPrice = 0;

            string description = "Move order";

            Order order = new Order(1, DateTime.Now, "BP12345-RF-01", "RTS-12.13_FT", TradeAction.Sell, OrderType.Stop, 1, 0, 150000);

            OrderMoveRequest request = new OrderMoveRequest(order, limitPrice, stopPrice, description);

            Assert.IsTrue(request.Id > 0);
            Assert.AreEqual(order, request.Order);
            Assert.AreEqual(order.Id, request.OrderId);
            Assert.AreEqual(limitPrice, request.LimitPrice);
            Assert.AreEqual(stopPrice, request.StopPrice);
            Assert.AreEqual(description, request.Description);
            Assert.AreEqual(date, request.DateTime.Date);
            Assert.AreEqual(DateTime.MinValue, request.DeliveryDate);
            Assert.AreEqual(DateTime.MinValue, request.FaultDate);
            Assert.AreEqual(request.DateTime.AddSeconds(60), request.ExpirationDate);
            Assert.AreEqual(string.Empty, request.FaultDescription);
            Assert.IsFalse(request.IsExpired);
            Assert.IsFalse(request.IsDelivered);
            Assert.IsFalse(request.IsFailed);
        }
        public void ignore_duplicated_OrderMoveFailed_test()
        {
            Signal signal = new Signal(this.strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Limit, 150000, 0, 150000);

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

            Order order = new Order(signal);

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

            OrderMoveRequest request = new OrderMoveRequest(order, 151000, 0, "Move order");

            this.tradingData.Get <ICollection <OrderMoveRequest> >().Add(request);

            Assert.IsFalse(request.IsFailed);

            OrderMoveFailed fault = new OrderMoveFailed(order.Id, "268", "Reason");

            this.rawData.GetData <OrderMoveFailed>().Add(fault);

            Assert.IsTrue(request.IsFailed);

            OrderMoveFailed duplicate = new OrderMoveFailed(order.Id, "268", "Reason duplicate");

            this.rawData.GetData <OrderMoveFailed>().Add(duplicate);

            Assert.AreEqual(request.FaultDescription, fault.Reason);
            Assert.AreNotEqual(request.FaultDescription, duplicate.Reason);
        }
Ejemplo n.º 6
0
        public override void OnItemAdded(OrderMoveSucceeded item)
        {
            Order order = FindOrder(item.Cookie);

            if (order == null)
            {
                return;
            }

            OrderMoveRequest request = FindRequest(order);

            if (request == null)
            {
                return;
            }

            if (request.IsDelivered)
            {
                return;
            }

            request.DeliveryDate = item.DateTime;
            this.logger.Log(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, получено уведомление об успешной доставке запроса {2} на сдвиг заявки.",
                                          BrokerDateTime.Make(DateTime.Now),
                                          this.GetType().Name,
                                          request.ToString()));
        }
Ejemplo n.º 7
0
        public void Move(OrderMoveRequest Move)
        {
            RestRequest   elm  = CreateRequest <OrderMoveRequest>("Orders/Move", Method.POST, Move);
            IRestResponse resp = Client.Execute(elm);

            if (resp.StatusCode == HttpStatusCode.Unauthorized)
            {
                throw new UnauthorizedException();
            }
            else if (resp.StatusCode != HttpStatusCode.OK)
            {
                throw new eDockAPIException();
            }
        }
Ejemplo n.º 8
0
        public void ConfirmMoveRequest_on_OrderMoveSucceeded_test()
        {
            Signal signal = new Signal(this.strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Limit, 150000, 0, 150000);

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

            Order order = new Order(signal);

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

            OrderMoveRequest request = new OrderMoveRequest(order, 151000, 0, "Move order");

            this.tradingData.Get <ICollection <OrderMoveRequest> >().Add(request);

            Assert.IsFalse(request.IsDelivered);

            OrderMoveSucceeded confirmation = new OrderMoveSucceeded(request.OrderId, "588");

            this.rawData.GetData <OrderMoveSucceeded>().Add(confirmation);

            Assert.IsTrue(request.IsDelivered);
        }
        public void RejectMoveRequest_on_OrderMoveFailed_test()
        {
            Signal signal = new Signal(this.strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Limit, 150000, 0, 150000);

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

            Order order = new Order(signal);

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

            OrderMoveRequest request = new OrderMoveRequest(order, 151000, 0, "Move order");

            this.tradingData.Get <ICollection <OrderMoveRequest> >().Add(request);

            Assert.IsFalse(request.IsFailed);

            OrderMoveFailed fault = new OrderMoveFailed(order.Id, "268", "Reason");

            this.rawData.GetData <OrderMoveFailed>().Add(fault);

            Assert.IsTrue(request.IsFailed);
        }
Ejemplo n.º 10
0
        public void TradingDataContext_GetMoveRequests_for_order_test()
        {
            Signal signal = new Signal(this.strategyHeader, BrokerDateTime.Make(DateTime.Now), TradeAction.Buy, OrderType.Market, 150000, 0, 0);

            EmulateTradeFor(signal);

            Assert.AreEqual(2, this.tradingData.Get <IEnumerable <Signal> >().Count());

            Order slOrder = this.tradingData.GetCloseOrders(this.strategyHeader).Last();

            Assert.AreEqual(OrderType.Stop, slOrder.OrderType);
            Assert.AreEqual(149900, slOrder.Stop);

            OrderMoveRequest slMoveReq = new OrderMoveRequest(slOrder, 0, 150000, "Trail stop");

            this.tradingData.Get <ObservableCollection <OrderMoveRequest> >().Add(slMoveReq);

            OrderMoveRequest slMoveReq2 = new OrderMoveRequest(slOrder, 0, 150100, "Trail stop");

            this.tradingData.Get <ObservableCollection <OrderMoveRequest> >().Add(slMoveReq2);

            Assert.AreEqual(2, this.tradingData.GetMoveRequests(slOrder).Count());
        }