Example #1
0
        public void TradeBarParseDoesNotScaleOptionsWithNonEquityUnderlying()
        {
            var factory = new TradeBar();
            var underlying = Symbol.CreateFuture("ES", QuantConnect.Market.CME, new DateTime(2021, 3, 19));
            var optionSymbol = Symbol.CreateOption(
                underlying,
                QuantConnect.Market.CME,
                OptionStyle.American,
                OptionRight.Put,
                4200m,
                SecurityIdentifier.DefaultDate);

            var config = new SubscriptionDataConfig(
                typeof(TradeBar),
                optionSymbol,
                Resolution.Minute,
                TimeZones.Chicago,
                TimeZones.Chicago,
                true,
                false,
                false,
                false,
                TickType.Trade,
                true,
                DataNormalizationMode.Raw);

            var tradeLine = "40560000,1.0,1.5,1.0,1.5,90.0";
            using var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(tradeLine));
            using var stream = new StreamReader(memoryStream);

            var unscaledTradeBarFromLine = (TradeBar)factory.Reader(config, tradeLine, new DateTime(2020, 9, 22), false);
            var unscaledTradeBarFromStream = (TradeBar)factory.Reader(config, stream, new DateTime(2020, 9, 22), false);

            Assert.AreEqual(new DateTime(2020, 9, 22, 11, 17, 0), unscaledTradeBarFromLine.EndTime);
            Assert.AreEqual(optionSymbol, unscaledTradeBarFromLine.Symbol);
            Assert.AreEqual(1m, unscaledTradeBarFromLine.Open);
            Assert.AreEqual(1.5m, unscaledTradeBarFromLine.High);
            Assert.AreEqual(1m, unscaledTradeBarFromLine.Low);
            Assert.AreEqual(1.5m, unscaledTradeBarFromLine.Close);
            Assert.AreEqual(90m, unscaledTradeBarFromLine.Volume);

            Assert.AreEqual(new DateTime(2020, 9, 22, 11, 17, 0), unscaledTradeBarFromStream.EndTime);
            Assert.AreEqual(optionSymbol, unscaledTradeBarFromStream.Symbol);
            Assert.AreEqual(1m, unscaledTradeBarFromStream.Open);
            Assert.AreEqual(1.5m, unscaledTradeBarFromStream.High);
            Assert.AreEqual(1m, unscaledTradeBarFromStream.Low);
            Assert.AreEqual(1.5m, unscaledTradeBarFromStream.Close);
            Assert.AreEqual(90m, unscaledTradeBarFromStream.Volume);
        }
            public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode)
            {
                ReaderLine = line;
                var bar = new TradeBar();

                return(bar.Reader(config, line, date, isLiveMode));
            }
Example #3
0
        public void TradeBarIndexLowResolutionParsing(Resolution resolution, string tradeLine)
        {
            var factory = new TradeBar();
            var symbol = Symbols.CreateIndexSymbol("VIX");
            var entry = MarketHoursDatabase.FromDataFolder()
                .GetEntry(symbol.ID.Market, symbol, symbol.SecurityType);
            var config = new SubscriptionDataConfig(
                typeof(TradeBar),
                symbol,
                resolution,
                entry.DataTimeZone,
                entry.ExchangeHours.TimeZone,
                true,
                false,
                false,
                false,
                TickType.Trade,
                true,
                DataNormalizationMode.Raw);

            using var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(tradeLine));
            using var stream = new StreamReader(memoryStream);

            var fromLine = (TradeBar)factory.Reader(config, tradeLine, new DateTime(2020, 9, 22), false);
            var fromStream = (TradeBar)factory.Reader(config, stream, new DateTime(2020, 9, 22), false);

            var expectedEndTime = new DateTime(2020, 9, 22, 12, 0, 0);
            if (resolution == Resolution.Daily)
            {
                expectedEndTime = expectedEndTime.AddHours(-expectedEndTime.Hour);
            }
            Assert.AreEqual(expectedEndTime, fromLine.EndTime);
            Assert.AreEqual(symbol, fromLine.Symbol);
            Assert.AreEqual(21.04m, fromLine.Open);
            Assert.AreEqual(21.44m, fromLine.High);
            Assert.AreEqual(20.4m, fromLine.Low);
            Assert.AreEqual(21.24m, fromLine.Close);
            Assert.AreEqual(0m, fromLine.Volume);

            Assert.AreEqual(expectedEndTime, fromStream.EndTime);
            Assert.AreEqual(symbol, fromLine.Symbol);
            Assert.AreEqual(21.04m, fromLine.Open);
            Assert.AreEqual(21.44m, fromLine.High);
            Assert.AreEqual(20.4m, fromLine.Low);
            Assert.AreEqual(21.24m, fromLine.Close);
            Assert.AreEqual(0m, fromLine.Volume);
        }
            public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode)
            {
                var dataPoint = _factory.Reader(config, line, date, isLiveMode);

                if (SingleDate)
                {
                    // single day
                    dataPoint.Time = date;
                }
                return(dataPoint);
            }