Beispiel #1
0
        /// <summary>
        /// Синхронизация блока данных.
        /// Запрашивает с сервера данные и записывает их в базу.
        /// </summary>
        /// <param name="insStore">Поток данных</param>
        /// <param name="date1">Дата начала блока</param>
        /// <param name="date2">Дата окончания блока</param>
        /// <param name="isLastDirty">true - данные за последнюю дату неполные</param>
        /// <param name="cancel">Токен отмены операции</param>
        /// <returns>Задача, выдающая список баров</returns>
        private async Task <IEnumerable <Bar> > SyncDataBlock(InsStore insStore, DateTime date1, DateTime date2,
                                                              bool isLastDirty, CancellationToken cancel)
        {
            CommonData.Instrum ins = _instrumBL.GetInstrumByID(insStore.InsID);
            _logger.LogInformation("SyncDataBlock {Ticker} {date1} to {date2}", ins.Ticker, date1.ToString("yyyy-MM-dd"), date2.ToString("yyyy-MM-dd"));

            var bars = await _provider.GetDataAsync(ins.Ticker, insStore.Tf, date1, date2);

            if (bars == null)
            {
                return(null);
            }

            _insStoreBL.InsertData(insStore.InsStoreID, ins.Decimals, bars, date1, date2, isLastDirty, cancel);
            _logger.LogInformation("SyncDataBlock.InsertBars: {count}", bars.Count().ToString());

            return(bars);
        }