Exemplo n.º 1
0
        //If basicInfoOnly flag is set to true, RecentTrades & OrderBook (top 20) won't be loaded
        //This can be used to reduce unnecessary memory usage
        private static MarketInfo ReadFromJObject(JObject o, bool basicInfoOnly = false)
        {
            MarketInfo marketInfo = new MarketInfo()
            {
                MarketID              = o.Value <Int64>("marketid"),
                Label                 = o.Value <string>("label"),
                PrimaryCurrencyCode   = o.Value <string>("primarycode"),
                PrimaryCurrencyName   = o.Value <string>("primaryname"),
                SecondaryCurrencyCode = o.Value <string>("secondarycode"),
                SecondaryCurrencyName = o.Value <string>("secondaryname"),
                Volume                = o.Value <decimal>("volume"),
                //CreationTimeUTC = TimeZoneInfo.ConvertTime(o.Value<DateTime>("created"), TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"), TimeZoneInfo.Utc)
            };

            if (!basicInfoOnly)
            {
                marketInfo.RecentTrades = new List <Trade>();
                marketInfo.OrderBook    = new CryptsyOrderBook();

                foreach (var t in o["recenttrades"])
                {
                    Trade trade = Trade.ReadFromJObject(t as JObject);
                    marketInfo.RecentTrades.Add(trade);
                    marketInfo.LastTrade = trade;
                }

                //orderbook is returnd as array of markets (with only the requested market)
                marketInfo.OrderBook = CryptsyOrderBook.ReadFromJObject(o, marketInfo.MarketID);
            }

            return(marketInfo);
        }
Exemplo n.º 2
0
        public async Task <Exchange.Cryptsy.CryptsyOrderBook> GetOrderBook(long marketId, CancellationToken token = default(CancellationToken))
        {
            return(await RetryHelper.DoAsync(async() =>
            {
                CryptsyResponse response = await CryptsyPublicQuery(new Dictionary <string, string> {
                    { "method", "singleorderdata" }, { "marketid", Convert.ToString(marketId) }
                }, false, token);

                //Response is an array of markets, with only the requested market
                return response.Success ? CryptsyOrderBook.ReadMultipleFromJObject(response.Data as JObject)[marketId] : null;
            }, TimeSpan.FromMilliseconds(Constant.DefaultRetryInterval)));
        }
Exemplo n.º 3
0
        //Returns: Dictionary<MarketID, OrderBook>
        public async Task <Dictionary <Int64, CryptsyOrderBook> > GetAllOrderBooks(CancellationToken token = default(CancellationToken))
        {
            return(await RetryHelper.DoAsync(async() =>
            {
                CryptsyResponse response = await CryptsyPublicQuery(new Dictionary <string, string> {
                    { "method", "orderdata" }
                }, false, token);

                //Response is an array of markets, with only the requested market
                return response.Success ? CryptsyOrderBook.ReadMultipleFromJObject(response.Data as JObject) : null;
            }, TimeSpan.FromMilliseconds(Constant.DefaultRetryInterval)));
        }
Exemplo n.º 4
0
        public static CryptsyOrderBook ReadFromJObject(JObject o, Int64 marketId)
        {
            var ob = new CryptsyOrderBook();

            foreach (var order in o["sellorders"])
            {
                ob.SellOrders.Add(CryptsyOrder.ReadFromJObject(order as JObject, marketId, CryptsyOrder.ORDER_TYPE.SELL));
            }

            foreach (var order in o["buyorders"])
            {
                ob.BuyOrders.Add(CryptsyOrder.ReadFromJObject(order as JObject, marketId, CryptsyOrder.ORDER_TYPE.BUY));
            }

            return(ob);
        }
Exemplo n.º 5
0
        //Loads the full order book of Cryptsy, instead of top 20 orders
        public async Task <CryptsyOrderBook> GetFullOrderBook(CryptsyApi api)
        {
            OrderBook = await api.GetOrderBook(MarketID);

            return(OrderBook);
        }