public void Should_Resample_Bars_From_Ticks()
        {
            // Arrange
            var ticks     = TickMessage.ParseFromFile(TestData.TestData.GetFileName(TestDataType.Ticks, DataDirection.Oldest)).ToList();
            var intervals = IntervalMessage.ParseFromFile(TestData.TestData.GetFileName(TestDataType.Intervals_1s, DataDirection.Oldest)).ToList();

            // Act
            var bars = ticks.ToHistoricalBars(TimeSpan.FromSeconds(1), DataDirection.Oldest).ToList().ToList();

            // Assert
            Assert.IsNotEmpty(intervals);
            Assert.AreEqual(intervals.Count, bars.Count);

            for (var i = 0; i < intervals.Count; i++)
            {
                var interval = intervals[i];
                var bar      = bars[i];

                // TODO: create comparable
                if (interval.Timestamp == bar.Timestamp &&
                    interval.Open == bar.Open &&
                    interval.High == bar.High &&
                    interval.Low == bar.Low &&
                    interval.Close == bar.Close &&
                    interval.PeriodVolume == bar.PeriodVolume &&
                    interval.TotalVolume == bar.TotalVolume)
                {
                    continue;
                }

                throw new Exception();
            }
        }
예제 #2
0
        private static (IntervalMessage, FakeClock) GetTestMessage()
        {
            var fakeClock       = new FakeClock();
            var intervalMessage = new IntervalMessage(_delayInMinutes, "Hello there!", fakeClock);

            return(intervalMessage, fakeClock);
        }
예제 #3
0
        public void Null_GivenNoWeightedItem()
        {
            var item = new IntervalMessage();

            var weightedItem = MyRandom.ChooseRandomWeightedItem(new[] { item });

            weightedItem.Should().BeNull();
        }
예제 #4
0
        public void SingleItem_GivenOneWeightedItem()
        {
            var item = new IntervalMessage("foo", 354);

            var weightedItem = MyRandom.ChooseRandomWeightedItem(new[] { item });

            weightedItem.Should().Be(item);
        }
예제 #5
0
        public async Task AddIntervalMessage(int userId, string message)
        {
            var user = await _dbContext.Users.FindAsync(userId);

            var newIntervalMessage = new IntervalMessage(message);

            user.IntervalMessages.Add(newIntervalMessage);
        }
        public void Should_TryParse_Return_False_When_Invalid_Data_Overflow()
        {
            // Act
            var parsed = IntervalMessage.TryParse($"2018-06-29 16:12:40,185.2500,185.2600,185.2700,185.2800,0,0,{long.MaxValue},", out _);

            // Assert
            Assert.IsFalse(parsed);
        }
예제 #7
0
        public void AddAutomatedMessageToManagedMessages()
        {
            var messagingSystem  = new AutomatedMessagingSystem();
            var automatedMessage = new IntervalMessage(1, "Welcome! If you are enjoying the content, please follow DevChatter for more!");

            messagingSystem.Publish(automatedMessage);

            Assert.Contains(automatedMessage, messagingSystem.ManagedMessages);
        }
        public void Should_Parse_IntervalMessage_Invariant(string cultureName)
        {
            // Arrange
            TestHelper.SetThreadCulture(cultureName);

            // Act
            var intervalMessageFromValues = IntervalMessage.Parse(_message);

            // Assert
            Assert.AreEqual(intervalMessageFromValues, _expectedMessage);
        }
