예제 #1
0
        public static void ProcessMarketDataField(ThostFtdcDepthMarketDataField field)
        {
            var       quotation = new Quotation(field);
            int       volume    = 0;
            Quotation preQuotation;

            if (quotationDic.TryGetValue(quotation.InstrumentID, out preQuotation) && preQuotation.TradingDay == quotation.TradingDay)
            {
                volume = quotation.Volume - preQuotation.Volume;
            }
            quotationDic[quotation.InstrumentID] = quotation;
            CandleCenter.ProcessQuotation(quotation, volume);
            DataSaver.AddQuotation(quotation);
            IQuotationReceiver[] receivers;
            lock (subscribeDic)
            {
                List <IQuotationReceiver> receiverList;
                if (!subscribeDic.TryGetValue(quotation.InstrumentID, out receiverList))
                {
                    return;
                }
                receivers = receiverList.ToArray();
            }
            foreach (var item in receivers)
            {
                item.ProcessQuotation(quotation, volume);
            }
        }