public CsvCandleDataSource(string csvPath, MarketFeedSettings settings, CsvLastRunDataStore parent, ILogger <CsvCandleDataSource> logger)
 {
     _csvPath = csvPath; // TODO: clean this up & use in CsvLastRunDataStore
     Settings = settings;
     _parent  = parent;
     _logger  = logger;
 }
        public bool HasOverlay(bool hasOverlay, bool appSettingHasOverlayFastUpdate)
        {
            var settings = new MarketFeedSettings(ProductType.BatUsdc, CandleGranularity.Hour1);

            var c = MockCandleMonitorData_ForIsFastUpdate(settings, hasOverlay, appSettingHasOverlayFastUpdate, null);

            return(c.HasOverlay);
        }
        public bool IsFastUpdate(bool hasOverlay, bool appSettingHasOverlayFastUpdate, DateTime?tradeFromUtc)
        {
            var settings = new MarketFeedSettings(ProductType.BatUsdc, CandleGranularity.Hour1);

            var c = MockCandleMonitorData_ForIsFastUpdate(settings, hasOverlay, appSettingHasOverlayFastUpdate, tradeFromUtc);

            return(c.IsFastUpdate);
        }
        public void Settings()
        {
            var settings = new MarketFeedSettings(ProductType.BatUsdc, CandleGranularity.Hour1);

            var c = MockCandleMonitorData_ForIsFastUpdate(settings, false, false, null);

            Assert.That(c.Settings, Is.EqualTo(settings));
        }
示例#5
0
 internal void Save(TimeSeries series, MarketFeedSettings settings)
 {
     // Save the csv data
     CsvTimeSeries.Save(_csvPath, series);
     // Save the last run json for next restart
     Set(settings.Granularity, series.LastTick.EndTime.InUtc().ToDateTimeUtc());
     File.WriteAllText(_fullPath, JsonConvert.SerializeObject(new CsvLastRunStoreSerializer(this)));
 }
        public ICandleDataSource Load(MarketFeedSettings settings)
        {
            if (DataStores.ContainsKey(settings))
            {
                return(DataStores[settings]);
            }

            var rc = new SqlServerCandleDataSource(settings, _serviceScopeFactory);

            DataStores.Add(settings, rc);
            return(rc);
        }
示例#7
0
        public SqlServerCandleDataSource(MarketFeedSettings settings, IServiceScopeFactory serviceScopeFactory)
        {
            _scopeFactory = serviceScopeFactory;
            Settings      = settings;

            using (var scope = _scopeFactory.CreateScope())
            {
                var dbContext = scope.ServiceProvider.GetRequiredService <CryptoDbX>();

                _marketDataFeedId = dbContext.MarketDatafeed.Single(
                    df => df.ExchangeId == 1 &&
                    df.ProductId == Settings.ProductId &&
                    df.Granularity == Settings.Granularity).MarketDatafeedId;

                _logger = scope.ServiceProvider.GetService <ILogger <SqlServerCandleDataSource> >();
            }
        }
示例#8
0
        public ICandleDataSource Load(MarketFeedSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            if (!_lastRun.ContainsKey(settings.ProductId))
            {
                _lastRun.Add(settings.ProductId, CsvLastRunDataStore.Load(_appSettings.CsvPath, settings.ProductId));
            }

            if (DataStores.ContainsKey(settings))
            {
                return(DataStores[settings]);
            }

            var rc = new CsvCandleDataSource(_appSettings.CsvPath, settings, _lastRun[settings.ProductId], _logger);

            DataStores.Add(settings, rc);
            return(rc);
        }
        private static CandleMonitorData MockCandleMonitorData_ForIsFastUpdate(
            MarketFeedSettings settings,
            bool hasOverlay,
            bool appSettingHasOverlayFastUpdate,
            DateTime?tradeFromUtc)
        {
            var feed = new CandleMonitorFeeds(settings.ProductId, settings.Granularity, hasOverlay, tradeFromUtc);

            var mockCandleDataSource = new Mock <ICandleDataSource>();

            var mockCandleProvider = new Mock <ICandleProvider>();

            mockCandleProvider.Setup(o => o.Load(settings).LastUpdatedUtc).Returns(DateTime.UtcNow);
            mockCandleProvider.SetupGet(o => o.DataStores[settings]).Returns(mockCandleDataSource.Object);

            var mockAppSetting = new Mock <IAppSettingCandleMonitor>();

            mockAppSetting.SetupProperty(o => o.HasOverlayFastUpdate, appSettingHasOverlayFastUpdate);

            var c = new CandleMonitorData(feed, mockCandleProvider.Object, mockAppSetting.Object);

            return(c);
        }
示例#10
0
 public CandlesReceivedEventArgs(MarketFeedSettings settings, TimeSeries series, CandleSource candleSource)
 {
     MarketFeedSettings = settings;
     TimeSeries         = series;
     CandleSource       = candleSource;
 }