Ejemplo n.º 1
0
        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
            });
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }