private void OnSubscribedSymbol(RTDataRec rtDataRec)
        {
            switch (rtDataRec.ClusterName)
            {
            case PGClusterNames.Equities:
                EquitiesRTData.AddSymbolRTDataRow(rtDataRec);
                EquitiesRTData.Visibility = Visibility.Visible;
                break;

            case PGClusterNames.Forex:
                ForexRTData.AddSymbolRTDataRow(rtDataRec);
                ForexRTData.Visibility = Visibility.Visible;
                break;

            case PGClusterNames.Crypto:
                CryptoRTData.AddSymbolRTDataRow(rtDataRec);
                CryptoRTData.Visibility = Visibility.Visible;
                break;

            default:
                throw new Exception($"Unknown ClusterName: {rtDataRec.ClusterName}");
            }

            DisplayRTDataGrid(true);

            if (rtDataRec.RequestLast)
            {
                RequestLast(rtDataRec);
            }
        }
        private void InitClustersRTData()
        {
            EquitiesRTData.InitRTClusterData(PGApi.Equities);
            EquitiesRTData.OnRTDataHeightChangeEvent += OnRTDataHeightChange;

            ForexRTData.InitRTClusterData(PGApi.Forex);
            CryptoRTData.InitRTClusterData(PGApi.Crypto);
        }
        private void OnUnSubscribedSymbol(RTDataRec rtDataRec)
        {
            switch (rtDataRec.ClusterName)
            {
            case PGClusterNames.Equities:
                EquitiesRTData.RemoveSymbolRTDataRow(rtDataRec);
                if (EquitiesRTData.RTDataRows.Count == 0)
                {
                    EquitiesRTData.Visibility = Visibility.Collapsed;
                }
                break;

            case PGClusterNames.Forex:
                ForexRTData.RemoveSymbolRTDataRow(rtDataRec);
                if (ForexRTData.RTDataRows.Count == 0)
                {
                    ForexRTData.Visibility = Visibility.Collapsed;
                }
                break;

            case PGClusterNames.Crypto:
                CryptoRTData.RemoveSymbolRTDataRow(rtDataRec);
                if (CryptoRTData.RTDataRows.Count == 0)
                {
                    CryptoRTData.Visibility = Visibility.Collapsed;
                }
                break;

            default:
                throw new Exception($"Unknown ClusterName: {rtDataRec.ClusterName}");
            }

            int TotalRows = EquitiesRTData.RTDataRows.Count + ForexRTData.RTDataRows.Count + CryptoRTData.RTDataRows.Count;

            if (TotalRows == 0)
            {
                DisplayRTDataGrid(false);
            }
        }