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); }
protected override ExchangeBoard Read(FastCsvReader reader) { var board = new ExchangeBoard { Code = reader.ReadString(), Exchange = Registry.Exchanges.ReadById(reader.ReadString()), ExpiryTime = reader.ReadTimeSpan(_timeSpanFormat), IsSupportAtomicReRegister = reader.ReadBool(), IsSupportMarketOrders = reader.ReadBool(), TimeZone = TimeZoneInfo.FindSystemTimeZoneById(reader.ReadString()), WorkingTime = { Periods = Deserialize <List <WorkingTimePeriod> >(reader.ReadString()), SpecialWorkingDays = Deserialize <List <DateTime> >(reader.ReadString()), SpecialHolidays = Deserialize <List <DateTime> >(reader.ReadString()) }, ExtensionInfo = Deserialize <Dictionary <object, object> >(reader.ReadString()) }; return(board); }
/// <inheritdoc /> protected override ExecutionMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var msg = new ExecutionMessage { SecurityId = SecurityId, ExecutionType = ExecutionTypes.Transaction, ServerTime = reader.ReadTime(metaInfo.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(), }; reader.ReadNullableLong(); reader.ReadString(); msg.IsUpTick = reader.ReadNullableBool(); msg.IsCancellation = reader.ReadBool(); msg.OpenInterest = reader.ReadNullableDecimal(); msg.PnL = reader.ReadNullableDecimal(); msg.Position = reader.ReadNullableDecimal(); msg.Slippage = reader.ReadNullableDecimal(); msg.TradeStatus = reader.ReadNullableInt(); msg.OrderStatus = reader.ReadNullableLong(); msg.Latency = reader.ReadNullableLong().To <TimeSpan?>(); var error = reader.ReadString(); if (!error.IsEmpty()) { msg.Error = new InvalidOperationException(error); } var dtStr = reader.ReadString(); if (dtStr != null) { msg.ExpiryDate = (dtStr.ToDateTime() + reader.ReadString().ToTimeMls()).ToDateTimeOffset(TimeSpan.Parse(reader.ReadString().Remove("+"))); } else { reader.Skip(2); } msg.LocalTime = reader.ReadTime(metaInfo.Date); msg.IsMarketMaker = reader.ReadNullableBool(); if ((reader.ColumnCurr + 1) < reader.ColumnCount) { msg.CommissionCurrency = reader.ReadString(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { msg.IsMargin = reader.ReadNullableBool(); msg.IsManual = reader.ReadNullableBool(); } return(msg); }
/// <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); }