public void CreateTimeSeriesSubscriptionTest() { var symbol = "SYMA"; var s = DXEndpoint.Create().Feed.CreateTimeSeriesSubscription <IDxCandle>(); s.AddSymbols(symbol); TestListener eventListener = new TestListener(); s.AddEventListener(eventListener); var playedCandle = new PlayedCandle(symbol, Tools.DateToUnixTime(DateTime.Now), 123, 100, 12.34, 56.78, 9.0, 43.21, 1000, 999, 1001, 1002, 1, 777, 888, EventFlag.RemoveSymbol); EventPlayer <IDxCandle> eventPlayer = new EventPlayer <IDxCandle>(s as DXFeedSubscription <IDxCandle>); eventPlayer.PlayEvents(symbol, playedCandle); Assert.AreEqual(eventListener.GetEventCount <IDxCandle>(symbol), 1); IDxCandle receivedCandle = eventListener.GetLastEvent <IDxCandle>().Event; Assert.AreEqual(symbol, receivedCandle.EventSymbol.ToString()); CompareCandles(playedCandle, receivedCandle); //thread-safety case DXEndpoint.Create(); Parallel.For(ParallelFrom, ParallelTo, i => { Assert.DoesNotThrow(() => { DXEndpoint.GetInstance().Feed.CreateTimeSeriesSubscription <IDxCandle>(); }); }); }
/// <summary> /// Creates Candle event from another object. /// </summary> /// <param name="candle">Other Candle object.</param> internal PlayedCandle(IDxCandle candle) { EventSymbol = CandleSymbol.ValueOf(candle.EventSymbol.ToString()); EventFlags = candle.EventFlags; TimeStamp = candle.TimeStamp; Time = Tools.UnixTimeToDate(TimeStamp); Sequence = candle.Sequence; Count = candle.Count; Open = candle.Open; High = candle.High; Low = candle.Low; Close = candle.Close; Volume = candle.Volume; VWAP = candle.VWAP; BidVolume = candle.BidVolume; AskVolume = candle.AskVolume; DateTime = Tools.UnixTimeToDate(TimeStamp); Index = candle.Index; ImpVolatility = candle.ImpVolatility; OpenInterest = candle.OpenInterest; Params = new EventParams(EventFlags, ((ulong)TimeStamp << 32) + (uint)Sequence, 0); Data = new DxTestCandle(EventFlags, Index, Tools.DateToUnixTime(Time), Sequence, Count, Open, High, Low, Close, Volume, VWAP, BidVolume, AskVolume, (int)OpenInterest, ImpVolatility); }
internal static void CompareCandles(IDxCandle playedCandle, IDxCandle receivedCandle) { Assert.AreEqual(playedCandle.EventSymbol, receivedCandle.EventSymbol); Assert.AreEqual(playedCandle.Time, receivedCandle.Time); Assert.AreEqual(playedCandle.Sequence, receivedCandle.Sequence); Assert.AreEqual(playedCandle.Count, receivedCandle.Count); Assert.AreEqual(playedCandle.Open, receivedCandle.Open); Assert.AreEqual(playedCandle.High, receivedCandle.High); Assert.AreEqual(playedCandle.Low, receivedCandle.Low); Assert.AreEqual(playedCandle.Close, receivedCandle.Close); Assert.AreEqual(playedCandle.Volume, receivedCandle.Volume); Assert.AreEqual(playedCandle.VWAP, receivedCandle.VWAP); Assert.AreEqual(playedCandle.BidVolume, receivedCandle.BidVolume); Assert.AreEqual(playedCandle.AskVolume, receivedCandle.AskVolume); Assert.AreEqual(playedCandle.Index, receivedCandle.Index); Assert.AreEqual(playedCandle.OpenInterest, receivedCandle.OpenInterest); Assert.AreEqual(playedCandle.ImpVolatility, receivedCandle.ImpVolatility); Assert.AreEqual(playedCandle.EventFlags, receivedCandle.EventFlags); }
internal NativeCandle(IDxCandle candle) { EventSymbol = CandleSymbol.ValueOf(candle.EventSymbol.ToString()); EventFlags = candle.EventFlags; Index = candle.Index; Time = TimeConverter.ToUtcDateTime(TimeStamp); Sequence = candle.Sequence; Count = candle.Count; Open = candle.Open; High = candle.High; Low = candle.Low; Close = candle.Close; Volume = candle.Volume; VWAP = candle.VWAP; BidVolume = candle.BidVolume; AskVolume = candle.AskVolume; OpenInterest = candle.OpenInterest; ImpVolatility = candle.ImpVolatility; }
public void ResetFromTimeStampTest() { string symbol = "SYMA"; TestListener eventListener = new TestListener(); var s = DXEndpoint.Create().Feed.CreateTimeSeriesSubscription <IDxCandle>(); s.OnSubscriptionClosed += OnSubscriptionClosed; s.OnSymbolsAdded += OnSymbolsAdded; s.OnSymbolsRemoved += OnSymbolsRemoved; s.AddEventListener(eventListener); s.AddSymbols(symbol); Assert.AreEqual(long.MaxValue, s.FromTimeStamp); //try to change FromTimeStamp property isFiresOnSubscriptionClosed = false; isFiresOnSymbolsAdded = false; isFiresOnSymbolsRemoved = false; long fromTime = Tools.DateToUnixTime(DateTime.Now.AddMonths(-1)); s.FromTimeStamp = fromTime; Assert.AreEqual(fromTime, s.FromTimeStamp); Assert.True(s.GetSymbols().SetEquals(new object[] { symbol })); Assert.True(s.EventTypes.SetEquals(new Type[] { typeof(IDxCandle) })); Assert.False(isFiresOnSubscriptionClosed); Assert.False(isFiresOnSymbolsAdded); Assert.False(isFiresOnSymbolsRemoved); var playedCandle = new PlayedCandle(symbol, Tools.DateToUnixTime(DateTime.Now), 123, 100, 12.34, 56.78, 9.0, 43.21, 1000, 999, 1001, 1002, 1, 777, 888, EventFlag.RemoveSymbol); EventPlayer <IDxCandle> eventPlayer = new EventPlayer <IDxCandle>(s as DXFeedSubscription <IDxCandle>); eventPlayer.PlayEvents(symbol, playedCandle); Assert.AreEqual(eventListener.GetEventCount <IDxCandle>(symbol), 1); IDxCandle receivedCandle = eventListener.GetLastEvent <IDxCandle>().Event; Assert.AreEqual(symbol, receivedCandle.EventSymbol.ToString()); DXFeedTest.CompareCandles(playedCandle, receivedCandle); }