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