Exemplo n.º 1
0
 public void Update(DateTime to, int takeCount)
 {
     Candle[] candles;
     if (store.IsCacheAvailable(entry.Value, to, takeCount))
     {
         candles = store.GetCandles(entry.Value, to, takeCount);
     }
     else
     {
         candles = provider.GetCandles(chart.Symbol, chart.Range, to, takeCount);
         store.AddCandles(entry.Value, to, candles);
     }
     chart.AddCandles(candles);
 }
Exemplo n.º 2
0
        public void ストアに登録済みのデータが存在する場合に終了時刻のみを指定してフェッチするとプロバイダーからデータを取得しない()
        {
            var symbol  = new TradingSymbol("USD_JPY");
            var range   = ChartRange.Daily;
            var chart   = new CandleChart(symbol, range);
            var from    = new DateTime(2017, 12, 1, 0, 0, 0, DateTimeKind.Utc);
            var to      = from.AddDays(10);
            var candles = Seeds.CreateRomdomCandles(from, to, range);

            // プロバイダーのセットアップ
            var provider = new MockCandleProvider();

            provider.SetCandle(range, candles);

            // ストアは空
            using (var store = new CandleChartStore(new DbContextOptionsBuilder()
                                                    .UseInMemoryDatabase("CandleChartUpdaterTestDb4")
                                                    .Options))
            {
                // ストアに保存
                var entry = store.FindOrCreateEntry(symbol, range);
                store.AddCandles(entry, from, to, candles.ToArray());
                var chartUpdater = new CandleChartUpdater(chart, store, provider);
                chartUpdater.Update(from, 1);
                chartUpdater.Update(to);

                Assert.AreEqual(11, store.Candles.Count());
                Assert.IsFalse(provider.ProvidedCandles.Any());
            }
        }