Example #1
0
        public void CanUpdateOrderTest()
        {
            BrokerageMessageEvent message;

            Assert.AreEqual(false, _unit.CanUpdateOrder(GDAXTestsHelpers.GetSecurity(), Mock.Of <QuantConnect.Orders.Order>(),
                                                        new QuantConnect.Orders.UpdateOrderRequest(DateTime.UtcNow, 1, new QuantConnect.Orders.UpdateOrderFields()), out message));
        }
        public void FeeModelReturnsCorrectOrderFeeForMakerLimitOrdersMinuteResolution()
        {
            var time     = new DateTime(2018, 4, 10);
            var security = GDAXTestsHelpers.GetSecurity();

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new TradeBar {
                Symbol = security.Symbol, Close = 5000m, EndTime = time.AddSeconds(75)
            });

            var orderFee = security.FeeModel.GetOrderFee(new OrderFeeParameters(
                                                             security, new LimitOrder(security.Symbol, 1, 4999.99m, time)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            }));

            Assert.AreEqual(0, orderFee.Value.Amount);
            Assert.AreEqual(Currencies.USD, orderFee.Value.Currency);

            orderFee = security.FeeModel.GetOrderFee(new OrderFeeParameters(
                                                         security, new LimitOrder(security.Symbol, -1, 5000.01m, time)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            }));

            Assert.AreEqual(0, orderFee.Value.Amount);
            Assert.AreEqual(Currencies.USD, orderFee.Value.Currency);
        }
        public void FeeModelReturnsCorrectOrderFeeForTakerLimitOrdersMinuteResolution()
        {
            var time     = new DateTime(2018, 4, 10);
            var security = GDAXTestsHelpers.GetSecurity();

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new TradeBar {
                Symbol = security.Symbol, Close = 5000m, EndTime = time.AddMinutes(1)
            });

            var orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5000m, time)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(15m, orderFee);

            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5050m, time)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(15m, orderFee);

            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, -1, 4950m, time)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(15m, orderFee);
        }
        public void FeeModelReturnsCorrectOrderFeeForTakerLimitOrdersTickResolution()
        {
            var security = GDAXTestsHelpers.GetSecurity(resolution: Resolution.Tick);

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new Tick {
                Symbol = security.Symbol, Value = 5000m
            });
            var orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5000.01m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            // marketable buy limit fill at 5000
            Assert.AreEqual(15m, orderFee);

            security.SetMarketPrice(new Tick {
                Symbol = security.Symbol, BidPrice = 5000m, AskPrice = 5000.01m, TickType = TickType.Quote
            });
            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5000.01m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            // marketable buy limit fill at 5000.01
            Assert.AreEqual(15.00003m, orderFee);

            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, -1, 5000m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            // marketable sell limit fill at 5000
            Assert.AreEqual(15m, orderFee);
        }
        public void FeeModelReturnsCorrectOrderFeeForMakerLimitOrdersTickResolution()
        {
            var security = GDAXTestsHelpers.GetSecurity(resolution: Resolution.Tick);

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new Tick {
                Symbol = security.Symbol, Value = 5000m
            });

            var orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 4999.99m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(0, orderFee);

            security.SetMarketPrice(new Tick {
                Symbol = security.Symbol, BidPrice = 5000m, AskPrice = 5000.01m
            });
            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5000m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(0, orderFee);

            orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, -1, 5000.01m, DateTime.MinValue)
            {
                OrderSubmissionData = new OrderSubmissionData(security.BidPrice, security.AskPrice, security.Price)
            });

            Assert.AreEqual(0, orderFee);
        }
Example #6
0
        public void CanSubmit_CertainOrderTypes(OrderType orderType, bool isValidOrderType)
        {
            BrokerageMessageEvent message;
            var security = GDAXTestsHelpers.GetSecurity();
            var order    = Order.CreateOrder(new SubmitOrderRequest(orderType, SecurityType.Crypto, security.Symbol, 10.0m, 1.0m, 10.0m, DateTime.Now, "Test Order"));

            Assert.AreEqual(isValidOrderType, _unit.CanSubmitOrder(security, order, out message));
        }
