static void HandleMarketHighLow(T4.API.Market market) { string tickerID = G.MarketToTickerID(market); var msg = new JObject(); var daily = new JObject(); daily["high"] = market.ConvertTicksToRealDecimal(market.LastHighLow.HighTicks); daily["low"] = market.ConvertTicksToRealDecimal(market.LastHighLow.LowTicks); daily["open"] = market.ConvertTicksToRealDecimal(market.LastHighLow.OpenTicks); msg["daily"] = daily; var msgParts = new List <ZFrame>(); msgParts.Add(new ZFrame(tickerID + "\x03")); msgParts.Add(new ZFrame(" " + msg.ToString())); G.pubAQ.Enqueue(() => G.sockMDPUB.SendMultipart(msgParts)); }
static void HandleMarketTradeVolume(T4.API.Market market, T4.API.Market.TradeVolume poChanges) { string tickerID = G.MarketToTickerID(market); var ld = market.LastDepth; var msg = new JObject(); msg["price"] = market.ConvertTicksToRealDecimal(ld.LastTradeSpdTicks); msg["size"] = ld.LastTradeSpdVolume; msg["spread_trade"] = ld.LastTradeDueToSpread; var msgParts = new List <ZFrame>(); msgParts.Add(new ZFrame(tickerID + "\x02")); msgParts.Add(new ZFrame(" " + msg.ToString())); var msg2 = new JObject(); msg2["daily"] = new JObject(); msg2["daily"]["num_trades"] = market.LastDepth.TotalTradeCount; msg2["daily"]["volume"] = market.LastDepth.TotalTradedVolume; var msgParts2 = new List <ZFrame>(); msgParts2.Add(new ZFrame(tickerID + "\x03")); msgParts2.Add(new ZFrame(" " + msg2.ToString())); G.pubAQ.Enqueue(() => { G.sockMDPUB.SendMultipart(msgParts); G.sockMDPUB.SendMultipart(msgParts2); }); // emit volume-by-price info from poChanges? }
static JArray OrderBookToJArray(T4.API.Market market, T4.API.Market.Depth.DepthList book) { JArray res = new JArray(); for (int i = 0; i < book.Count; i++) { var lvl = book[i]; JObject r = new JObject(); r["price"] = market.ConvertTicksToRealDecimal(lvl.Ticks); r["size"] = lvl.Volume; r["num_orders"] = lvl.NumOfOrders; r["position"] = i; res.Add(r); } return(res); }