internal void OnForexQuote(ForexQuote quote) { RTDataRec Rec = GetRTDataRec(quote.p, PGClusterNames.Forex); Rec.AskTick = quote.a == 0 ? TickType.FlatTick : Rec.Ask > quote.a ? TickType.DownTick : TickType.UpTick; Rec.Ask = quote.a; Rec.BidTick = quote.b == 0 ? TickType.FlatTick : Rec.Bid > quote.b ? TickType.DownTick : TickType.UpTick; Rec.Bid = quote.b; Rec.Spread = (Rec.Ask - Rec.Bid).ToString("0.00000"); }
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); }
// =====>>>>>>>>>> JSONText Message Received public override void OnWebSocketJSONText(string JSONText) { try { string ObjJSONText; List <object> PGBaseList = JsonConvert.DeserializeObject <List <object> >(JSONText); foreach (var PGBase in PGBaseList) { ObjJSONText = PGBase.ToString(); PolygonBase pGBase = JsonConvert.DeserializeObject <PolygonBase>(ObjJSONText); switch (pGBase.ev) { case "C": ForexQuote quote = JsonConvert.DeserializeObject <ForexQuote>(ObjJSONText); if (quote != null) { OnForexQuoteEvent?.Invoke(quote); } break; case "CA": ForexAggregate forexAgg = JsonConvert.DeserializeObject <ForexAggregate>(ObjJSONText); if (forexAgg != null) { OnForexAggEvent?.Invoke(forexAgg); } break; case "status": Status StatusIn = JsonConvert.DeserializeObject <Status>(ObjJSONText); HandleStatusMessage(StatusIn); break; default: break; } } } catch (System.Exception ex) { HandleJSONTextException("websocket_MessageReceived", JSONText, ex); } }