Example #7
0
        public void CanOnlySubmitCryptoOrders(SecurityType securityType, bool isValidSecurityType)
        {
            BrokerageMessageEvent message;
            var order = new Mock <QuantConnect.Orders.Order>();

            order.Object.Quantity = 10.0m;

            Assert.AreEqual(isValidSecurityType, _unit.CanSubmitOrder(GDAXTestsHelpers.GetSecurity(1.0m, securityType), order.Object, out message));
        }
Example #8
0
        public void CanSubmitOrder_WhenQuantityIsLargeEnough(decimal orderQuantity, bool isValidOrderQuantity)
        {
            BrokerageMessageEvent message;
            var order = new Mock <QuantConnect.Orders.Order>();

            order.Object.Quantity = orderQuantity;

            Assert.AreEqual(isValidOrderQuantity, _unit.CanSubmitOrder(GDAXTestsHelpers.GetSecurity(), order.Object, out message));
        }
        public void CanSubmit_CertainOrderTypes(OrderType orderType, int year, int month, int day, int hour, int minute, int second, bool isValidOrderType)
        {
            var utcTime = new DateTime(year, month, day, hour, minute, second);

            BrokerageMessageEvent message;
            var security = GDAXTestsHelpers.GetSecurity();
            var order    = Order.CreateOrder(new SubmitOrderRequest(orderType, SecurityType.Crypto, security.Symbol, 10.0m, 1.0m, 10.0m, utcTime, "Test Order"));

            Assert.AreEqual(isValidOrderType, _unit.CanSubmitOrder(security, order, out message));
        }
Example #10
0
        public void FeeModelReturnsCorrectOrderFeeForMakerOrder()
        {
            var security = GDAXTestsHelpers.GetSecurity();

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new TradeBar {
                Symbol = security.Symbol, Close = 5000m
            });
            var orderFee = security.FeeModel.GetOrderFee(security, new LimitOrder(security.Symbol, 1, 5000m, DateTime.MinValue));

            Assert.AreEqual(0, orderFee);
        }
Example #11
0
        public void CanSubmitOrderTest(bool isUpdate)
        {
            BrokerageMessageEvent message;
            var order = new Mock <QuantConnect.Orders.Order>();

            if (isUpdate)
            {
                order.Object.BrokerId = new List <string>()
                {
                    "abc123"
                };
            }

            Assert.AreEqual(!isUpdate, _unit.CanSubmitOrder(GDAXTestsHelpers.GetSecurity(), order.Object, out message));
        }
        public void FeeModelReturnsCorrectOrderFeeForTakerMarketOrder()
        {
            var security = GDAXTestsHelpers.GetSecurity();

            security.FeeModel = new GDAXFeeModel();
            security.SetMarketPrice(new TradeBar {
                Symbol = security.Symbol, Close = 5000m
            });
            var orderFee = security.FeeModel.GetOrderFee(new OrderFeeParameters(
                                                             security,
                                                             new MarketOrder(security.Symbol, 1, DateTime.MinValue)));

            Assert.AreEqual(15m, orderFee.Value.Amount);
            Assert.AreEqual(Currencies.USD, orderFee.Value.Currency);
        }
Example #13
0
 public void GetFeeModelTest()
 {
     Assert.IsInstanceOf <GDAXFeeModel>(_unit.GetFeeModel(GDAXTestsHelpers.GetSecurity()));
 }
Example #14
0
 public void GetLeverageTest()
 {
     Assert.AreEqual(3, _unit.GetLeverage(GDAXTestsHelpers.GetSecurity()));
 }
 public void GetBuyingPowerModelTest()
 {
     Assert.IsInstanceOf <CashBuyingPowerModel>(_unit.GetBuyingPowerModel(GDAXTestsHelpers.GetSecurity()));
 }