Example #1
0
        private static void Display(SymbolStatisticsEventArgs args)
        {
            lock (_sync)
            {
                _statistics[args.Statistics[0].Symbol] = args.Statistics[0];

                if (_displayTask.IsCompleted)
                {
                    // Delay to allow multiple data updates between display updates.
                    _displayTask = Task.Delay(250)
                                   .ContinueWith(_ =>
                    {
                        SymbolStatistics[] latestStatistics;
                        lock (_sync)
                        {
                            latestStatistics = _statistics.Values.ToArray();
                        }

                        Console.SetCursorPosition(0, 0);

                        foreach (var stats in latestStatistics)
                        {
                            Console.WriteLine($"  24-hour statistics for {stats.Symbol}:".PadRight(119));
                            Console.WriteLine($"    %: {stats.PriceChangePercent:0.00} | O: {stats.OpenPrice:0.00000000} | H: {stats.HighPrice:0.00000000} | L: {stats.LowPrice:0.00000000} | V: {stats.Volume:0.}".PadRight(119));
                            Console.WriteLine($"    Bid: {stats.BidPrice:0.00000000} | Last: {stats.LastPrice:0.00000000} | Ask: {stats.AskPrice:0.00000000} | Avg: {stats.WeightedAveragePrice:0.00000000}".PadRight(119));
                            Console.WriteLine();
                        }

                        Console.WriteLine(_message.PadRight(119));
                    });
                }
            }
        }
Example #2
0
        private void OnStatisticsUpdate(SymbolStatisticsEventArgs e)
        {
            var statistics = e.Statistics;

            var immutableStatistics = _cache.GetSymbolStatistics();
            var immutablePrices     = _cache.GetSymbolPrices();

            if (immutableStatistics != null)
            {
                var mutableStatistics = immutableStatistics.ToBuilder();

                foreach (var statistic in statistics)
                {
                    mutableStatistics[statistic.Symbol] = statistic;
                }

                _cache.SetSymbolStatistics(mutableStatistics.ToImmutable());
            }

            if (immutablePrices != null)
            {
                var mutablePrice = immutablePrices.ToBuilder();

                foreach (var statistic in statistics)
                {
                    mutablePrice[statistic.Symbol] = statistic.LastPrice;
                }

                _cache.SetSymbolPrices(mutablePrice.ToImmutable());
            }
        }
Example #3
0
 // ReSharper disable once UnusedMember.Local
 private static void Display(SymbolStatisticsEventArgs args)
 => Display(args.Statistics);