Exemple #1
0
        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>();
                });
            });
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 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);
 }
Exemple #4
0
        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);
        }