/// <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)))); }
protected override Position Read(FastCsvReader reader) { var position = new Position { Portfolio = Registry.Portfolios.ReadById(reader.ReadString()), Security = Registry.Securities.ReadById(reader.ReadString()), 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 = reader.ReadDateTime(_dateTimeFormat), LocalTime = reader.ReadDateTime(_dateTimeFormat) }; return(position); }
protected override Portfolio Read(FastCsvReader reader) { var portfolio = new Portfolio { Name = reader.ReadString(), Board = Registry.ExchangeBoards.ReadById(reader.ReadString()), Leverage = reader.ReadNullableDecimal(), BeginValue = reader.ReadNullableDecimal(), CurrentValue = reader.ReadNullableDecimal(), BlockedValue = reader.ReadNullableDecimal(), VariationMargin = reader.ReadNullableDecimal(), Commission = reader.ReadNullableDecimal(), Currency = reader.ReadNullableEnum <CurrencyTypes>(), State = reader.ReadNullableEnum <PortfolioStates>(), Description = reader.ReadString(), LastChangeTime = reader.ReadDateTime(_dateTimeFormat), LocalTime = reader.ReadDateTime(_dateTimeFormat) }; return(portfolio); }
/// <summary> /// Load data from the specified reader. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns>Data.</returns> protected override ExecutionMessage Read(FastCsvReader reader, DateTime date) { var msg = new ExecutionMessage { SecurityId = SecurityId, ExecutionType = ExecutionTypes.Transaction, ServerTime = reader.ReadTime(date), TransactionId = reader.ReadLong(), OriginalTransactionId = reader.ReadLong(), OrderId = reader.ReadNullableLong(), OrderStringId = reader.ReadString(), OrderBoardId = reader.ReadString(), UserOrderId = reader.ReadString(), OrderPrice = reader.ReadDecimal(), OrderVolume = reader.ReadNullableDecimal(), Balance = reader.ReadNullableDecimal(), VisibleVolume = reader.ReadNullableDecimal(), Side = reader.ReadEnum <Sides>(), OriginSide = reader.ReadNullableEnum <Sides>(), OrderState = reader.ReadNullableEnum <OrderStates>(), OrderType = reader.ReadNullableEnum <OrderTypes>(), TimeInForce = reader.ReadNullableEnum <TimeInForce>(), TradeId = reader.ReadNullableLong(), TradeStringId = reader.ReadString(), TradePrice = reader.ReadNullableDecimal(), TradeVolume = reader.ReadNullableDecimal(), PortfolioName = reader.ReadString(), ClientCode = reader.ReadString(), BrokerCode = reader.ReadString(), DepoName = reader.ReadString(), IsSystem = reader.ReadNullableBool(), HasOrderInfo = reader.ReadBool(), HasTradeInfo = reader.ReadBool(), Commission = reader.ReadNullableDecimal(), Currency = reader.ReadNullableEnum <CurrencyTypes>(), Comment = reader.ReadString(), SystemComment = reader.ReadString(), DerivedOrderId = reader.ReadNullableLong(), DerivedOrderStringId = reader.ReadString(), IsUpTick = reader.ReadNullableBool(), IsCancelled = reader.ReadBool(), OpenInterest = reader.ReadNullableDecimal(), PnL = reader.ReadNullableDecimal(), Position = reader.ReadNullableDecimal(), Slippage = reader.ReadNullableDecimal(), TradeStatus = reader.ReadNullableInt(), OrderStatus = reader.ReadNullableEnum <OrderStatus>(), Latency = reader.ReadNullableLong().To <TimeSpan?>(), }; var error = reader.ReadString(); if (!error.IsEmpty()) { msg.Error = new InvalidOperationException(error); } var dt = reader.ReadNullableDateTime(DateFormat); if (dt != null) { msg.ExpiryDate = (dt.Value + reader.ReadDateTime(TimeFormat).TimeOfDay).ToDateTimeOffset(TimeSpan.Parse(reader.ReadString().Replace("+", string.Empty))); } return(msg); }
/// <summary> /// Read data from the specified reader. /// </summary> /// <param name="reader">CSV reader.</param> /// <param name="date">Date.</param> /// <returns>Data.</returns> protected override Level1ChangeMessage Read(FastCsvReader reader, DateTime date) { var level1 = new Level1ChangeMessage { SecurityId = SecurityId, ServerTime = reader.ReadTime(date), }; foreach (var field in _level1Fields) { switch (field) { case Level1Fields.BestAskTime: case Level1Fields.BestBidTime: case Level1Fields.LastTradeTime: var dt = reader.ReadNullableDateTime(DateFormat); if (dt != null) { level1.Changes.Add(field, (dt.Value + reader.ReadDateTime(TimeFormat).TimeOfDay).ToDateTimeOffset(TimeSpan.Parse(reader.ReadString().Replace("+", string.Empty)))); } else { reader.Skip(2); } break; case Level1Fields.LastTradeId: var id = reader.ReadNullableLong(); if (id != null) { level1.Changes.Add(field, id); } break; case Level1Fields.AsksCount: case Level1Fields.BidsCount: case Level1Fields.TradesCount: var count = reader.ReadNullableLong(); if (count != null) { level1.Changes.Add(field, count); } break; case Level1Fields.LastTradeUpDown: case Level1Fields.IsSystem: var flag = reader.ReadNullableBool(); if (flag != null) { level1.Changes.Add(field, flag); } break; default: var value = reader.ReadNullableDecimal(); if (value != null) { level1.Changes.Add(field, value); } break; } } return(level1); }