Пример #1
0
        /// <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))));
        }
Пример #2
0
            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);
            }
Пример #3
0
            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);
            }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }