Example #1
0
		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();
		}
Example #2
0
        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());
        }