private static void Display(SymbolStatisticsCacheEventArgs args)
        {
            lock (_sync)
            {
                if (_displayTask.IsCompleted)
                {
                    // Delay to allow multiple data updates between display updates.
                    _displayTask = Task.Delay(250)
                                   .ContinueWith(_ =>
                    {
                        var latestStatistics = args.Statistics;

                        Console.SetCursorPosition(0, 0);

                        // Display top 5 symbols with highest % price change.
                        foreach (var stats in latestStatistics.OrderBy(s => s.PriceChangePercent).Reverse().Take(5))
                        {
                            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));
                    });
                }
            }
        }
Esempio n. 2
0
 private void ReceivedSymbol(SymbolStatisticsCacheEventArgs args)
 {
     foreach (var statistic in args.Statistics)
     {
         LogManager.Instance.AddLog(new SymbolLog()
         {
             Symbol = statistic.Symbol,
             Value  = statistic.LastPrice
         });
     }
 }
Esempio n. 3
0
 private static void Display(SymbolStatisticsCacheEventArgs args)
 => Display(args.Statistics);