コード例 #1
0
        public ForexLastQuote RequestForexLastQuote(string Symbol)
        {
            ForexLastQuote LastQuote = null;

            try
            {
                string Url = $@"{PolygonUrl}/v1/last_quote/currencies/{Symbol}";
                Debug.WriteLine($"Request ForexLastQuote: {Url}");

                Url = AddApiKey(Url);

                string JSONText = JsonSecureGet(Url);

                LastQuote = JsonConvert.DeserializeObject <ForexLastQuote>(JSONText);
                if (LastQuote != null)
                {
                    OnForexLastQuoteEvent?.Invoke(LastQuote);
                }
            }
            catch (Exception ex)
            {
                string Message = $"RequestForexLastQuote: error {ex.Message}";
                FireOnExecJsonSecureGetEvent(Message);

                HandleJSONTextException("RequestForexLastQuote", "", ex);
            }

            return(LastQuote);
        }
コード例 #2
0
        private void RequestLast(RTDataRec rtDataRec)
        {
            AppendText($"Request Last for {rtDataRec.Symbol}");

            switch (rtDataRec.ClusterName)
            {
            case PGClusterNames.Equities:
                LastTrade lastTrade = PGApi.Equities.RequestLastTrade(rtDataRec.Symbol);
                if (lastTrade != null)
                {
                    // check invalid symbol
                    if (lastTrade.status == PGStatusMessages.NotFound)
                    {
                        HandleInvalidSymbol(rtDataRec);
                    }
                    else if (lastTrade != null && lastTrade.last != null)
                    {
                        rtDataRec.Price    = lastTrade.last.price;
                        rtDataRec.LastSize = lastTrade.last.size;
                    }
                }

                LastQuote LastQuote = PGApi.Equities.RequestLastQuote(rtDataRec.Symbol);
                if (LastQuote != null)
                {
                    if (LastQuote != null && LastQuote.last != null)
                    {
                        rtDataRec.Ask = LastQuote.last.askprice;
                        rtDataRec.Bid = LastQuote.last.bidprice;
                    }
                }
                break;

            case PGClusterNames.Forex:
                ForexLastQuote ForexLastquote = PGApi.Forex.RequestForexLastQuote(rtDataRec.Symbol);
                if (ForexLastquote != null)
                {
                    // check invalid symbol
                    if (ForexLastquote.status == PGStatusMessages.NotFound)
                    {
                        HandleInvalidSymbol(rtDataRec);
                    }
                    else if (ForexLastquote != null && ForexLastquote.last != null)
                    {
                        rtDataRec.Ask = ForexLastquote.last.ask;
                        rtDataRec.Bid = ForexLastquote.last.bid;
                    }
                }
                break;

            case PGClusterNames.Crypto:
                CryptoLastTrade CryptoLasttrade = PGApi.Crypto.RequestCryptoLastTrade(rtDataRec.Symbol);
                if (CryptoLasttrade != null)
                {
                    // check invalid symbol
                    if (CryptoLasttrade.status == PGStatusMessages.NotFound)
                    {
                        HandleInvalidSymbol(rtDataRec);
                    }
                    else if (CryptoLasttrade != null && CryptoLasttrade.last != null)
                    {
                        rtDataRec.Price      = CryptoLasttrade.last.price;
                        rtDataRec.CryptoSize = CryptoLasttrade.last.size;
                    }
                }
                break;

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

            // get Previous values
            PGClusterBase Cluster = PGApi.GetPGCluster(rtDataRec.ClusterName);

            if (Cluster != null)
            {
                Cluster.RequestPreviousClose(rtDataRec.Symbol);
                Cluster.RequestDailyOpenClose(rtDataRec.Symbol);
            }
        }