private void OnForexQuote(ForexQuote quote)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(quote);
            }
            else
            {
                Text = $"Quote: Pair: {quote.p}, " +
                       $"Bid: {quote.b}, Ask: {quote.a}, " +
                       $"FX Exchange: {quote.x}, " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( quote.t )} EST";
            }
            AppendText(Text);
        }
        private void OnCryptoTrade(CryptoTrade trade)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(trade);
            }
            else
            {
                Text = $"Trade: Pair: {trade.pair}, " +
                       $"Price: {trade.p}, Size: {trade.s}, " +
                       $"Trade ID: {trade.i}, Exchange ID: {trade.xt}, " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( trade.t )} EST";
            }
            AppendText(Text);
        }
        protected void OnLastTrade(LastTrade lastTrade)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(lastTrade);
            }
            else
            {
                Text = $"Trade: Symbol: {lastTrade.symbol}, " +
                       $"Price: {lastTrade.last.price}, Size: {lastTrade.last.size}, " +
                       $"Exchange ID: {lastTrade.last.exchange}, " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( lastTrade.last.timestamp )}";
            }
            AppendText(Text);
        }
        private void OnEquitiesTrade(Trade trade)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(trade);
            }
            else
            {
                Text = $"Trade: Symbol: {trade.sym}, " +
                       $"Price: {trade.p}, Size: {trade.s}, " +
                       $"Trade ID: {trade.i}, Exchange ID: {trade.x}, " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( trade.t )} EST";
            }
            AppendText(Text);
        }
        private void OnCryptoLevel2(CryptoLevel2 cryptoLevel2)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(cryptoLevel2);
            }
            else
            {
                Text = $"Trade: Pair: {cryptoLevel2.pair}, " +
                       $"Bid Prices: {cryptoLevel2.b.ToString()}" +
                       $"Ask Prices: {cryptoLevel2.a.ToString()}, " +
                       $"Exchange ID: {cryptoLevel2.xt}, " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( cryptoLevel2.t )} EST";
            }
            AppendText(Text);
        }
        private void OnForexAgg(ForexAggregate forexAgg)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(forexAgg);
            }
            else
            {
                Text = $"Quote: Pair: {forexAgg.pair}, " +
                       $"Open: {forexAgg.o}, Close: {forexAgg.c}, " +
                       $"High: {forexAgg.h}, Low: {forexAgg.l}, " +
                       $"Volume: {forexAgg.v} EST" +
                       $"Tick Start: {PGBase.UnixTimestampMillisToESTDateTime( forexAgg.s )} EST";
            }
            AppendText(Text);
        }
        protected void OnLastQuote(LastQuote LastQuote)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(LastQuote);
            }
            else
            {
                Text = $"LastQuote: Symbol: {LastQuote.symbol}, " +
                       $"Bid: {LastQuote.last.bidprice}, Bid Size: {LastQuote.last.bidsize}, " +
                       $"Ask: {LastQuote.last.askprice}, Ask Size: {LastQuote.last.asksize}, " +
                       $"Bid ID: {LastQuote.last.bidexchange}, Ask ID: {LastQuote.last.askexchange} " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( LastQuote.last.timestamp )} EST";
            }
            AppendText(Text);
        }
        private void OnEquitiesQuote(Quote quote)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(quote);
            }
            else
            {
                Text = $"Quote: Symbol: {quote.sym}, " +
                       $"Bid: {quote.bp}, Bid Size: {quote.bs}, " +
                       $"Ask: {quote.ap}, Ask Size: {quote.asz}, " +
                       $"Bid ID: {quote.bx}, Ask ID: {quote.ax} " +
                       $"Time: {PGBase.UnixTimestampMillisToESTDateTime( quote.t )} EST";
            }
            AppendText(Text);
        }
        private void OnCryptoQuote(CryptoQuote quote)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(quote);
            }
            else
            {
                Text = $"Trade: Pair: {quote.pair}, " +
                       $"Last Trade: {quote.lp}, Last Trade Size: {quote.ls}, " +
                       $"Bid: {quote.bp}, Bid Size: {quote.bs}, " +
                       $"Ask: {quote.ap}, Ask Size: {quote.asz}, " +
                       $"Exchange ID: {quote.xt}, " +
                       $"Exchange Timestamp: {PGBase.UnixTimestampMillisToESTDateTime( quote.t )} EST";
            }
            AppendText(Text);
        }
        private void OnCryptoAgg(CryptoAggregate cryptoAgg)
        {
            string Text;

            if (IsJSONTextMode)
            {
                Text = JsonConvert.SerializeObject(cryptoAgg);
            }
            else
            {
                Text = $"Trade: Pair: {cryptoAgg.pair}, " +
                       $"Open: {cryptoAgg.o}, Open Exchange: {cryptoAgg.ox}, " +
                       $"High: {cryptoAgg.h}, High Exchange: {cryptoAgg.hx}, " +
                       $"Low: {cryptoAgg.l}, Low Exchange: {cryptoAgg.lx}, " +
                       $"Close: {cryptoAgg.cl}, Close Exchange: {cryptoAgg.cx}, " +
                       $"Volume: {cryptoAgg.v}, " +
                       $"Tick Start: {PGBase.UnixTimestampMillisToESTDateTime( cryptoAgg.s )} EST" +
                       $"Tick End: {PGBase.UnixTimestampMillisToESTDateTime( cryptoAgg.e )} EST";
            }
            AppendText(Text);
        }