Exemplo n.º 1
0
        public LastQuote RequestLastQuote(string Symbol)
        {
            LastQuote LastQuote = null;

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

                Url = AddApiKey(Url);

                string JSONText = JsonSecureGet(Url);

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

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

            return(LastQuote);
        }
Exemplo n.º 2
0
 protected virtual void OnLastQuote(LastQuote LastQuote)
 {
     if (ConsolidateLevel1)
     {
         SymbolDataRec SymbolData = SymDataHandler.OnLastQuote(LastQuote);
         OnSymbolDataEvent?.Invoke(SymbolData);
     }
 }
Exemplo n.º 3
0
        public void OnRequestLastQuote(string JSONText)
        {
            LastQuote LastQuoteRef = JsonConvert.DeserializeObject <LastQuote>(JSONText);

            if (LastQuoteRef != null)
            {
                OnLastQuoteEvent?.Invoke(LastQuoteRef);
            }
        }
Exemplo n.º 4
0
        public SymbolDataRec OnLastQuote(LastQuote LastQuote)
        {
            SymbolDataRec SymbolData = GetSymbolDataRec(LastQuote.symbol);

            if (SymbolData != null)
            {
                SymbolData.Type         = SymbolDataTypes.LastQuote;
                SymbolData.Bid          = LastQuote.last.bidprice;
                SymbolData.Ask          = LastQuote.last.askprice;
                SymbolData.AskSize      = LastQuote.last.asksize;
                SymbolData.BidSize      = LastQuote.last.bidsize;
                SymbolData.TimeStamp    = UnixTimestampMillisToESTDateTime(LastQuote.last.timestamp);
                SymbolData.UnixNanoSecs = LastQuote.last.timestamp;
            }
            return(SymbolData);
        }
        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);
        }
Exemplo n.º 6
0
        public SymbolDataRec OnLastQuote(LastQuote LastQuoteRef)
        {
            if (IsSimulationMode)
            {
                VerifySymbolDataRec(LastQuoteRef.symbol);
            }

            SymbolDataRec SymbolData = GetSymbolDataRec(LastQuoteRef.symbol);

            if (SymbolData != null)
            {
                SymbolData.Bid       = LastQuoteRef.last.bidprice;
                SymbolData.Ask       = LastQuoteRef.last.askprice;
                SymbolData.AskSize   = LastQuoteRef.last.asksize;
                SymbolData.BidSize   = LastQuoteRef.last.bidsize;
                SymbolData.TimeStamp = DateTimeFromUnixTimestampMillis(LastQuoteRef.last.timestamp);
            }
            return(SymbolData);
        }
Exemplo n.º 7
0
        private void OnLastQuote(LastQuote LastQuoteRef)
        {
            SymbolDataRec SymbolData = SymDataHandler.OnLastQuote(LastQuoteRef);

            UpdateFromSymbolData("==> LastQuote", SymbolData);
        }
        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);
            }
        }