private InstrumentParams CreateParams(InfoSecboard secboard) { var instrument = connector.ResolveSymbolAsync(secboard.code).Result; if (instrument == null) { return(null); } var security = securitiesMap[secboard.security]; return(new InstrumentParams { Instrument = instrument, //ExpirationDate = security.execution_day, PriceStep = PriceHelper.ToPrice(security.price_step), LotSize = security.lot_size }); }
private void InfoClient_OnInfoSecboard(InfoSecboard secboard) { using (allInstrumentLock.WriteLock()) { var code = secboard.code; InstrumentParams ip; if (!instrumentsParams.TryGetValue(code, out ip)) { allInstruments.Add(code); ip = CreateParams(secboard); if (ip == null) { return; } instrumentsParams[code] = ip; } ip.TopPriceLimit = PriceHelper.ToPrice(secboard.price_max); ip.BottomPriceLimit = PriceHelper.ToPrice(secboard.price_min); ip.Settlement = PriceHelper.ToPrice(secboard.market_price); ip.PreviousSettlement = PriceHelper.ToPrice(secboard.prev_market_price); ip.LastPrice = PriceHelper.ToPrice(secboard.last_trade_price); //ip.SessionEndTime = secboard.finish_trade_time; ip.BestBidPrice = PriceHelper.ToPrice(secboard.best_buy); ip.BestOfferPrice = PriceHelper.ToPrice(secboard.best_sell); if (subscribedInstruments.Contains(code)) { OnMessageReceived(ip); } } }