Ejemplo n.º 1
0
        private void OnRtnDepthMarketData(object sender, CtpDepthMarketData data)
        {
            var market = new DepthMarketDataField();

            market.InstrumentID = data.InstrumentID;
            market.ExchangeID   = data.ExchangeID;
            market.Exchange     = CtpConvert.GetExchangeType(data.ExchangeID);
            switch (market.Exchange)
            {
            case ExchangeType.CZCE:
                CtpConvert.SetCzceExchangeTime(data, market);
                break;

            case ExchangeType.DCE:
                CtpConvert.SetDceExchangeTime(data, market);
                break;

            default:
                CtpConvert.SetExchangeTime(data, market);
                break;
            }

            market.LastPrice    = CtpConvert.IsMax(data.LastPrice) ? 0 : data.LastPrice;
            market.Volume       = data.Volume;
            market.OpenInterest = data.OpenInterest;
            market.Turnover     = data.Turnover;
            market.AveragePrice = data.AveragePrice;
            if (CtpConvert.IsMax(data.OpenPrice))
            {
                market.OpenPrice    = 0;
                market.HighestPrice = 0;
                market.LowestPrice  = 0;
                market.TradingPhase = TradingPhaseType.BeforeTrading;
            }
            else
            {
                market.OpenPrice    = data.OpenPrice;
                market.HighestPrice = data.HighestPrice;
                market.LowestPrice  = data.LowestPrice;
                market.TradingPhase = TradingPhaseType.Continuous;
            }

            if (CtpConvert.IsMax(data.ClosePrice))
            {
                market.ClosePrice = 0;
            }
            else
            {
                market.ClosePrice   = data.ClosePrice;
                market.TradingPhase = TradingPhaseType.Closed;
            }
            market.SettlementPrice    = CtpConvert.IsMax(data.SettlementPrice) ? 0 : data.SettlementPrice;
            market.UpperLimitPrice    = data.UpperLimitPrice;
            market.LowerLimitPrice    = data.LowerLimitPrice;
            market.PreClosePrice      = data.PreClosePrice;
            market.PreSettlementPrice = data.PreSettlementPrice;
            market.PreOpenInterest    = data.PreOpenInterest;
            if (!CtpConvert.IsMax(data.AskPrice1))
            {
                market.Asks = new[] { new DepthField {
                                          Price = data.AskPrice1, Size = data.AskVolume1
                                      } };
            }
            else
            {
                market.Asks = new DepthField[0];
            }

            if (!CtpConvert.IsMax(data.BidPrice1))
            {
                market.Bids = new[] { new DepthField {
                                          Price = data.BidPrice1, Size = data.BidVolume1
                                      } };
            }
            else
            {
                market.Bids = new DepthField[0];
            }
            _spi.ProcessDepthMarketData(market);
        }