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); }
protected virtual void OnLastQuote(LastQuote LastQuote) { if (ConsolidateLevel1) { SymbolDataRec SymbolData = SymDataHandler.OnLastQuote(LastQuote); OnSymbolDataEvent?.Invoke(SymbolData); } }
public void OnRequestLastQuote(string JSONText) { LastQuote LastQuoteRef = JsonConvert.DeserializeObject <LastQuote>(JSONText); if (LastQuoteRef != null) { OnLastQuoteEvent?.Invoke(LastQuoteRef); } }
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); }
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); }
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); } }