Ejemplo n.º 1
0
        // 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);
        }
Ejemplo n.º 2
0
 public CTSSubDef(T4.DepthBuffer dbuf, T4.DepthLevels dlvl)
 {
     depthBuffer = dbuf;
     depthLevels = dlvl;
 }
Ejemplo n.º 3
0
 public CTSSubDef()
 {
     depthBuffer = T4.DepthBuffer.NoSubscription;
     depthLevels = T4.DepthLevels.Normal;
 }
Ejemplo n.º 4
0
        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);
        }