// TODO: what is this, something needs to be done here?? void MarketCheckSubscription(T4.API.Market poMarket, ref T4.DepthBuffer penDepthBuffer, ref T4.DepthLevels penDepthLevels) { string tickerID = G.MarketToTickerID(poMarket); L.Info("marketchecksubscription: {0}, {1}, {2}", tickerID, penDepthBuffer, penDepthLevels); }
public CTSSubDef(T4.DepthBuffer dbuf, T4.DepthLevels dlvl) { depthBuffer = dbuf; depthLevels = dlvl; }
public CTSSubDef() { depthBuffer = T4.DepthBuffer.NoSubscription; depthLevels = T4.DepthLevels.Normal; }
JToken ModifySubscription(List <ZFrame> ident, JObject msg) { var content = (JObject)msg["content"]; string tickerID = content["ticker_id"].ToString(); SubscriptionDefinition sd = _subscriptions[tickerID]; var oldSubDef = _ctsSubscriptions[tickerID]; L.Info(sd); var market = GetMarket(tickerID); T4.DepthBuffer dbuf = T4.DepthBuffer.NoSubscription; T4.DepthLevels dlvl = T4.DepthLevels.Normal; JToken res = null; if (sd["trades_speed"] > 7) { if (sd["order_book_speed"] > 7) { dbuf = T4.DepthBuffer.FastTrade; } else if (sd["order_book_speed"] > 4) { dbuf = T4.DepthBuffer.SmartTrade; } else if (sd["order_book_speed"] > 0) { dbuf = T4.DepthBuffer.SlowTrade; } else { dbuf = T4.DepthBuffer.TradeOnly; } } else { if (sd["order_book_speed"] > 7) { dbuf = T4.DepthBuffer.FastSmart; } else if (sd["order_book_speed"] > 4) { dbuf = T4.DepthBuffer.Smart; } else if (sd["order_book_speed"] > 0) { dbuf = T4.DepthBuffer.SlowSmart; } } if ((dbuf == T4.DepthBuffer.NoSubscription || dbuf == T4.DepthBuffer.TradeOnly) && sd["emit_quotes"]) { dbuf = T4.DepthBuffer.SlowSmart; dlvl = T4.DepthLevels.BestOnly; } else if (dbuf != T4.DepthBuffer.NoSubscription) { // does cts t4 api support arbitrary depth levels or enum numbers? dlvl = (T4.DepthLevels)Math.Min(sd["order_book_levels"], (int)T4.DepthLevels.All); } CTSSubDef newSubDef = new CTSSubDef(dbuf, dlvl); if (oldSubDef.Equals(newSubDef)) { res = JToken.FromObject("no change"); return(res); } //else //{ // if (newSubDef.DepthBuffer == T4.DepthBuffer.NoSubscription) // { // res["order_book"] = "unsubscribed"; // res["trades"] = "unsubscribed"; // } // else if (newSubDef.DepthBuffer == T4.DepthBuffer.TradeOnly) // { // res["order_book"] = "unsubscribed"; // res["trades"] = "subscribed"; // } //} res = JToken.FromObject(newSubDef.ToString()); _ctsSubscriptions[tickerID] = newSubDef; if (!oldSubDef.handled) { market.MarketCheckSubscription += MarketCheckSubscription; } newSubDef.handled = true; market.DepthSubscribe(dbuf, dlvl); return(res); }