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)); }
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); }