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); } }); }
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; } } }
// 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"); }