Esempio n. 1
0
            private void Load()
            {
                if (!File.Exists(_file))
                {
                    return;
                }

                var proxySet = _format
                               .Split(';')
                               .Select(s => MemberProxy.Create(typeof(Security), s.Substring(1, s.Length - 2)))
                               .ToArray();

                CultureInfo.InvariantCulture.DoInCulture(() =>
                {
                    foreach (var line in File.ReadAllLines(_file))
                    {
                        var security = new Security();

                        var cells = line.Split(';');

                        for (var i = 0; i < proxySet.Length; i++)
                        {
                            proxySet[i].SetValue(security, cells[i].To(proxySet[i].ReturnType));
                        }

                        var id         = security.Id.ToSecurityId();
                        security.Code  = id.SecurityCode;
                        security.Board = _parent.ExchangeInfoProvider.GetOrCreateBoard(id.BoardCode);

                        _securities.Add(security);
                    }
                });
            }
Esempio n. 2
0
        public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType, Encoding encoding = null)
        {
            if (securityId.IsDefault() && typeof(TData) != typeof(NewsMessage))
            {
                throw new ArgumentNullException("securityId");
            }

            SecurityId     = securityId;
            _executionType = executionType;
            _encoding      = encoding ?? Encoding.UTF8;

            if (typeof(TData) == typeof(QuoteChangeMessage))
            {
                return;
            }

            _format = GetFormat(executionType).Put(_timeFormat);

            var timeFormat = ":" + _timeFormat;

            if (_isLevel1)
            {
                return;
            }

            _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key =>
                                     _format
                                     .Split(';')
                                     .Select(s =>
                                             MemberProxy.Create(typeof(TData),
                                                                s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty)))
                                     .ToArray());
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CsvMarketDataSerializer{T}"/>.
        /// </summary>
        /// <param name="securityId">Security ID.</param>
        /// <param name="executionType">The type of execution.</param>
        /// <param name="candleArg">Candle arg.</param>
        /// <param name="encoding">Encoding.</param>
        public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType = null, object candleArg = null, Encoding encoding = null)
        {
            if (securityId.IsDefault() && !_isNews)
            {
                throw new ArgumentNullException(nameof(securityId));
            }

            SecurityId     = securityId;
            _executionType = executionType;
            _candleArg     = candleArg;
            _encoding      = encoding ?? _utf;

            if (_isQuotes)
            {
                return;
            }

            _format = GetFormat(executionType).Replace(":{0}", ".UtcDateTime:" + _timeFormat);

            if (_isLevel1)
            {
                return;
            }

            const string timeFormat = ":" + _timeFormat;

            _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key =>
                                     _format
                                     .Split(';')
                                     .Skip(_skipColumns)
                                     .Select(s =>
                                             MemberProxy.Create(typeof(TData),
                                                                s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty)))
                                     .Concat(_isNews ? new[] { MemberProxy.Create(typeof(TData), "SecurityId") } : Enumerable.Empty <MemberProxy>())
                                     .ToArray());

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                switch (executionType)
                {
                case ExecutionTypes.Tick:
                case ExecutionTypes.OrderLog:
                    _toId = lines => lines[_skipColumns].To <long>();
                    break;
                }
            }
        }
Esempio n. 4
0
        // ReSharper restore StaticFieldInGenericType

        static CsvMarketDataSerializer()
        {
            _timeFormat = GetTimeFormat();

            if (typeof(TData) == typeof(ExecutionMessage) || typeof(TData).IsSubclassOf(typeof(CandleMessage)))
            {
                _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId");
            }

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType");
            }

            _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>());

            _dateMember = MemberProxy.Create(typeof(TData),
                                             typeof(TData).IsSubclassOf(typeof(CandleMessage)) ? "OpenTime" : "ServerTime");
        }
        // ReSharper restore StaticFieldInGenericType

        static CsvMarketDataSerializer()
        {
            var isCandles = typeof(TData).IsCandleMessage();

            if (typeof(TData) == typeof(ExecutionMessage) || isCandles)
            {
                _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId");
            }

            if (typeof(TData) == typeof(ExecutionMessage))
            {
                _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType");
            }

            if (isCandles)
            {
                _setCandleArg = MemberProxy.Create(typeof(TData), "Arg");
            }

            _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>());

            _dateMember = MemberProxy.Create(typeof(TData), isCandles ? "OpenTime" : "ServerTime");
        }