/// <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); }
public virtual byte[] Serialize(IEnumerable <TData> data, IMarketDataMetaInfo metaInfo) { return(CultureInfo.InvariantCulture.DoInCulture(() => { var sb = new StringBuilder(); var appendLine = metaInfo.Count > 0; foreach (var item in data) { if (appendLine) { sb.AppendLine(); } else { appendLine = true; } sb.Append(_format.PutEx(item)); } return _encoding.GetBytes(sb.ToString()); })); }
/// <summary> /// Write data to the specified writer. /// </summary> /// <param name="writer">CSV writer.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> protected override void Write(CsvFileWriter writer, ExecutionMessage data, IMarketDataMetaInfo metaInfo) { var row = new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.TransactionId.ToString(), data.OriginalTransactionId.ToString(), data.OrderId.ToString(), data.OrderStringId, data.OrderBoardId, data.UserOrderId, data.OrderPrice.ToString(), data.OrderVolume.ToString(), data.Balance.ToString(), data.VisibleVolume.ToString(), data.Side.ToString(), data.OriginSide.ToString(), data.OrderState.ToString(), data.OrderType.ToString(), data.TimeInForce.ToString(), data.TradeId.ToString(), data.TradeStringId, data.TradePrice.ToString(), data.TradeVolume.ToString(), data.PortfolioName, data.ClientCode, data.BrokerCode, data.DepoName, data.IsSystem.ToString(), data.HasOrderInfo.ToString(), data.HasTradeInfo.ToString(), data.Commission.ToString(), data.Currency.ToString(), data.Comment, data.SystemComment, data.DerivedOrderId.ToString(), data.DerivedOrderStringId, data.IsUpTick.ToString(), data.IsCancelled.ToString(), data.OpenInterest.ToString(), data.PnL.ToString(), data.Position.ToString(), data.Slippage.ToString(), data.TradeStatus.ToString(), data.OrderStatus.ToString(), data.Latency?.Ticks.ToString(), data.Error?.Message, data.ExpiryDate?.WriteDate(), data.ExpiryDate?.WriteTimeMls(), data.ExpiryDate?.ToString("zzz"), data.LocalTime.WriteTimeMls(), data.LocalTime.ToString("zzz"), }; writer.WriteRow(row); metaInfo.LastTime = data.ServerTime.UtcDateTime; }
public byte[] Serialize(IEnumerable <TData> data, IMarketDataMetaInfo metaInfo) { var writer = new BitArrayWriter(DataSize * data.Count() * 2); OnSave(writer, data, (TMetaInfo)metaInfo); return(writer.GetBytes()); }
/// <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 Serialize(Stream stream, IEnumerable <TData> data, IMarketDataMetaInfo metaInfo) { //var temp = new MemoryStream { Capacity = DataSize * data.Count() * 2 }; using (var writer = new BitArrayWriter(stream)) OnSave(writer, data, (TMetaInfo)metaInfo); //return stream.To<byte[]>(); }
public IEnumerable <TData> Deserialize(Stream stream, IMarketDataMetaInfo metaInfo) { var data = new MemoryStream(); stream.CopyTo(data); stream.Dispose(); return(new SimpleEnumerable <TData>(() => new MarketDataEnumerator(this, new BitArrayReader(data), (TMetaInfo)metaInfo))); }
/// <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); }
public IEnumerableEx <TData> Deserialize(Stream stream, IMarketDataMetaInfo metaInfo) { // TODO сделать BitArrayReader работающим с потоком var data = stream.ReadBuffer(); stream.Dispose(); return(new SimpleEnumerable <TData>(() => new MarketDataEnumerator(this, new BitArrayReader(data), (TMetaInfo)metaInfo)) .ToEx(metaInfo.Count)); }
/// <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>() }); }
public byte[] Serialize(IEnumerable <TData> data, IMarketDataMetaInfo metaInfo) { var stream = new MemoryStream { Capacity = DataSize * data.Count() * 2 }; using (var writer = new BitArrayWriter(stream)) OnSave(writer, data, (TMetaInfo)metaInfo); return(stream.To <byte[]>()); }
/// <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); }
/// <inheritdoc /> protected override void Write(CsvFileWriter writer, BoardStateMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.BoardCode, ((int)data.State).To <string>(), }); metaInfo.LastTime = data.ServerTime.UtcDateTime; }
/// <summary> /// Write data to the specified writer. /// </summary> /// <param name="writer">CSV writer.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> protected override void Write(CsvFileWriter writer, TimeQuoteChange data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.Price.ToString(), data.Volume.ToString(), data.Side.ToString() }); metaInfo.LastTime = data.ServerTime.UtcDateTime; }
/// <summary> /// Write data to the specified writer. /// </summary> /// <param name="writer">CSV writer.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> protected override void Write(CsvFileWriter writer, TCandleMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.OpenTime.WriteTimeMls(), data.OpenTime.ToString("zzz"), data.OpenPrice.ToString(), data.HighPrice.ToString(), data.LowPrice.ToString(), data.ClosePrice.ToString(), data.TotalVolume.ToString() }); }
public virtual IEnumerableEx <TData> Deserialize(Stream stream, IMarketDataMetaInfo metaInfo) { // TODO (переделать в будущем) var copy = new MemoryStream(); stream.CopyTo(copy); copy.Position = 0; stream.Dispose(); return(new SimpleEnumerable <TData>(() => new CsvReader(copy, _encoding, SecurityId, metaInfo.Date.Date, _executionType, _members)) .ToEx(metaInfo.Count)); }
public override byte[] Serialize(IEnumerable <QuoteChangeMessage> data, IMarketDataMetaInfo metaInfo) { var list = data.SelectMany(d => { var items = new List <TimeQuoteChange>(); items.AddRange(d.Bids.OrderBy(q => q.Price).Select(q => new TimeQuoteChange(q, d))); items.AddRange(d.Asks.OrderBy(q => q.Price).Select(q => new TimeQuoteChange(q, d))); return(items); }); return(_quoteSerializer.Serialize(list, metaInfo)); }
/// <inheritdoc /> protected override ExecutionMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { return(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(), }); }
/// <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 TCandleMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { return(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 }); }
/// <inheritdoc /> protected override NullableTimeQuoteChange Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var quote = new NullableTimeQuoteChange { ServerTime = reader.ReadTime(metaInfo.Date), }; var price = reader.ReadNullableDecimal(); var volume = reader.ReadNullableDecimal(); quote.Side = reader.ReadEnum <Sides>(); int?ordersCount = null; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { ordersCount = reader.ReadNullableInt(); } QuoteConditions condition = default; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { condition = reader.ReadNullableEnum <QuoteConditions>() ?? default; } if (price != null) { var qq = new QuoteChange { Price = price.Value, Volume = volume ?? 0, OrdersCount = ordersCount, Condition = condition, }; quote.Quote = qq; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { qq.StartPosition = reader.ReadNullableInt(); qq.EndPosition = reader.ReadNullableInt(); qq.Action = reader.ReadNullableEnum <QuoteChangeActions>(); } } return(quote); }
/// <summary> /// Создать <see cref="DataStorageReader{TData}"/>. /// </summary> /// <param name="stream">Поток.</param> /// <param name="metaInfo">Мета-информация о данных за один день.</param> /// <param name="serializer">Сериализатор.</param> public DataStorageReader(Stream stream, IMarketDataMetaInfo metaInfo, IMarketDataSerializer <TData> serializer) { if (stream == null) { throw new ArgumentNullException("stream"); } if (serializer == null) { throw new ArgumentNullException("serializer"); } _stream = stream; _metaInfo = metaInfo; _serializer = serializer; }
/// <summary> /// Write data to the specified writer. /// </summary> /// <param name="writer">CSV writer.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> protected override void Write(CsvFileWriter writer, NewsMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.Headline, data.Source, data.Url?.ToString(), data.Id, data.BoardCode, data.SecurityId?.SecurityCode }); metaInfo.LastTime = data.ServerTime.UtcDateTime; }
/// <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.ReadNullableLong(), 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(); } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { ol.SeqNum = reader.ReadNullableLong() ?? 0L; } if ((reader.ColumnCurr + 1) < reader.ColumnCount) { ol.OrderStringId = reader.ReadString(); ol.TradeStringId = reader.ReadString(); ol.OrderBuyId = reader.ReadNullableLong(); ol.OrderSellId = reader.ReadNullableLong(); ol.IsUpTick = reader.ReadNullableBool(); ol.Yield = reader.ReadNullableDecimal(); ol.TradeStatus = reader.ReadNullableInt(); ol.OpenInterest = reader.ReadNullableDecimal(); ol.OriginSide = reader.ReadNullableEnum <Sides>(); } return(ol); }
/// <inheritdoc /> protected override NullableTimeQuoteChange Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { var quote = new NullableTimeQuoteChange { ServerTime = reader.ReadTime(metaInfo.Date), Price = reader.ReadNullableDecimal(), Volume = reader.ReadDecimal(), Side = reader.ReadEnum <Sides>() }; if ((reader.ColumnCurr + 1) < reader.ColumnCount) { quote.OrdersCount = reader.ReadNullableInt(); } return(quote); }
/// <summary> /// Write data to the specified writer. /// </summary> /// <param name="writer">CSV writer.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> protected override void Write(CsvFileWriter writer, ExecutionMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.TradeId.ToString(), data.TradePrice.ToString(), data.TradeVolume.ToString(), data.OriginSide.ToString(), data.OpenInterest.ToString(), data.IsSystem.ToString() }); metaInfo.LastTime = data.ServerTime.UtcDateTime; metaInfo.LastId = data.GetTradeId(); }
/// <inheritdoc /> protected override void Write(CsvFileWriter writer, TCandleMessage data, IMarketDataMetaInfo metaInfo) { if (data.State == CandleStates.Active) { throw new ArgumentException(LocalizedStrings.CandleActiveNotSupport.Put(data), nameof(data)); } writer.WriteRow(new[] { data.OpenTime.WriteTimeMls(), data.OpenTime.ToString("zzz"), data.OpenPrice.ToString(), data.HighPrice.ToString(), data.LowPrice.ToString(), data.ClosePrice.ToString(), data.TotalVolume.ToString() }.Concat(data.BuildFrom.ToCsv())); }
/// <summary> /// Cast data into stream. /// </summary> /// <param name="stream">Data stream.</param> /// <param name="data">Data.</param> /// <param name="metaInfo">Meta-information on data for one day.</param> public virtual void Serialize(Stream stream, IEnumerable <TData> data, IMarketDataMetaInfo metaInfo) { CultureInfo.InvariantCulture.DoInCulture(() => { var writer = new CsvFileWriter(stream, Encoding); try { foreach (var item in data) { Write(writer, item, metaInfo); } } finally { writer.Writer.Flush(); } }); }
/// <inheritdoc /> protected override void Write(CsvFileWriter writer, ExecutionMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.TradeId.ToString(), data.TradePrice.ToString(), data.TradeVolume.ToString(), data.OriginSide.ToString(), data.OpenInterest.ToString(), data.IsSystem.ToString(), data.IsUpTick.ToString(), data.TradeStringId, data.Currency.ToString(), }.Concat(data.BuildFrom.ToCsv())); metaInfo.LastTime = data.ServerTime.UtcDateTime; metaInfo.LastId = data.TradeId; }
/// <inheritdoc /> protected override void Write(CsvFileWriter writer, NewsMessage data, IMarketDataMetaInfo metaInfo) { writer.WriteRow(new[] { data.ServerTime.WriteTimeMls(), data.ServerTime.ToString("zzz"), data.Headline, data.Source, data.Url, data.Id, data.BoardCode, data.SecurityId?.SecurityCode, data.Priority?.To <string>(), data.Language, data.SecurityId?.BoardCode, data.ExpiryDate?.ToString(_expiryFormat), }); metaInfo.LastTime = data.ServerTime.UtcDateTime; }
/// <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 ExecutionMessage Read(FastCsvReader reader, IMarketDataMetaInfo metaInfo) { return(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(), }); }