Exemplo n.º 1
0
        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?
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        static void HandleMarketSettlement(T4.API.Market market)
        {
            var    ls       = market.LastSettlement;
            string tickerID = G.MarketToTickerID(market);

            L.Info("marketsettlement: {0}, oi={1}, cleared_vol={2}, held_ticks={3}, " +
                   "held_time={4}, held_date={5}, ticks={6}, vwap={7}",
                   tickerID, ls.OpenInterest, ls.ClearedVolume, ls.HeldTicks,
                   ls.HeldTime, ls.HeldTradeDate, ls.Ticks, ls.VWAP);
            // TODO: anything worth exposing to zmapi here?
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        static void HandleMarketDepthUpdate(T4.API.Market market)
        {
            string  tickerID = G.MarketToTickerID(market);
            JObject msg      = new JObject();
            var     ld       = market.LastDepth;

            msg["bids"] = OrderBookToJArray(market, ld.Bids);
            msg["asks"] = OrderBookToJArray(market, ld.Offers);
            if (ld.ImpliedBids.Count > 0)
            {
                msg["implied_bids"] = OrderBookToJArray(market, ld.ImpliedBids);
            }
            if (ld.ImpliedOffers.Count > 0)
            {
                msg["implied_asks"] = OrderBookToJArray(market, ld.ImpliedOffers);
            }
            msg["timestamp"] = market.LastDepth.Time.ToUniversalTime().ToUnixTimestamp();
            var msgParts = new List <ZFrame>();

            msgParts.Add(new ZFrame(tickerID + "\x01"));
            msgParts.Add(new ZFrame(" " + msg.ToString()));
            G.pubAQ.Enqueue(() => G.sockMDPUB.SendMultipart(msgParts));
        }
Exemplo n.º 7
0
 public static string MarketToTickerID(T4.API.Market market)
 {
     return("/" + market.ExchangeID + "/" + market.ContractID + "/" + market.MarketID);
 }
Exemplo n.º 8
0
        JToken ListDirectory(List <ZFrame> ident, JObject msg)
        {
            string dir = "/";

            try
            {
                dir = msg["content"]["path"].ToString();
            }
            catch (Exception) { }
            if (dir == "")
            {
                dir = "/";
            }
            T4.API.MarketData md  = G.client.MarketData;
            JArray            res = new JArray();

            string[] spl = dir.Split('/').Where((x) => x.Length > 0).ToArray();
            if (spl.Length == 0)
            {
                foreach (T4.API.Exchange exchange in G.client.MarketData.Exchanges)
                {
                    var r = new JObject();
                    r["name"]        = exchange.ExchangeID;
                    r["description"] = exchange.Description;
                    res.Add(r);
                }
            }
            else if (spl.Length == 1)
            {
                foreach (T4.API.Contract contract in GetContracts(md.Exchanges[spl[0]]))
                {
                    var r = new JObject();
                    r["name"]        = contract.ContractID;
                    r["description"] = contract.Description;
                    res.Add(r);
                }
            }
            else if (spl.Length == 2)
            {
                var markets = GetMarkets(GetContracts(md.Exchanges[spl[0]])[spl[1]]);
                foreach (T4.API.Market market in markets)
                {
                    var r = new JObject();
                    r["name"]        = market.MarketID;
                    r["ticker_id"]   = G.MarketToTickerID(market);
                    r["description"] = market.Description;
                    res.Add(r);
                }
            }
            else if (spl.Length == 3)
            {
                T4.API.Market market = GetMarket(spl[0], spl[1], spl[2]);
                var           r      = new JObject();
                r["name"]        = market.MarketID;
                r["ticker_id"]   = G.MarketToTickerID(market);
                r["description"] = market.Description;
                res.Add(r);
            }
            else
            {
                throw new ArgumentException("directory not found");
            }
            res = new JArray(res.OrderBy((x) => x["name"]));
            return(res);
        }