Beispiel #1
0
        /// <summary>
        /// 载入股票部分
        /// </summary>
        /// <param name="rootXml"></param>
        private void LoadStock(XmlElement rootXml)
        {
            foreach (XmlNode node in rootXml)
            {
                #region 股票

                XmlElement exElem = node as XmlElement;
                if (exElem == null)
                {
                    continue;
                }

                //解析交易所ID,默认时间
                string           exchangeId   = exElem.GetAttribute(IdAttr).Trim();
                List <TimeSlice> lstTimeSlice = ParseTimeSlice(exElem.GetAttribute(TradingTimeTag).Trim());

                //维护股票的默认时间段
                _dictDefaultStockTradingFrame.Add(exchangeId, lstTimeSlice);

                TradingFrameSeries lstTradeFrames = new TradingFrameSeries();

                //然后读取所有的交易所
                foreach (XmlNode subNode in exElem.ChildNodes)
                {
                    XmlElement subElem = subNode as XmlElement;

                    DateTime         beginDay         = ParseDate(subElem.GetAttribute(BeginDayTag).Trim());
                    List <TimeSlice> tradingFrameExch = ParseTimeSlice(subElem.GetAttribute(TradingTimeTag).Trim());

                    var i = 0;
                    for (; i < lstTradeFrames.Count; ++i)
                    {
                        if (beginDay < lstTradeFrames[i].BeginDay)
                        {
                            lstTradeFrames.Insert(i, new TradingFrame(beginDay, tradingFrameExch));
                            break;
                        }
                    }

                    if (i == lstTradeFrames.Count)
                    {
                        lstTradeFrames.Add(new TradingFrame(beginDay, tradingFrameExch));
                    }

                    //lstTradeFrames.Add(new TradingFrame(beginDay, tradingFrameExch));
                }
                //交易所的
                _dictStockTradingFrame.Add(exchangeId, lstTradeFrames);
                #endregion
            }
        }
Beispiel #2
0
        /// <summary>
        /// 获取最后的(当前执行的)交易时段
        /// 实盘的时候调用这个方法
        /// </summary>
        /// <param name="market">市场</param>
        /// <param name="exchangeId">交易所ID</param>
        /// <param name="productId">产品ID(股票和股票期权填空)</param>
        /// <returns>指定的交易时段</returns>
        public List <TimeSlice> GetLastTradingFrame(EnumMarket market, string exchangeId, string productId = "")
        {
            TradingFrameSeries frameSeries = GetAllTradingTimeFrames(market, exchangeId, productId);

            if (frameSeries != null)
            {
                return(frameSeries.Last.TradingTimes);
            }
            else
            {
                //没有历史数据,取其交易所的
                return(GetDefaultTradingFrame(market, exchangeId));
            }
        }
Beispiel #3
0
        /// <summary>
        /// 给定一个交易日,获取这个交易日的交易时段
        /// </summary>
        /// <param name="theDate">指定交易日</param>
        /// <param name="market">市场</param>
        /// <param name="exchangeId">交易所ID</param>
        /// <param name="productId">产品ID(股票和股票期权填空)</param>
        /// <returns>指定的交易时段</returns>
        public List <TimeSlice> GetTradingFrame(DateTime theDate, EnumMarket market, string exchangeId, string productId = "")
        {
            if (theDate == default(DateTime))
            {
                return(GetLastTradingFrame(market, exchangeId, productId));
            }

            TradingFrameSeries frameSeries = GetAllTradingTimeFrames(market, exchangeId, productId);

            if (frameSeries != null)
            {
                List <TimeSlice> timeSlice = frameSeries.GetTradingTimes(theDate);

                if (timeSlice != null)
                {
                    return(timeSlice);
                }
            }

            //如果找不到,则返回默认的
            return(GetDefaultTradingFrame(market, exchangeId));
        }
Beispiel #4
0
        private void LoadFutureOption(XmlElement rootXml)
        {
            foreach (XmlNode node in rootXml)
            {
                #region 期货期权

                XmlElement exElem = node as XmlElement;
                if (exElem == null)
                {
                    continue;
                }

                //解析4个交易所

                //解析交易所ID,默认时间
                string           exchangeId   = exElem.GetAttribute(IdAttr).Trim();
                List <TimeSlice> lstTimeSlice = ParseTimeSlice(exElem.GetAttribute(TradingTimeTag).Trim());

                //维护股票的默认时间段
                _dictDefaultFutureOptionTradingFrame.Add(exchangeId, lstTimeSlice);
                //然后每个交易所下面的品种都要整理出来
                if (exElem.ChildNodes.Count > 0)
                {
                    XmlNode productsNode = exElem.ChildNodes[0];

                    //然后读取所有的交易所
                    foreach (XmlNode prodNode in productsNode.ChildNodes)
                    {
                        //这里是一个品种的节点
                        XmlElement prodElem = prodNode as XmlElement;

                        string             productId      = prodElem.GetAttribute(IdAttr).Trim();
                        TradingFrameSeries lstTradeFrames = new TradingFrameSeries();

                        foreach (XmlNode frameNode in prodNode.ChildNodes)
                        {
                            XmlElement frameElem = frameNode as XmlElement;
                            if (frameElem != null && frameElem.Name == "TradingFrame")
                            {
                                DateTime         beginDay         = ParseDate(frameElem.GetAttribute(BeginDayTag).Trim());
                                List <TimeSlice> tradingFrameExch = ParseTimeSlice(frameElem.GetAttribute(TradingTimeTag).Trim());

                                var i = 0;
                                for (; i < lstTradeFrames.Count; ++i)
                                {
                                    if (beginDay < lstTradeFrames[i].BeginDay)
                                    {
                                        lstTradeFrames.Insert(i, new TradingFrame(beginDay, tradingFrameExch));
                                        break;
                                    }
                                }

                                if (i == lstTradeFrames.Count)
                                {
                                    lstTradeFrames.Add(new TradingFrame(beginDay, tradingFrameExch));
                                }

                                //lstTradeFrames.Add(new TradingFrame(beginDay, tradingFrameExch));
                            }
                            else if (frameElem != null && frameElem.Name == "LimitValue")
                            {
                                double limit = 0.0;
                                double.TryParse(frameElem.GetAttribute(UpLimit).Trim(), out limit);
                                _limitDictionary.Add(productId.ToLower(), limit);
                            }
                        }
                        _dictFutureOptionTradingFrame.Add(productId, lstTradeFrames);
                    }
                }

                #endregion
            }
        }