Example #1
0
        /// <summary>
        /// пользователь кликнул ссылку в окне сообщений - заполнить все гэпы
        /// (по всем графикам)
        /// </summary>
        private bool ProcessUserClickOnFillGapLink(string linkTarget)
        {
            if (linkTarget != LinkTargetFillGaps) return false;
            // заполнить дырки
            var dlg =
                new DownloadQuotesForm(
                    Charts.Select(c => c.chart.Symbol)
                          .Distinct()
                          .ToDictionary(s => s, s =>
                              {
                                  var interval = AtomCandleStorage.Instance.GetDataRange(s);
                                  return interval.HasValue
                                             ? interval.Value.b
                                             : DateTime.Now.AddDays(-1);
                              }), 0);
            dlg.LoadCompleted += delegate
                {
                    // обновить графики
                    AddMessageToStatusPanelSafe(DateTime.Now, "Обновление графиков...");
                    foreach (var ticker in dlg.TickersToUpload)
                        ReopenChartsSafe(ticker);

                    // вывести сообщение - готово
                    AddMessageToStatusPanelSafe(DateTime.Now, dlg.TickersToUpload.Count == 1
                                                                  ? "График " + dlg.TickersToUpload[0] + " обновлен"
                                                                  : "Обновлено " + dlg.TickersToUpload.Count +
                                                                    " графиков");
                };
            dlg.ShowDialog(this);
            return true;
        }
        /// <summary>
        /// этот метод дергает ферма роботов при запуске
        /// актуализируется кеш котировок
        /// если по какой-либо паре в кеше нет данных либо недостаточно
        /// продолжительная история - делается запрос из БД
        /// 
        /// на входе словарь: тикер - старт загрузки истории (предполагается время окончания - DateTime.Now)
        /// </summary>
        public void UpdateTickersCacheForRobots(
            Dictionary<string, DateTime> tickersToUpload, 
            int minMinutesToUpdateCache)
        {
            if (tickersToUpload == null)
                throw new Exception("UpdateTickersCacheForRobots: неправильные входные данные tickersToUpload == null");

            var dlg = new DownloadQuotesForm(tickersToUpload, minMinutesToUpdateCache);
            dlg.ShowDialog();
        }