protected override TimeSpan OnProcess() { // если фильтр по инструментам выключен (выбран инструмент все инструменты) if (this.GetAllSecurity() != null) { //throw new InvalidOperationException("Источник не поддерживает закачку данных по всем инструментам."); this.AddWarningLog(LocalizedStrings.Str2292); return TimeSpan.MaxValue; } var source = new OandaHistorySource(); var startDate = _settings.StartFrom; var endDate = DateTime.Today - TimeSpan.FromDays(_settings.Offset); var allDates = startDate.Range(endDate, TimeSpan.FromDays(1)).ToArray(); foreach (var security in GetWorkingSecurities()) { if (!CanProcess()) break; if (!security.MarketDataTypesSet.Contains(typeof(Level1ChangeMessage))) { this.AddDebugLog(LocalizedStrings.MarketDataNotEnabled, security.Security.Id, typeof(Level1ChangeMessage).Name); break; } var storage = StorageRegistry.GetLevel1MessageStorage(security.Security, _settings.Drive, _settings.StorageFormat); var emptyDates = allDates.Except(storage.Dates).ToArray(); foreach (var emptyDate in emptyDates) { if (!CanProcess()) break; try { this.AddInfoLog(LocalizedStrings.Str3838Params, emptyDate, security.Security.Id); var rates = source.LoadRates(security.Security, emptyDate, emptyDate); if (rates.Any()) SaveLevel1Changes(security, rates); else this.AddDebugLog(LocalizedStrings.NoData); } catch (Exception ex) { HandleError(new InvalidOperationException(LocalizedStrings.Str3839Params .Put(emptyDate, security.Security.Id), ex)); } } } if (CanProcess()) this.AddInfoLog(LocalizedStrings.Str2300); return base.OnProcess(); }
protected override TimeSpan OnProcess() { // если фильтр по инструментам выключен (выбран инструмент все инструменты) if (this.GetAllSecurity() != null) { //throw new InvalidOperationException("Источник не поддерживает закачку данных по всем инструментам."); this.AddWarningLog(LocalizedStrings.Str2292); return(TimeSpan.MaxValue); } var source = new OandaHistorySource(); var startDate = _settings.StartFrom; var endDate = DateTime.Today - TimeSpan.FromDays(_settings.Offset); var allDates = startDate.Range(endDate, TimeSpan.FromDays(1)).ToArray(); foreach (var security in GetWorkingSecurities()) { if (!CanProcess()) { break; } if (!security.MarketDataTypesSet.Contains(typeof(Level1ChangeMessage))) { this.AddDebugLog(LocalizedStrings.MarketDataNotEnabled, security.Security.Id, typeof(Level1ChangeMessage).Name); break; } var storage = StorageRegistry.GetLevel1MessageStorage(security.Security, _settings.Drive, _settings.StorageFormat); var emptyDates = allDates.Except(storage.Dates).ToArray(); foreach (var emptyDate in emptyDates) { if (!CanProcess()) { break; } try { this.AddInfoLog(LocalizedStrings.Str3838Params, emptyDate, security.Security.Id); var rates = source.LoadRates(security.Security, emptyDate, emptyDate); if (rates.Any()) { SaveLevel1Changes(security, rates); } else { this.AddDebugLog(LocalizedStrings.NoData); } } catch (Exception ex) { HandleError(new InvalidOperationException(LocalizedStrings.Str3839Params .Put(emptyDate, security.Security.Id), ex)); } } } if (CanProcess()) { this.AddInfoLog(LocalizedStrings.Str2300); } return(base.OnProcess()); }