public FetchingWorker(ILog log) { var proxySettings = File.Exists("proxy.settings.json") ? JsonConvert.DeserializeObject <ExchangeProxySettings>(File.ReadAllText("proxy.settings.json")) : new ExchangeProxySettings(); log = log.ForContext("FetchingWorker"); var service = new BlocktraderService(log, proxySettings); var manager = new FileTimestampManager(log); async Task DownloadTimestampsAsync() { var timestamp = await service.GetCurrentTimestampAsync().ConfigureAwait(false); await manager.WriteAsync(timestamp); } scheduler = new AlignedScheduler(DownloadTimestampsAsync, TimeSpan.FromMinutes(10), log); log.Info("Fetching worker initializated"); }
private IEnumerable <FlexScheduler> GetSchedulers(ExchangeProxySettings proxySettings) { var service = new BlocktraderService(log, proxySettings); foreach (var exchange in new [] { ExchangeTitle.Binance, ExchangeTitle.Bitfinex, ExchangeTitle.Bitstamp }) { var thisLog = log.ForContext(exchange.ToString()); async Task <TimeSpan> DownloadTradesAsync() { var trades = await service.GetCurrentTradeListsAsync(exchange, Ticker.BtcUsd) .ConfigureAwait(false); var(filtered, timeSpan) = FilterTrades(exchange, trades, thisLog); queues[exchange].Enqueue(filtered); return(timeSpan); } yield return(new FlexScheduler(DownloadTradesAsync, thisLog)); } }
public MainWindow() { InitializeComponent(); var log = new ColourConsoleLog(); service = new BlocktraderService(log, new ExchangeProxySettings()); timestampManager = new FileTimestampManager(log); TicketPicker.ItemsSource = (Ticker[])Enum.GetValues(typeof(Ticker)); DatePicker.SelectedDate = DateTime.Now; PrecPicker.Value = 0; var timer = new Timer(updateInterval.TotalMilliseconds) { AutoReset = true }; timer.Elapsed += (s, e) => DownloadAsync().Wait(); timer.Start(); log.Info($"Blocktader initializated"); }