Exemple #1
0
        protected override TimeSpan OnProcess()
        {
            // если фильтр по инструментам выключен (выбран инструмент все инструменты)
            if (this.GetAllSecurity() != null)
            {
                //throw new InvalidOperationException("Источник не поддерживает закачку данных по всем инструментам.");
                this.AddWarningLog(LocalizedStrings.Str2292);
                return(TimeSpan.MaxValue);
            }

            var source = new AlorHistorySource();

            if (_settings.UseTemporaryFiles != TempFiles.NotUse)
            {
                source.DumpFolder = GetTempPath();
            }

            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;
                }

                #region LoadCandles
                if (security.CandleSeries.Any())
                {
                    foreach (var series in security.CandleSeries)
                    {
                        if (!CanProcess())
                        {
                            break;
                        }

                        if (series.CandleType != typeof(TimeFrameCandle))
                        {
                            this.AddWarningLog(LocalizedStrings.Str2296Params, series);
                            continue;
                        }

                        var storage    = StorageRegistry.GetCandleStorage(series.CandleType, security.Security, series.Arg, _settings.Drive, _settings.StorageFormat);
                        var emptyDates = allDates.Except(storage.Dates).ToArray();

                        if (emptyDates.IsEmpty())
                        {
                            this.AddInfoLog(LocalizedStrings.Str2297Params, series.Arg, security.Security.Id);
                            continue;
                        }

                        foreach (var emptyDate in emptyDates)
                        {
                            if (!CanProcess())
                            {
                                break;
                            }

                            if (_settings.IgnoreWeekends && !security.IsTradeDate(emptyDate))
                            {
                                this.AddDebugLog(LocalizedStrings.WeekEndDate, emptyDate);
                                continue;
                            }

                            try
                            {
                                this.AddInfoLog(LocalizedStrings.Str2298Params, series.Arg, emptyDate, security.Security.Id);
                                var candles = source.GetCandles(security.Security, (TimeSpan)series.Arg, emptyDate, emptyDate);

                                if (candles.Any())
                                {
                                    SaveCandles(security, candles);
                                }
                                else
                                {
                                    this.AddDebugLog(LocalizedStrings.NoData);
                                }

                                if (_settings.UseTemporaryFiles == TempFiles.UseAndDelete)
                                {
                                    File.Delete(source.GetDumpFile(security.Security, emptyDate, emptyDate, typeof(TimeFrameCandle), series.Arg));
                                }
                            }
                            catch (Exception ex)
                            {
                                HandleError(new InvalidOperationException(LocalizedStrings.Str2299Params
                                                                          .Put(series.Arg, emptyDate, security.Security.Id), ex));
                            }
                        }
                    }
                }
                #endregion
            }

            if (CanProcess())
            {
                this.AddInfoLog(LocalizedStrings.Str2300);
            }

            return(base.OnProcess());
        }
Exemple #2
0
		protected override TimeSpan OnProcess()
		{
			// если фильтр по инструментам выключен (выбран инструмент все инструменты)
			if (this.GetAllSecurity() != null)
			{
				//throw new InvalidOperationException("Источник не поддерживает закачку данных по всем инструментам.");
				this.AddWarningLog(LocalizedStrings.Str2292);
				return TimeSpan.MaxValue;
			}

			var source = new AlorHistorySource();

			if (_settings.UseTemporaryFiles != TempFiles.NotUse)
				source.DumpFolder = GetTempPath();

			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;

				#region LoadCandles
				if (security.CandleSeries.Any())
				{
					foreach (var series in security.CandleSeries)
					{
						if (!CanProcess())
							break;

						if (series.CandleType != typeof(TimeFrameCandle))
						{
							this.AddWarningLog(LocalizedStrings.Str2296Params, series);
							continue;
						}

						var storage = StorageRegistry.GetCandleStorage(series.CandleType, security.Security, series.Arg, _settings.Drive, _settings.StorageFormat);
						var emptyDates = allDates.Except(storage.Dates).ToArray();

						if (emptyDates.IsEmpty())
						{
							this.AddInfoLog(LocalizedStrings.Str2297Params, series.Arg, security.Security.Id);
							continue;
						}

						foreach (var emptyDate in emptyDates)
						{
							if (!CanProcess())
								break;

							if (_settings.IgnoreWeekends && !security.IsTradeDate(emptyDate))
							{
								this.AddDebugLog(LocalizedStrings.WeekEndDate, emptyDate);
								continue;
							}

							try
							{
								this.AddInfoLog(LocalizedStrings.Str2298Params, series.Arg, emptyDate, security.Security.Id);
								var candles = source.GetCandles(security.Security, (TimeSpan)series.Arg, emptyDate, emptyDate);
								
								if (candles.Any())
									SaveCandles(security, candles);
								else
									this.AddDebugLog(LocalizedStrings.NoData);

								if (_settings.UseTemporaryFiles == TempFiles.UseAndDelete)
									File.Delete(source.GetDumpFile(security.Security, emptyDate, emptyDate, typeof(TimeFrameCandle), series.Arg));
							}
							catch (Exception ex)
							{
								HandleError(new InvalidOperationException(LocalizedStrings.Str2299Params
									.Put(series.Arg, emptyDate, security.Security.Id), ex));
							}
						}
					}
				}
				#endregion
			}

			if (CanProcess())
				this.AddInfoLog(LocalizedStrings.Str2300);

			return base.OnProcess();
		}