예제 #1
0
        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));
            }
        }
예제 #3
0
        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");
        }