Пример #1
0
        public OrderTick GetPrice(Side side, ExchangePrices prices)
        {
            if (prices == null)
            {
                throw new System.Exception();
            }

            var stakeProvider = _openingStakeProviderFactory.GetStakeProvider("Fixed");

            if (side == Side.BACK)
            {
                var openingPrices = prices.AvailableToBack.OrderByDescending(x => x.Price).ToList();
                ValidateHasPrices(openingPrices);
                return(GetOrderTick(stakeProvider, openingPrices));
            }
            else if (side == Side.LAY)
            {
                var openingPrices = prices.AvailableToLay.OrderBy(x => x.Price).ToList();
                ValidateHasPrices(openingPrices);
                return(GetOrderTick(stakeProvider, openingPrices));
            }
            else
            {
                throw new System.Exception();
            }
        }
        public void ShouldThrowExceptionIfPricesAreNull()
        {
            var provider = new Mock <IOpeningStakeProvider>();

            provider.Setup(x => x.GetStake(It.IsAny <double>(), It.IsAny <List <double> >())).Returns(1);

            var mockStakeFactory = new Mock <IOpeningStakeProviderFactory>();

            mockStakeFactory.Setup(x => x.GetStakeProvider(It.IsAny <string>())).Returns(provider.Object);

            var prices = new ExchangePrices()
            {
                AvailableToBack = new List <PriceSize>()
                {
                    new PriceSize()
                    {
                        Price = 1,
                        Size  = 2
                    }
                },
                AvailableToLay = new List <PriceSize>()
                {
                    new PriceSize()
                    {
                        Price = 5,
                        Size  = 10
                    }
                }
            };

            var finder = new OrderPriceFinder(mockStakeFactory.Object);

            Assert.ThrowsException <System.Exception>(() => finder.GetPrice(TradePlacement.Models.Side.BACK, null));
        }
Пример #3
0
        public void EqualExchangePricesAreEqual()
        {
            //arange
            ExchangePrices first_ep  = GetStandartObject();
            ExchangePrices second_ep = GetStandartObject();

            //act
            bool equal = first_ep.Equals(second_ep);

            //assert
            Assert.IsTrue(equal);
        }
Пример #4
0
        public void AvailableToLayCountsAreCorrect()
        {
            //arange
            ExchangePrices first_ep = GetStandartObject();
            PrivateObject  pr       = new PrivateObject(first_ep);

            ExchangePrices second_ep = GetStandartObject();

            //act
            bool equal = (bool)pr.Invoke("isOverExchangePricesHasEqualCount",
                                         first_ep.AvailableToLay.Count, second_ep.AvailableToLay.Count);

            //assert
            Assert.IsTrue(equal);
        }
Пример #5
0
        public void AvailableToBackPriceSizesAreEqualCorrect()
        {
            //arange
            ExchangePrices first_ep = GetStandartObject();
            PrivateObject  pr       = new PrivateObject(first_ep);

            ExchangePrices second_ep = GetStandartObject();

            //act
            bool equal = (bool)pr.Invoke("isPriceSizeCollectionsEqual",
                                         first_ep.AvailableToBack, second_ep.AvailableToBack);

            //assert
            Assert.IsTrue(equal);
        }
Пример #6
0
        public void IsNotNullCorrect()
        {
            //arrange
            ExchangePrices first_ep = new ExchangePrices();
            PrivateObject  pr       = new PrivateObject(first_ep);

            ExchangePrices second_ep = new ExchangePrices()
            {
                AvailableToBack = new ObservableCollection <PriceSize>
                {
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    },
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    },
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    }
                },

                AvailableToLay = new ObservableCollection <PriceSize>
                {
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    },
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    },
                    new PriceSize()
                    {
                        Price = 1.0, Size = 100.0
                    }
                }
            };

            //act
            bool equal = (bool)pr.Invoke("isOverExchangePricesNotNull", second_ep);

            //correct
            Assert.IsTrue(equal);
        }
        private void _fillMissingData(ExchangePrices ep)
        {
            if (ep == null)
            {
                ep = new ExchangePrices();
            }

            if (ep.AvailableToBack == null)
            {
                ep.AvailableToBack = new ObservableCollection <PriceSize>();
            }

            if (ep.AvailableToLay == null)
            {
                ep.AvailableToLay = new ObservableCollection <PriceSize>();
            }

            if (ep.TradedVolume == null)
            {
                ep.TradedVolume = new ObservableCollection <PriceSize>();
            }

            if (ep.AvailableToBack.Count < 3)
            {
                AddPriceSize(ep.AvailableToBack, 1.01, 3 - ep.AvailableToBack.Count);
            }

            if (ep.AvailableToLay.Count < 3)
            {
                AddPriceSize(ep.AvailableToLay, 1000, 3 - ep.AvailableToLay.Count);
            }

            if (ep.TradedVolume.Count < 3)
            {
                AddPriceSize(ep.TradedVolume, 0, 3);
            }
        }