Ejemplo n.º 1
0
 /// <summary>
 /// 所有的历史交易时段
 /// </summary>
 /// <param name="market">市场类型</param>
 /// <param name="exchangeId">交易所ID</param>
 /// <param name="productId">期货和期货期权需要填写-ProductID</param>
 /// <returns>所有的交易时段</returns>
 public TradingFrameSeries GetAllTradingTimeFrames(EnumMarket market, string exchangeId, string productId = "")
 {
     if (market == EnumMarket.股票)
     {
         if (_dictStockTradingFrame.ContainsKey(exchangeId))
         {
             return(_dictStockTradingFrame[exchangeId]);
         }
     }
     else if (market == EnumMarket.股票期权)
     {
         if (_dictStockOptionTradingFrame.ContainsKey(exchangeId))
         {
             return(_dictStockOptionTradingFrame[exchangeId]);
         }
     }
     else if (market == EnumMarket.期货)
     {
         if (_dictFutureTradingFrame.ContainsKey(productId))
         {
             return(_dictFutureTradingFrame[productId]);
         }
     }
     else if (market == EnumMarket.期货期权)
     {
         if (_dictFutureOptionTradingFrame.ContainsKey(productId))
         {
             return(_dictFutureOptionTradingFrame[productId]);
         }
     }
     return(null);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取默认的交易时段
        /// </summary>
        /// <param name="market"></param>
        /// <param name="exchangeId"></param>
        /// <returns></returns>
        public List <TimeSlice> GetDefaultTradingFrame(EnumMarket market, string exchangeId)
        {
            if (market == EnumMarket.股票)
            {
                if (_dictDefaultStockTradingFrame.ContainsKey(exchangeId))
                {
                    return(_dictDefaultStockTradingFrame[exchangeId]);
                }
            }
            else if (market == EnumMarket.股票期权)
            {
                if (_dictDefaultStockOptionTradingFrame.ContainsKey(exchangeId))
                {
                    return(_dictDefaultStockOptionTradingFrame[exchangeId]);
                }
            }
            else if (market == EnumMarket.期货)
            {
                if (_dictDefaultFutureTradingFrame.ContainsKey(exchangeId))
                {
                    return(_dictDefaultFutureTradingFrame[exchangeId]);
                }
            }
            else if (market == EnumMarket.期货期权)
            {
                if (_dictDefaultFutureOptionTradingFrame.ContainsKey(exchangeId))
                {
                    return(_dictDefaultFutureOptionTradingFrame[exchangeId]);
                }
            }

            return(_defaultFrame);
        }
        /// <summary>
        /// 创建文件读取类
        /// </summary>
        /// <param name="market"></param>
        /// <returns></returns>
        public static FutureTickFileNew CreateTickFile(EnumMarket market)
        {
            switch (market)
            {
            case EnumMarket.期货: return(new FutureTickFileNew());
            }

            throw new Exception("没有" + market.ToString() + "对应的Tick文件读取类");
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Create a new bar file.
 /// </summary>
 /// <param name="filePath"></param>
 /// <param name="market"></param>
 /// <param name="barType"></param>
 /// <param name="period"></param>
 public BarFileV1(string filePath, EnumMarket market, EnumBarType barType = EnumBarType.иооМ, int period = 1)
     : base(filePath, new FileHeader
 {
     FileVersion = FileVersion,
     Period      = period,
     Market      = market,
     BarType     = barType
 })
 {
 }
Ejemplo n.º 5
0
 public MqTickReader(string strFile, string futureId, EnumMarket market, string exCode)
 {
     _tickFileName = strFile;
     _futureId     = futureId;
     _exCode       = exCode;
     _firstRead    = true;
     _bValid       = false;
     _tradingDay   = default(DateTime);
     _market       = market;
 }
Ejemplo n.º 6
0
        public TimeSpan GetCloseTime(DateTime tradingday, EnumMarket market, string exchangid, string productid = "")
        {
            List <TimeSlice> lstslice = GetTradingFrame(tradingday, market, exchangid, productid);

            if (lstslice != null && lstslice.Count > 0)
            {
                return(lstslice[lstslice.Count - 1].EndTime);
            }

            return(default(TimeSpan));
        }
Ejemplo n.º 7
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));
            }
        }
