public void Minus_1_value_equals_to_Unlimited() { var value = new DepthLevel(-1); var expected = DepthLevel.Unlimited; Assert.True(value == expected); Assert.Equal(value, expected); }
public void Zero_value_equals_to_default() { var value = new DepthLevel(0); var expected = default(DepthLevel); Assert.True(value == expected); Assert.Equal(value, expected); }
public void Minus_2_value_equals_to_Excluded() { var value = new DepthLevel(-2); var expected = DepthLevel.Excluded; Assert.True(value == expected); Assert.Equal(value, expected); }
public RenderPanel(int x, int y, int width, int height, DepthLevel depth = DepthLevel.Medium) { _panelSpriteBatch = new SpriteBatch(Singleton.Device); _sprites = new List<IDrawableSprite>(); _buffers = new List<IDrawableBuffer>(); _depth = (float) depth/10; _renderPanels.Add(this); _renderTarget = new RenderTarget2D(Singleton.Device, width, height, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8); _position = new Vector2(x, y); BoundingBox = new Rectangle(x, y, width, height); }
public void GetRateTest_ChecksTheRateForTheGivenCurrencyPairAfterSubmittingDepthLevels_ChecksTheRateReturnedToVerify() { MarketController marketController = (MarketController)_applicationContext["MarketController"]; BBOMemoryImage bboMemoryImage = (BBOMemoryImage)_applicationContext["BBOMemoryImage"]; DepthLevel bidLevel1 = new DepthLevel(new Price(491)); DepthLevel bidLevel2 = new DepthLevel(new Price(492)); DepthLevel bidLevel3 = new DepthLevel(new Price(493)); DepthLevel askLevel1 = new DepthLevel(new Price(494)); DepthLevel askLevel2 = new DepthLevel(new Price(495)); DepthLevel askLevel3 = new DepthLevel(new Price(496)); bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel1, askLevel1); IHttpActionResult httpActionResult = marketController.GetRate("XBT/USD"); OkNegotiatedContentResult <Rate> returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; Rate rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(492.5, rate.RateValue); // MidPoint of bidLevel1 = 491 & askLevel1 = 494 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel2, askLevel2); httpActionResult = marketController.GetRate("XBT/USD"); returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(493.5, rate.RateValue); // MidPoint of bidLevel2 = 492 & askLevel2 = 495 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel3, askLevel3); httpActionResult = marketController.GetRate("XBT/USD"); returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(494.5, rate.RateValue); // MidPoint of bidLevel3 = 493 & askLevel3 = 496 }
public static bool VerifyDepth(DepthLevel level, Price price, int count, Quantity quantity) { var matched = true; if (level.Price != price) { matched = false; } if (level.OrderCount != count) { matched = false; } if (level.AggregateQty != quantity) { matched = false; } if (level.IsExcess) { matched = false; } return(matched); }
public void AddRatesForMultiplkeCurrenciesTest_AddRatesForMultipleCurrenciesAndExpectsAListOfRates_VerifiesThroughTheReturnedRateList() { BBOMemoryImage bboMemoryImage = new BBOMemoryImage(); DepthLevel xbtUsdBidLevel = new DepthLevel(new Price(491)); DepthLevel ltcUsdBidLevel = new DepthLevel(new Price(492)); DepthLevel btcUsdBidLevel = new DepthLevel(new Price(493)); DepthLevel xbtUsdAskLevel = new DepthLevel(new Price(494)); DepthLevel ltcUsdAskLevel = new DepthLevel(new Price(495)); DepthLevel btcUsdAskLevel = new DepthLevel(new Price(496)); bboMemoryImage.OnBBOArrived("XBT/USD", xbtUsdBidLevel, xbtUsdAskLevel); bboMemoryImage.OnBBOArrived("LTC/USD", ltcUsdBidLevel, ltcUsdAskLevel); bboMemoryImage.OnBBOArrived("BTC/USD", btcUsdBidLevel, btcUsdAskLevel); Assert.AreEqual("XBT/USD", bboMemoryImage.RatesList.ToList()[0].CurrencyPair); Assert.AreEqual(492.5, bboMemoryImage.RatesList.ToList()[0].RateValue); // MidPoint of xbtUsdBidLevel = 491 & xbtUsdAskLevel = 494 Assert.AreEqual("LTC/USD", bboMemoryImage.RatesList.ToList()[1].CurrencyPair); Assert.AreEqual(493.5, bboMemoryImage.RatesList.ToList()[1].RateValue); // MidPoint of ltcUsdBidLevel = 492 & ltcUsdAskLevel = 495 Assert.AreEqual("BTC/USD", bboMemoryImage.RatesList.ToList()[2].CurrencyPair); Assert.AreEqual(494.5, bboMemoryImage.RatesList.ToList()[2].RateValue); // MidPoint of btcUsdBidLevel = 493 & btcUsdAskLevel = 496 }
public void GetBboTest_ChecksIfTheBboIsRetreivedSuccessfully_ReturnsBboForCurrencypairIfPresent() { BBOMemoryImage bboMemoryImage = new BBOMemoryImage(); MarketDataQueryService queryService = new MarketDataQueryService(null, null, bboMemoryImage, null, null); DepthLevel bestBid = new DepthLevel(new Price(491)); bestBid.IncreaseVolume(new Volume(100)); DepthLevel bestAsk = new DepthLevel(new Price(492)); bestAsk.IncreaseVolume(new Volume(200)); bboMemoryImage.OnBBOArrived("BTCUSD", bestBid, bestAsk); BBORepresentation bboRepresentation = queryService.GetBBO("BTCUSD"); Assert.IsNotNull(bboRepresentation); Assert.AreEqual(bestBid.Price.Value, bboRepresentation.BestBidPrice); Assert.AreEqual(bestBid.AggregatedVolume.Value, bboRepresentation.BestBidVolume); Assert.AreEqual(bestBid.OrderCount, bboRepresentation.BestBidOrderCount); Assert.AreEqual(bestAsk.Price.Value, bboRepresentation.BestAskPrice); Assert.AreEqual(bestAsk.AggregatedVolume.Value, bboRepresentation.BestAskVolume); Assert.AreEqual(bestAsk.OrderCount, bboRepresentation.BestAskOrderCount); }
public bool VerifyDepth(DepthLevel depthLevel, Price price, int count, Volume volume) { bool matched = true; if (depthLevel.Price != null) { if (!depthLevel.Price.Equals(price)) { Console.WriteLine("Price = " + depthLevel.Price.Value); matched = false; } if (depthLevel.OrderCount != count) { Console.WriteLine("OrderCount = " + depthLevel.OrderCount); matched = false; } if (depthLevel.AggregatedVolume != null && !depthLevel.AggregatedVolume.Equals(volume)) { Console.WriteLine("Volume = " + depthLevel.AggregatedVolume.Value); matched = false; } } return(matched); }
public void AddRateTest_TestIfTheRateForACurrencyPairIsAsExpected_VerifiesThroughTheReturnedRate() { BBOMemoryImage bboMemoryImage = new BBOMemoryImage(); DepthLevel bidLevel1 = new DepthLevel(new Price(491)); DepthLevel bidLevel2 = new DepthLevel(new Price(492)); DepthLevel bidLevel3 = new DepthLevel(new Price(493)); DepthLevel askLevel1 = new DepthLevel(new Price(494)); DepthLevel askLevel2 = new DepthLevel(new Price(495)); DepthLevel askLevel3 = new DepthLevel(new Price(496)); bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel1, askLevel1); Assert.AreEqual("XBT/USD", bboMemoryImage.RatesList.ToList()[0].CurrencyPair); Assert.AreEqual(492.5, bboMemoryImage.RatesList.ToList()[0].RateValue); // MidPoint of bidLevel1 = 491 & askLevel1 = 494 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel2, askLevel2); Assert.AreEqual("XBT/USD", bboMemoryImage.RatesList.ToList()[0].CurrencyPair); Assert.AreEqual(493.5, bboMemoryImage.RatesList.ToList()[0].RateValue); // MidPoint of bidLevel2 = 492 & askLevel2 = 495 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel3, askLevel3); Assert.AreEqual("XBT/USD", bboMemoryImage.RatesList.ToList()[0].CurrencyPair); Assert.AreEqual(494.5, bboMemoryImage.RatesList.ToList()[0].RateValue); // MidPoint of bidLevel3 = 493 & askLevel3 = 496 }
public void BboAddTest_ChecksWhetherTheBestBidAndOfferAreAddedSuccessfully_VerifiesBBoListFromMEmoryImage() { BBOMemoryImage bboMemoryImage = new BBOMemoryImage(); DepthLevel bestBid = new DepthLevel(new Price(491)); bestBid.IncreaseVolume(new Volume(600)); bestBid.UpdateOrderCount(1); DepthLevel bestAsk = new DepthLevel(new Price(496)); bestAsk.IncreaseVolume(new Volume(500)); bestAsk.UpdateOrderCount(1); bboMemoryImage.OnBBOArrived("XTCUSD", bestBid, bestAsk); Assert.AreEqual(1, bboMemoryImage.BBORepresentationList.Count()); Assert.AreEqual(491, bboMemoryImage.BBORepresentationList.First().BestBidPrice); Assert.AreEqual(496, bboMemoryImage.BBORepresentationList.First().BestAskPrice); Assert.AreEqual(600, bboMemoryImage.BBORepresentationList.First().BestBidVolume); Assert.AreEqual(500, bboMemoryImage.BBORepresentationList.First().BestAskVolume); Assert.AreEqual(1, bboMemoryImage.BBORepresentationList.First().BestBidOrderCount); Assert.AreEqual(1, bboMemoryImage.BBORepresentationList.First().BestAskOrderCount); }
public void Default_level_is_Level() { var value = new DepthLevel(); Assert.True(value.Level == DepthLevel.LevelType.Level); }
public void Value_matches_ToString(short value, string expected) { var actual = new DepthLevel(value).ToString(); Assert.Equal(expected, actual); }
public void Default_value_is_zero() { var value = new DepthLevel(); Assert.True(value.Value == 0); }
public void LastAskRemovedTest_TestsIfTheLastAskIsRemovedFromTheMemorymagesListOfDepths_VerifiesusingMemoryImagesAskBook() { DepthMemoryImage depthMemoryImage = new DepthMemoryImage(); Depth depth = new Depth(CurrencyConstants.BtcUsd, 5); depth.AddOrder(new Price(491), new Volume(100), OrderSide.Buy); depth.AddOrder(new Price(498), new Volume(800), OrderSide.Buy); depth.AddOrder(new Price(493), new Volume(300), OrderSide.Buy); depth.AddOrder(new Price(496), new Volume(600), OrderSide.Buy); depth.AddOrder(new Price(491), new Volume(100), OrderSide.Sell); depth.AddOrder(new Price(498), new Volume(800), OrderSide.Sell); depth.AddOrder(new Price(493), new Volume(300), OrderSide.Sell); depth.AddOrder(new Price(496), new Volume(600), OrderSide.Sell); // Checks first and last bid prices Assert.AreEqual(498, depth.BidLevels[0].Price.Value); Assert.AreEqual(491, depth.BidLevels[3].Price.Value); // Checks first and last ask prices Assert.AreEqual(491, depth.AskLevels[0].Price.Value); Assert.AreEqual(498, depth.AskLevels[3].Price.Value); depthMemoryImage.OnDepthArrived(depth); Assert.AreEqual(1, depthMemoryImage.BidDepths.Count()); Assert.AreEqual(1, depthMemoryImage.AskDepths.Count()); // Bids in DepthMemoryImage Assert.AreEqual(800, depthMemoryImage.BidDepths.First().Value.DepthLevels[0].Volume); Assert.AreEqual(498, depthMemoryImage.BidDepths.First().Value.DepthLevels[0].Price); Assert.AreEqual(1, depthMemoryImage.BidDepths.First().Value.DepthLevels[0].OrderCount); Assert.AreEqual(600, depthMemoryImage.BidDepths.First().Value.DepthLevels[1].Volume); Assert.AreEqual(496, depthMemoryImage.BidDepths.First().Value.DepthLevels[1].Price); Assert.AreEqual(1, depthMemoryImage.BidDepths.First().Value.DepthLevels[1].OrderCount); Assert.AreEqual(300, depthMemoryImage.BidDepths.First().Value.DepthLevels[2].Volume); Assert.AreEqual(493, depthMemoryImage.BidDepths.First().Value.DepthLevels[2].Price); Assert.AreEqual(1, depthMemoryImage.BidDepths.First().Value.DepthLevels[2].OrderCount); Assert.AreEqual(100, depthMemoryImage.BidDepths.First().Value.DepthLevels[3].Volume); Assert.AreEqual(491, depthMemoryImage.BidDepths.First().Value.DepthLevels[3].Price); Assert.AreEqual(1, depthMemoryImage.BidDepths.First().Value.DepthLevels[3].OrderCount); // Asks in DepthMemoryImage Assert.AreEqual(100, depthMemoryImage.AskDepths.First().Value.DepthLevels[0].Volume); Assert.AreEqual(491, depthMemoryImage.AskDepths.First().Value.DepthLevels[0].Price); Assert.AreEqual(1, depthMemoryImage.AskDepths.First().Value.DepthLevels[0].OrderCount); Assert.AreEqual(300, depthMemoryImage.AskDepths.First().Value.DepthLevels[1].Volume); Assert.AreEqual(493, depthMemoryImage.AskDepths.First().Value.DepthLevels[1].Price); Assert.AreEqual(1, depthMemoryImage.AskDepths.First().Value.DepthLevels[1].OrderCount); Assert.AreEqual(600, depthMemoryImage.AskDepths.First().Value.DepthLevels[2].Volume); Assert.AreEqual(496, depthMemoryImage.AskDepths.First().Value.DepthLevels[2].Price); Assert.AreEqual(1, depthMemoryImage.AskDepths.First().Value.DepthLevels[2].OrderCount); Assert.AreEqual(800, depthMemoryImage.AskDepths.First().Value.DepthLevels[3].Volume); Assert.AreEqual(498, depthMemoryImage.AskDepths.First().Value.DepthLevels[3].Price); Assert.AreEqual(1, depthMemoryImage.AskDepths.First().Value.DepthLevels[3].OrderCount); DepthLevel depthLevel498 = depth.FindLevel(new Price(498), OrderSide.Sell, depth.AskLevels); depth.EraseLevel(depthLevel498, OrderSide.Sell); DepthLevel depthLevel496 = depth.FindLevel(new Price(496), OrderSide.Sell, depth.AskLevels); depth.EraseLevel(depthLevel496, OrderSide.Sell); DepthLevel depthLevel493 = depth.FindLevel(new Price(493), OrderSide.Sell, depth.AskLevels); depth.EraseLevel(depthLevel493, OrderSide.Sell); DepthLevel depthLevel491 = depth.FindLevel(new Price(491), OrderSide.Sell, depth.AskLevels); depth.EraseLevel(depthLevel491, OrderSide.Sell); // Checks first and last bid prices Assert.AreEqual(498, depth.BidLevels[0].Price.Value); Assert.AreEqual(491, depth.BidLevels[3].Price.Value); // Checks first and last ask prices Assert.AreEqual(null, depth.AskLevels[0].Price); Assert.AreEqual(null, depth.AskLevels[3].Price); depthMemoryImage.OnDepthArrived(depth); Assert.AreEqual(1, depthMemoryImage.BidDepths.Count()); Assert.AreEqual(1, depthMemoryImage.AskDepths.Count()); // Bids in DepthMemoryImage Assert.AreEqual(498, depthMemoryImage.BidDepths.First().Value.DepthLevels[0].Price); Assert.AreEqual(496, depthMemoryImage.BidDepths.First().Value.DepthLevels[1].Price); Assert.AreEqual(493, depthMemoryImage.BidDepths.First().Value.DepthLevels[2].Price); Assert.AreEqual(491, depthMemoryImage.BidDepths.First().Value.DepthLevels[3].Price); // Asks in DepthMemoryImage Assert.IsNull(depthMemoryImage.AskDepths.First().Value.DepthLevels[0]); Assert.IsNull(depthMemoryImage.AskDepths.First().Value.DepthLevels[1]); Assert.IsNull(depthMemoryImage.AskDepths.First().Value.DepthLevels[2]); Assert.IsNull(depthMemoryImage.AskDepths.First().Value.DepthLevels[3]); }
public void PublishAllTypesToOutputDisruptor_IfAllTypesAreConvertedToByteArray_ItShouldReceivedAndProperlyCasted() { Order order = OrderFactory.CreateOrder("1234", "XBTUSD", "market", "buy", 5, 0, new StubbedOrderIdGenerator()); //byte[] array = ObjectToByteArray(order); OutputDisruptor.Publish(order); Order buyOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "limit", "buy", 5, 10, new StubbedOrderIdGenerator()); Order sellOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "limit", "sell", 5, 11, new StubbedOrderIdGenerator()); Trade trade = new Trade(new TradeId("123"), "XBTUSD", new Price(100), new Volume(10), DateTime.Now, buyOrder, sellOrder); //byte[] array1 = ObjectToByteArray(trade); OutputDisruptor.Publish(trade); LimitOrderBook limitOrderBook = new LimitOrderBook("XBTUSD"); limitOrderBook.PlaceOrder(buyOrder); limitOrderBook.PlaceOrder(sellOrder); //byte[] array2 = ObjectToByteArray(limitOrderBook); OutputDisruptor.Publish(limitOrderBook); Depth depth = new Depth("XBTUSD", 3); depth.AddOrder(new Price(490), new Volume(100), OrderSide.Buy); depth.AddOrder(new Price(491), new Volume(100), OrderSide.Buy); depth.AddOrder(new Price(492), new Volume(200), OrderSide.Buy); //byte[] array3 = ObjectToByteArray(depth); OutputDisruptor.Publish(depth); DepthLevel askDepthLevel = new DepthLevel(new Price(491.32M)); bool addOrder1 = askDepthLevel.AddOrder(new Volume(2000)); bool addOrder2 = askDepthLevel.AddOrder(new Volume(1000)); DepthLevel bidDepthLevel = new DepthLevel(new Price(491.32M)); addOrder1 = bidDepthLevel.AddOrder(new Volume(2000)); addOrder2 = bidDepthLevel.AddOrder(new Volume(1000)); bool addOrder3 = bidDepthLevel.AddOrder(new Volume(3000)); BBO bbo = new BBO("XBTUSD", bidDepthLevel, askDepthLevel); //byte[] array4 = ObjectToByteArray(bbo); OutputDisruptor.Publish(bbo); _manualResetEvent.WaitOne(3000); Assert.NotNull(_receviedOrder); Assert.AreEqual(_receviedOrder, order); Assert.NotNull(_receivedTrade); Assert.AreEqual(_receivedTrade.BuyOrder, buyOrder); Assert.AreEqual(_receivedTrade.SellOrder, sellOrder); Assert.NotNull(_receivedLimitOrderBook); Assert.AreEqual(_receivedLimitOrderBook.AskCount, 1); Assert.AreEqual(_receivedLimitOrderBook.BidCount, 1); Assert.NotNull(_receivedDepth); Assert.AreEqual(_receivedDepth.BidLevels[0].Price.Value, 492); Assert.AreEqual(_receivedDepth.BidLevels[1].Price.Value, 491); Assert.AreEqual(_receivedDepth.BidLevels[2].Price.Value, 490); Assert.NotNull(_receivedBbo); Assert.AreEqual(_receivedBbo.BestAsk.OrderCount, 2); Assert.AreEqual(_receivedBbo.BestBid.OrderCount, 3); }