// Order Book private void CacheOrderBook(BinanceStreamOrderBook stream) { var instrument = stream.Symbol; var bidCount = stream.Bids.Count; var askCount = stream.Asks.Count; for (int depth = 0; depth < bidCount; depth++) { CacheResult(BINANCE_DEPTH, instrument, RtdFields.BID_DEPTH, depth, stream.Bids[depth].Price); CacheResult(BINANCE_DEPTH, instrument, RtdFields.BID_DEPTH_SIZE, depth, stream.Bids[depth].Quantity); } //for (int depth = bidCount; depth < 10; depth++) //{ // CacheResult(BINANCE, instrument, RtdFields.BID_DEPTH, depth, SubscriptionManager.UninitializedValue); // CacheResult(BINANCE, instrument, RtdFields.BID_DEPTH_SIZE, depth, SubscriptionManager.UninitializedValue); //} for (int depth = 0; depth < askCount; depth++) { CacheResult(BINANCE_DEPTH, instrument, RtdFields.ASK_DEPTH, depth, stream.Asks[depth].Price); CacheResult(BINANCE_DEPTH, instrument, RtdFields.ASK_DEPTH_SIZE, depth, stream.Asks[depth].Quantity); } //for (int depth = askCount; depth < 10; depth++) //{ // CacheResult(BINANCE, instrument, RtdFields.ASK_DEPTH, depth, SubscriptionManager.UninitializedValue); // CacheResult(BINANCE, instrument, RtdFields.ASK_DEPTH_SIZE, depth, SubscriptionManager.UninitializedValue); //} }
private object DecodeOrderBook(BinanceStreamOrderBook stream, string field, int depth) { int askCount = stream.Asks.Count; int bidCount = stream.Bids.Count; switch (field) { case RtdFields.SYMBOL: return(stream.Symbol); case RtdFields.LAST_UPDATE_ID: return(stream.LastUpdateId); case RtdFields.ASK_DEPTH: if (depth >= askCount) { return(SubscriptionManager.UninitializedValue); } return(stream.Asks[depth].Price); case RtdFields.ASK_DEPTH_SIZE: if (depth >= askCount) { return(SubscriptionManager.UninitializedValue); } return(stream.Asks[depth].Quantity); case RtdFields.BID_DEPTH: if (depth >= bidCount) { return(SubscriptionManager.UninitializedValue); } return(stream.Bids[depth].Price); case RtdFields.BID_DEPTH_SIZE: if (depth >= bidCount) { return(SubscriptionManager.UninitializedValue); } return(stream.Bids[depth].Quantity); } return(SubscriptionManager.UninitializedValue); }
// Order Book private void CacheOrderBook(BinanceStreamOrderBook stream) { lock (_subMgr) { CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.SYMBOL, stream.Symbol); CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.LAST_UPDATE_ID, stream.LastUpdateId); for (int depth = 0; depth < stream.Bids.Count; depth++) { CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.BID_DEPTH, depth, stream.Bids[depth].Price); CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.BID_DEPTH_SIZE, depth, stream.Bids[depth].Quantity); } for (int depth = 0; depth < stream.Asks.Count; depth++) { CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.ASK_DEPTH, depth, stream.Asks[depth].Price); CacheResult(BINANCE_DEPTH, stream.Symbol, RtdFields.ASK_DEPTH_SIZE, depth, stream.Asks[depth].Quantity); } } }