Ejemplo n.º 8
0
        public TimeSlice GetLivingTime(DateTime tradingday, EnumMarket market, string exchangid, string productid = "")
        {
            List <TimeSlice> lstslice = GetTradingFrame(tradingday, market, exchangid, productid);

            if (lstslice != null && lstslice.Count > 0)
            {
                return(new TimeSlice()
                {
                    BeginTime = lstslice[0].BeginTime,
                    EndTime = lstslice[lstslice.Count - 1].EndTime
                });
            }

            return(null);
        }
        public bool Load(
            string strDir,
            List <string> instrIdlist,
            EnumMarket market,
            DateTime tradingDay)
        {
            _tfMgr.LoadData(strDir + "\\TradingFrame.xml");

            switch (market)
            {
            case EnumMarket.期货:
                return(Load(strDir, instrIdlist, market, false));
            }

            return(false);
        }
Ejemplo n.º 10
0
 public TestTradeCase(
     string _insId,
     EnumMarket _market,
     string _exchange,
     EnumBuySell _direction,
     double _limitPrice,
     int _volume,
     int _year,
     int _month,
     int _day)
 {
     insId      = _insId;
     Market     = _market;
     ExchangeID = _exchange;
     Direction  = _direction;
     LimitPrice = _limitPrice;
     Volume     = _volume;
     Year       = _year;
     Month      = _month;
     Day        = _day;
 }
        /// <summary>
        /// 载入股票
        /// </summary>
        /// <param name="strDir">配置目录</param>
        /// <param name="instrIdlist">品种代码表</param>
        /// <param name="market">市场</param>
        /// <param name="isLive">是否实盘</param>
        /// <returns></returns>
        public bool Load(
            string strDir,
            List <string> instrIdlist,
            EnumMarket market,
            bool isLive)
        {
            _tfMgr.LoadData(strDir + "\\TradingFrame.xml");

            switch (market)
            {
            case EnumMarket.期货:
                #region

                FutureManager fmgr = new FutureManager();

                if (isLive)
                {
                    if (!FutureFile.Read(strDir, fmgr, instrIdlist, isLive))
                    {
                        Clear();
                        return(false);
                    }
                }
                else
                {
                    if (!FutureFile.Read(strDir, fmgr))
                    {
                        Clear();
                        return(false);
                    }
                }

                Merge(fmgr);
                return(true);

                #endregion
            }

            return(false);
        }
Ejemplo n.º 12
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));
        }
        public List <Instrument> ExpandInstrument(string instId, EnumMarket market)
        {
            if (market == EnumMarket.股票期权)
            {
                if (instId.Length < 11) // 510050X8.SH
                {
                    return(null);
                }

                if (instId.Contains("X"))
                {
                    var refstock = instId.Remove(6, 2);
                    if (_mapRefOptionCurMonth.ContainsKey(refstock))
                    {
                        var curMonth = _mapRefOptionCurMonth[refstock];

                        #region 计算是哪个月的合约

                        switch (instId[7])
                        {
                        case '7':     // 下月
                            curMonth = curMonth.AddMonths(1);
                            break;

                        case '6':     // 下季
                        {
                            var itmp = curMonth.Month % 3;
                            switch (itmp)
                            {
                            case 0:
                                curMonth = curMonth.AddMonths(3);
                                break;

                            case 1:
                                curMonth = curMonth.AddMonths(2);
                                break;

                            default:
                                curMonth = curMonth.AddMonths(4);
                                break;
                            }
                            break;
                        }

                        case '5':     // 隔季
                        {
                            var itmp = curMonth.Month % 3;
                            switch (itmp)
                            {
                            case 0:
                                curMonth = curMonth.AddMonths(6);
                                break;

                            case 1:
                                curMonth = curMonth.AddMonths(5);
                                break;

                            default:
                                curMonth = curMonth.AddMonths(7);
                                break;
                            }
                            break;
                        }
                        }

                        #endregion

                        var lstInsts = new List <Instrument>();

                        foreach (var inst in AllInstruments)
                        {
                            if (inst is Option)
                            {
                                var option = inst as Option;
                                if (option.RefInstrumentID == refstock && option.EndDate.Month == curMonth.Month)
                                {
                                    lstInsts.Add(option);
                                }
                            }
                        }

                        return(lstInsts);
                    }
                }
            }

            var instrument = this[instId];
            if (instrument != null)
            {
                return(new List <Instrument>(1)
                {
                    instrument
                });
            }

            return(null);
        }