예제 #9
0
 public AutomatedMessage(IntervalMessage intervalMessage,
                         IList <BufferedMessageSender> chatClients, IRepository repository,
                         IClock clock)
 {
     _intervalMessage = intervalMessage;
     IntervalTimeSpan = TimeSpan.FromMinutes(intervalMessage.DelayInMinutes);
     _clock           = clock;
     _chatClients     = chatClients;
     _nextRunTime     = intervalMessage.LastSent.AddMinutes(IntervalInMinutes);
     _repository      = repository;
 }
        public void Should_TryParse_Return_True(string cultureName)
        {
            // Arrange
            TestHelper.SetThreadCulture(cultureName);

            // Act
            var parsed = IntervalMessage.TryParse(_message, out var intervalMessage);

            // Assert
            Assert.IsTrue(parsed);
            Assert.AreEqual(intervalMessage, _expectedMessage);
        }
        public void Should_Parse_IntervalMessage_Culture_Independent(string cultureName)
        {
            // Arrange
            TestHelper.SetThreadCulture(cultureName);
            var message = $"2018-06-29 16:12:40,185.2500,185.2600,185.2700,185.2800,{long.MaxValue},100,0,";

            // Act
            var intervalMessage           = new IntervalMessage(new DateTime(2018, 06, 29, 16, 12, 40), 185.25, 185.26, 185.27, 185.28, long.MaxValue, 100, 0);
            var intervalMessageFromValues = IntervalMessage.Parse(message);

            // Assert
            Assert.AreEqual(intervalMessage, intervalMessageFromValues);
        }
        public void Should_Csv_IntervalMessage_With_RequestId_Invariant(string cultureName)
        {
            // Arrange
            TestHelper.SetThreadCulture(cultureName);
            var intervalMessage = new IntervalMessage(new DateTime(2020, 01, 01, 9, 30, 00), 1.01, 1.02, 1.03, 1.04, 1000, 1, 10, "TEST123");

            // Act
            var csv = intervalMessage.ToCsv();

            // Arrange
            var expectedCsv = "TEST123,2020-01-01 09:30:00,1.01,1.02,1.03,1.04,1000,1,10";

            Assert.AreEqual(csv, expectedCsv);
        }
예제 #13
0
        public void SingleItem_GivenMultipleItemsOnlyOneWeighted()
        {
            var item          = new IntervalMessage("foo", 2);
            var weightedItems = new List <IntervalMessage>
            {
                item,
                new IntervalMessage("bar", 0),
                new IntervalMessage("fiz", 0),
            };

            var weightedItem = MyRandom.ChooseRandomWeightedItem(weightedItems);

            weightedItem.Should().Be(item);
        }
예제 #14
0
        /// <summary>
        /// Stream IQFeed IntervalMessage from disk to Lean TradeBar
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="request"></param>
        /// <returns>Converted TradeBar</returns>
        private IEnumerable <BaseData> GetDataFromIntervalMessages(string filename, HistoryRequest request)
        {
            var dataTimeZone = _marketHoursDatabase.GetDataTimeZone(request.Symbol.ID.Market, request.Symbol, request.Symbol.SecurityType);

            foreach (var interval in IntervalMessage.ParseFromFile(filename))
            {
                var iStartTime = interval.Timestamp;
                iStartTime = iStartTime.ConvertTo(TimeZones.NewYork, dataTimeZone);
                yield return(new TradeBar(
                                 iStartTime,
                                 request.Symbol,
                                 (decimal)interval.Open,
                                 (decimal)interval.High,
                                 (decimal)interval.Low,
                                 (decimal)interval.Close,
                                 interval.PeriodVolume
                                 ));
            }

            File.Delete(filename);
        }
        public void Should_Return_InvalidData_Exception()
        {
            // Arrange
            var request         = "request";
            var intervalMessage = new IntervalMessage(new DateTime(2000, 01, 01, 9, 30, 00), 1, 1, 1, 1, 1, 1, 0);
            var invalidMessages = new List <InvalidMessage <IntervalMessage> >()
            {
                new InvalidMessage <IntervalMessage>(intervalMessage, intervalMessage.ToCsv())
            };
            var messages = new List <IntervalMessage>()
            {
                intervalMessage
            };

            // Act
            var exception = _exceptionFactory.CreateNew(request, invalidMessages, messages);

            // Assert
            var expectedException = new InvalidDataIQFeedException <IntervalMessage>(request, invalidMessages, messages);

            Assert.AreEqual(exception, expectedException);
        }
예제 #16
0
 public AutomatedMessage(IntervalMessage intervalMessage,
                         IList <BufferedMessageSender> chatClients, IRepository repository)
     : this(intervalMessage, chatClients, repository, new SystemClock())
 {
 }
 public IntervalMessageTests()
 {
     _message         = $"2018-06-29 16:12:40,185.2500,185.2600,185.2700,185.2800,{long.MaxValue},100,0,";
     _expectedMessage = new IntervalMessage(new DateTime(2018, 06, 29, 16, 12, 40), 185.25, 185.26, 185.27, 185.28, long.MaxValue, 100, 0);
 }