/// <inheritdoc /> protected override ExecutionMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var ol = new ExecutionMessage { SecurityId = SecurityId, ExecutionType = ExecutionTypes.OrderLog, ServerTime = reader.ReadTime(metaInfo.Date), TransactionId = reader.ReadLong(), OrderId = reader.ReadLong(), OrderPrice = reader.ReadDecimal(), OrderVolume = reader.ReadDecimal(), Side = reader.ReadEnum <Sides>(), OrderState = reader.ReadEnum <OrderStates>(), TimeInForce = reader.ReadNullableEnum <TimeInForce>(), TradeId = reader.ReadNullableLong(), TradePrice = reader.ReadNullableDecimal(), PortfolioName = reader.ReadString(), IsSystem = reader.ReadNullableBool(), }; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { ol.Balance = reader.ReadNullableDecimal(); } return(ol); }
protected override ExchangeBoard Read(FastCsvReader reader) { var board = new ExchangeBoard { Code = reader.ReadString(), Exchange = GetExchange(reader.ReadString()), ExpiryTime = reader.ReadString().ToTime(), //IsSupportAtomicReRegister = reader.ReadBool(), //IsSupportMarketOrders = reader.ReadBool(), TimeZone = reader.ReadString().To <TimeZoneInfo>(), }; var time = board.WorkingTime; if (reader.ColumnCount == 7) { time.Periods = Deserialize <List <WorkingTimePeriod> >(reader.ReadString()); time.SpecialWorkingDays = Deserialize <IEnumerable <DateTime> >(reader.ReadString()).ToArray(); time.SpecialHolidays = Deserialize <IEnumerable <DateTime> >(reader.ReadString()).ToArray(); } else { time.Periods.AddRange(reader.ReadString().DecodeToPeriods()); time.SpecialDays.AddRange(reader.ReadString().DecodeToSpecialDays()); if ((reader.ColumnCurr + 1) < reader.ColumnCount) { reader.Skip(); time.IsEnabled = reader.ReadBool(); } } return(board); }
/// <inheritdoc /> protected override ExecutionMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var execMsg = new ExecutionMessage { SecurityId = SecurityId, ExecutionType = ExecutionTypes.Tick, ServerTime = reader.ReadTime(metaInfo.Date), TradeId = reader.ReadNullableLong(), TradePrice = reader.ReadNullableDecimal(), TradeVolume = reader.ReadNullableDecimal(), OriginSide = reader.ReadNullableEnum <Sides>(), OpenInterest = reader.ReadNullableDecimal(), IsSystem = reader.ReadNullableBool(), }; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { execMsg.IsUpTick = reader.ReadNullableBool(); execMsg.TradeStringId = reader.ReadString(); execMsg.Currency = reader.ReadNullableEnum <CurrencyTypes>(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { execMsg.BuildFrom = reader.ReadBuildFrom(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { execMsg.SeqNum = reader.ReadNullableLong() ?? 0L; } return(execMsg); }
/// <inheritdoc /> protected override TCandleMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var message = new TCandleMessage { SecurityId = SecurityId, Arg = Arg, OpenTime = reader.ReadTime(metaInfo.Date), OpenPrice = reader.ReadDecimal(), HighPrice = reader.ReadDecimal(), LowPrice = reader.ReadDecimal(), ClosePrice = reader.ReadDecimal(), TotalVolume = reader.ReadDecimal(), State = CandleStates.Finished }; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { message.BuildFrom = reader.ReadBuildFrom(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { message.SeqNum = reader.ReadNullableLong() ?? 0L; } return(message); }
/// <inheritdoc /> protected override NewsMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var news = new NewsMessage { ServerTime = reader.ReadTime(metaInfo.Date), Headline = reader.ReadString(), Source = reader.ReadString(), Url = reader.ReadString().To <Uri>(), Id = reader.ReadString(), BoardCode = reader.ReadString(), }; var secCode = reader.ReadString(); if (!secCode.IsEmpty()) { news.SecurityId = new SecurityId { SecurityCode = secCode } } ; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { news.Priority = reader.ReadNullableEnum <NewsPriorities>(); } return(news); } }
protected override Position Read(FastCsvReader reader) { var pfName = reader.ReadString(); var secId = reader.ReadString(); var position = new Position { Portfolio = GetPortfolio(pfName), Security = GetSecurity(secId), DepoName = reader.ReadString(), LimitType = reader.ReadNullableEnum <TPlusLimits>(), BeginValue = reader.ReadNullableDecimal(), CurrentValue = reader.ReadNullableDecimal(), BlockedValue = reader.ReadNullableDecimal(), VariationMargin = reader.ReadNullableDecimal(), Commission = reader.ReadNullableDecimal(), Currency = reader.ReadNullableEnum <CurrencyTypes>(), LastChangeTime = _dateTimeParser.Parse(reader.ReadString()).ChangeKind(DateTimeKind.Utc), LocalTime = _dateTimeParser.Parse(reader.ReadString()).ChangeKind(DateTimeKind.Utc) }; if (position.Security == null) { throw new InvalidOperationException(LocalizedStrings.Str1218Params.Put(secId)); } if (position.Portfolio == null) { throw new InvalidOperationException(LocalizedStrings.Str891); } return(position); }
protected override Exchange Read(FastCsvReader reader) { var board = new Exchange { Name = reader.ReadString(), CountryCode = reader.ReadNullableEnum <CountryCodes>(), //EngName = reader.ReadString(), //RusName = reader.ReadString(), //ExtensionInfo = Deserialize<Dictionary<object, object>>(reader.ReadString()) }; var engName = reader.ReadString(); reader.Skip(); if ((reader.ColumnCurr + 1) < reader.ColumnCount) { board.FullNameLoc = reader.ReadString(); } else { board.FullNameLoc = LocalizedStrings.LocalizationManager.GetResourceId(engName) ?? engName; } return(board); }
public void TestEmptyQuotedCell() { var result = FastCsvReader.ReadAs <BuaData>(emptyQuotedCell).ToArray(); Assert.That(result[0].Code, Is.EqualTo(string.Empty)); Assert.That(result[0].Name, Is.EqualTo("Value")); }
public override void Read(Stream stream) { CultureInfo.InvariantCulture.DoInCulture(() => { var count = 0; var firstTimeRead = false; var reader = new FastCsvReader(stream, _encoding); while (reader.NextLine()) { var message = _serializer.Read(reader, this); var openTime = message.OpenTime.UtcDateTime; _items.Add(openTime, message); if (!firstTimeRead) { FirstTime = openTime; firstTimeRead = true; } LastTime = openTime; count++; } Count = count; stream.Position = 0; }); }
public void TestSingleQuotes() { var result = FastCsvReader.ReadAs <BuaData>(singleQuotes).ToArray(); Assert.That(result.Length, Is.EqualTo(1)); Assert.That(result[0].Name, Is.EqualTo("Hart's Lane, nr Langham (Colchester) BUA")); }
/// <summary> /// Read data from the specified reader. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns>Data.</returns> protected override NewsMessage Read(FastCsvReader reader, DateTime date) { var news = new NewsMessage { ServerTime = reader.ReadTime(date), Headline = reader.ReadString(), Source = reader.ReadString(), Url = reader.ReadString().To <Uri>(), Id = reader.ReadString(), BoardCode = reader.ReadString(), }; var secCode = reader.ReadString(); if (!secCode.IsEmpty()) { news.SecurityId = new SecurityId { SecurityCode = secCode } } ; return(news); } }
public void TestBadDataWithCustomParser() { var converter = new DefaultConverterSpec(); converter.SetConverter <int?>(s => { if (string.IsNullOrWhiteSpace(s)) { return(null); } if (!int.TryParse(s, out int value)) { return(null); } return(value); }); var result = FastCsvReader.ReadAs <DefaultData2>(testData3, '¬', converter).ToArray(); Assert.That(result.Length, Is.EqualTo(4)); Assert.That(result[0].Area, Is.EqualTo(1)); Assert.That(result[0].QuotaValuesAndResults, Is.EqualTo("Full Time, Part-Time and Zero-hour")); Assert.That(result[0].Remarks, Is.Empty); Assert.That(result[0].Notes, Is.Empty); Assert.That(result[1].QuotaValuesAndResults, Is.EqualTo("Part-Time")); Assert.That(result[1].Notes, Is.Empty); Assert.That(result[2].Area, Is.Null); Assert.That(result[2].QuotaValuesAndResults, Is.Not.Null.Or.Empty); Assert.That(result[3].Area, Is.Null); }
protected override ExchangeBoard Read(FastCsvReader reader) { var board = new ExchangeBoard { Code = reader.ReadString(), Exchange = GetExchange(reader.ReadString()), ExpiryTime = reader.ReadString().ToTime(), //IsSupportAtomicReRegister = reader.ReadBool(), //IsSupportMarketOrders = reader.ReadBool(), TimeZone = TimeZoneInfo.FindSystemTimeZoneById(reader.ReadString()), }; var time = board.WorkingTime; if (reader.ColumnCount == 7) { time.Periods = Deserialize <List <WorkingTimePeriod> >(reader.ReadString()); time.SpecialWorkingDays = Deserialize <IEnumerable <DateTime> >(reader.ReadString()).ToArray(); time.SpecialHolidays = Deserialize <IEnumerable <DateTime> >(reader.ReadString()).ToArray(); } else { time.Periods.AddRange(reader.ReadString().DecodeToPeriods()); time.SpecialDays.AddRange(reader.ReadString().DecodeToSpecialDays()); } //ExtensionInfo = Deserialize<Dictionary<object, object>>(reader.ReadString()) return(board); }
/// <inheritdoc /> protected override NewsMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var news = new NewsMessage { ServerTime = reader.ReadTime(metaInfo.Date), Headline = reader.ReadString(), Source = reader.ReadString(), Url = reader.ReadString(), Id = reader.ReadString(), BoardCode = reader.ReadString(), }; var secCode = reader.ReadString(); if (!secCode.IsEmpty()) { news.SecurityId = new SecurityId { SecurityCode = secCode } } ; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { news.Priority = reader.ReadNullableEnum <NewsPriorities>(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { news.Language = reader.ReadString(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { var boardCode = reader.ReadString(); if (news.SecurityId != null) { var secId = news.SecurityId.Value; secId.BoardCode = boardCode; news.SecurityId = secId; } } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { news.ExpiryDate = reader.ReadString().TryToDateTimeOffset(_expiryFormat); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { news.SeqNum = reader.ReadNullableLong() ?? 0L; } return(news); } }
public void TestMultiAttribute() { var result = FastCsvReader.ReadAs <MultiAttr>(testData4).ToArray(); Assert.That(result.Length, Is.EqualTo(1)); Assert.That(result[0].Code, Is.EqualTo("AAA")); Assert.That(result[0].Name, Is.EqualTo("BBB")); Assert.That(result[0].Notes, Is.EqualTo("CCC")); }
/// <summary> /// Read <see cref="DateTimeOffset"/>. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns><see cref="DateTimeOffset"/>.</returns> internal static DateTimeOffset ReadTime(FastCsvReader reader, DateTime date) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } return((date + TimeParser.Parse(reader.ReadString())).ToDateTimeOffset(TimeSpan.Parse(reader.ReadString().Remove("+")))); }
/// <summary> /// Read <see cref="DateTimeOffset"/>. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns><see cref="DateTimeOffset"/>.</returns> public static DateTimeOffset ReadTime(this FastCsvReader reader, DateTime date) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } return((date + reader.ReadDateTime(TimeFormat).TimeOfDay).ToDateTimeOffset(TimeSpan.Parse(reader.ReadString().Replace("+", string.Empty)))); }
/// <inheritdoc /> protected override PositionChangeMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var posMsg = new PositionChangeMessage { SecurityId = SecurityId, ServerTime = reader.ReadTime(metaInfo.Date), PortfolioName = reader.ReadString(), ClientCode = reader.ReadString(), DepoName = reader.ReadString(), LimitType = reader.ReadString().To <TPlusLimits?>(), }; foreach (var type in _types) { switch (type) { case PositionChangeTypes.Currency: { var currency = reader.ReadNullableEnum <CurrencyTypes>(); if (currency != null) { posMsg.Changes.Add(type, currency); } break; } case PositionChangeTypes.State: { var state = reader.ReadNullableEnum <PortfolioStates>(); if (state != null) { posMsg.Changes.Add(type, state); } break; } default: { var value = reader.ReadNullableDecimal(); if (value != null) { posMsg.Changes.Add(type, value); } break; } } } return(posMsg); }
private void LoadFile(string fileName) { CultureInfo.InvariantCulture.DoInCulture(() => { if (!File.Exists(fileName)) { return; } var name = Path.GetFileNameWithoutExtension(fileName); var pairs = new List <Tuple <SecurityId, object> >(); using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var reader = new FastCsvReader(stream, Encoding.UTF8); reader.NextLine(); reader.Skip(2); var type1 = reader.ReadString().To <Type>(); var type2 = reader.ReadString().To <Type>(); var isTuple = type2 != null; while (reader.NextLine()) { var securityId = new SecurityId { SecurityCode = reader.ReadString(), BoardCode = reader.ReadString() }; var nativeId = reader.ReadString().To(type1); if (isTuple) { var nativeId2 = reader.ReadString().To(type2); nativeId = typeof(Tuple <,>).MakeGenericType(type1, type2).CreateInstance(new[] { nativeId, nativeId2 }); } pairs.Add(Tuple.Create(securityId, nativeId)); } } lock (_sync) { var nativeIds = _nativeIds.SafeAdd(name); foreach (var tuple in pairs) { nativeIds.Add(tuple.Item1, tuple.Item2); } } }); }
/// <summary> /// Read data from the specified reader. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns>Data.</returns> protected override TimeQuoteChange Read(FastCsvReader reader, DateTime date) { return(new TimeQuoteChange { ServerTime = ReadTime(reader, date), Price = reader.ReadDecimal(), Volume = reader.ReadDecimal(), Side = reader.ReadEnum <Sides>() }); }
/// <summary> /// Read data from the specified reader. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> /// <returns>Data.</returns> protected override NullableTimeQuoteChange Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { return(new NullableTimeQuoteChange { ServerTime = reader.ReadTime(metaInfo.Date), Price = reader.ReadNullableDecimal(), Volume = reader.ReadDecimal(), Side = reader.ReadEnum <Sides>() }); }
/// <inheritdoc /> protected override BoardStateMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var state = new BoardStateMessage { ServerTime = reader.ReadTime(metaInfo.Date), BoardCode = reader.ReadString(), State = reader.ReadEnum <SessionStates>() }; return(state); }
public static IEvalCase[] LoadCase(TextReader textReader) { using (var table = new FastCsvReader(textReader, new FastCsvReaderSettings() { FieldDelimiter = '\t' })) { table.HandleHeaderRow(); return(table.ReadToEnd <EvalCase>().ToArray <IEvalCase>()); } }
private static DateTimeOffset?ReadNullableDateTime(FastCsvReader reader) { var str = reader.ReadString(); if (str == null) { return(null); } return(_dateTimeParser.Parse(str).ChangeKind(DateTimeKind.Utc)); }
public void TestAdditionalColumns() { var result = FastCsvReader.ReadAs <AdditionalColumnsData>(testData4).ToArray(); Assert.That(result.Length, Is.EqualTo(1)); Assert.That(result[0].Code, Is.EqualTo("AAA")); Assert.That(result[0].Columns.Keys.Count, Is.EqualTo(2)); Assert.That(result[0].Columns.ContainsKey("Name1"), Is.EqualTo(true)); Assert.That(result[0].Columns.ContainsKey("Notes"), Is.EqualTo(true)); Assert.That(result[0].Columns["Name1"], Is.EqualTo("BBB")); Assert.That(result[0].Columns["Notes"], Is.EqualTo("CCC")); }
public void TestReadWithCommasAllFieldsPresent() { var result = FastCsvReader.ReadAs <DefaultData>(testData1).ToArray(); Assert.That(result.Length, Is.EqualTo(2)); Assert.That(result[0].Area, Is.EqualTo(1)); Assert.That(result[0].Quota, Is.EqualTo(" Full Time")); Assert.That(result[0].Remarks, Is.Empty); Assert.That(result[0].Notes, Is.Empty); Assert.That(result[1].Quota, Is.EqualTo(" Part-Time")); Assert.That(result[1].Notes, Is.EqualTo("This is a note")); }
public void TestReadWithTrimmingConverter() { var result = FastCsvReader.ReadAs <DefaultData>(testData1, converter: ConverterSpecs.StringTrim).ToArray(); Assert.That(result.Length, Is.EqualTo(2)); Assert.That(result[0].Area, Is.EqualTo(1)); Assert.That(result[0].Quota, Is.EqualTo("Full Time")); Assert.That(result[0].Remarks, Is.Empty); Assert.That(result[0].Notes, Is.Empty); Assert.That(result[1].Quota, Is.EqualTo("Part-Time")); Assert.That(result[1].Notes, Is.EqualTo("This is a note")); }
public void TestWithContainedQuotedCommasAndTrimming() { var result = FastCsvReader.ReadAs <DefaultData2>(testData2, converter: ConverterSpecs.StringTrim).ToArray(); Assert.That(result.Length, Is.EqualTo(2)); Assert.That(result[0].Area, Is.EqualTo(1)); Assert.That(result[0].QuotaValuesAndResults, Is.EqualTo("Full Time, Part-Time and Zero-hour")); Assert.That(result[0].Remarks, Is.Empty); Assert.That(result[0].Notes, Is.Empty); Assert.That(result[1].QuotaValuesAndResults, Is.EqualTo("Part-Time")); Assert.That(result[1].Notes, Is.EqualTo("This is a note")); }
public void Init() { if (!File.Exists(_fileName)) { return; } CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.Open, FileAccess.Read)) { var reader = new FastCsvReader(stream, Encoding.UTF8); reader.NextLine(); reader.Skip(); var fields = new string[reader.ColumnCount - 1]; for (var i = 0; i < reader.ColumnCount - 1; i++) { fields[i] = reader.ReadString(); } reader.NextLine(); reader.Skip(); var types = new Type[reader.ColumnCount - 1]; for (var i = 0; i < reader.ColumnCount - 1; i++) { types[i] = reader.ReadString().To <Type>(); _fieldTypes.Add(fields[i], types[i]); } var idGenerator = new SecurityIdGenerator(); while (reader.NextLine()) { var secId = idGenerator.Split(reader.ReadString()); var values = new Dictionary <object, object>(); for (var i = 0; i < fields.Length; i++) { values[fields[i]] = reader.ReadString().To(types[i]); } _cache.Add(secId, values); } } }); }
protected override Exchange Read(FastCsvReader reader) { var board = new Exchange { Name = reader.ReadString(), CountryCode = reader.ReadNullableEnum <CountryCodes>(), EngName = reader.ReadString(), RusName = reader.ReadString(), //ExtensionInfo = Deserialize<Dictionary<object, object>>(reader.ReadString()) }; return(board); }