示例#1
0
        /// <summary>
        /// 获取历史完成套利单。
        /// </summary>
        /// <returns></returns>
        /// <param name="brokerId">经纪商ID。</param>
        /// <param name="account">资金帐号。</param>
        /// <param name="beginTime">起始时间。</param>
        /// <param name="endTime">截至时间。</param>
        public List <USeArbitrageOrder> GetHistoryArbitrageOrders(string brokerId, string account, DateTime?beginTime, DateTime?endTime)
        {
            List <USeArbitrageOrder> list = new List <USeArbitrageOrder>();

            string        finishOrderPath = GetFinishOrderPath(brokerId, account);
            DirectoryInfo finishOrderDir  = new DirectoryInfo(finishOrderPath);

            if (finishOrderDir.Exists == false)
            {
                return(list);  // 目录不存在
            }

            FileInfo[] fileArray = finishOrderDir.GetFiles("ArbitrageOrder_*.xml");
            if (fileArray == null || fileArray.Length <= 0)
            {
                return(list);  // 目录无文件
            }

            foreach (FileInfo fileInfo in finishOrderDir.GetFiles())
            {
                try
                {
                    ArbitrageOrderKey orderKey = ArbitrageOrderKey.Create(fileInfo.FullName);
                    if (beginTime.HasValue)
                    {
                        Debug.Assert(orderKey.FinishTime.HasValue);
                        //过滤结束时间小于开始时间的
                        if (orderKey.FinishTime.Value < beginTime)
                        {
                            continue;
                        }
                    }
                    if (endTime.HasValue)
                    {
                        // 过滤创建时间大于截止时间的
                        if (orderKey.CreateTime > endTime)
                        {
                            continue;
                        }
                    }

                    XmlAttributeOverrides xmlOverrides   = CreateArbitrageOrderXMLOverrides();
                    USeArbitrageOrder     arbitrageOrder = USeXmlSerializer.LoadFromXml <USeArbitrageOrder>(fileInfo.FullName, xmlOverrides);
                    list.Add(arbitrageOrder);
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Format("GetHistoryArbitrageOrders failed,FilePath:{0},Error:{1}", fileInfo.FullName, ex.Message));
                }
            }

            return(list);
        }
示例#2
0
            /// <summary>
            /// 创建套利单关键字。
            /// </summary>
            /// <param name="fileFullName"></param>
            /// 文件名
            /// <returns></returns>
            public static ArbitrageOrderKey Create(string fileFullName)
            {
                if (string.IsNullOrEmpty(fileFullName))
                {
                    throw new ArgumentNullException("fileName", "fileName is empty");
                }

                ArbitrageOrderKey orderKey = new ArbitrageOrderKey();

                try
                {
                    FileInfo fileInfo  = new FileInfo(fileFullName);
                    string[] orderInfo = fileInfo.Name.Split(new char[] { '_', '.' });
                    if (orderInfo.Length == 4)
                    {
                        if (orderInfo[0] != "ArbitrageOrder" || orderInfo[3].ToLower() != "xml")
                        {
                            throw new Exception("Is not arbitrageOrder file");
                        }

                        orderKey.CreateTime = ToDateTime(orderInfo[1]);
                        orderKey.FinishTime = ToDateTime(orderInfo[2]);
                        orderKey.FilePath   = fileFullName;
                    }
                    else if (orderInfo.Length == 3)
                    {
                        if (orderInfo[0] != "ArbitrageOrder" || orderInfo[2].ToLower() != "xml")
                        {
                            throw new Exception("Invalid arbitrageOrder file");
                        }
                        orderKey.CreateTime = ToDateTime(orderInfo[1]);
                        orderKey.FilePath   = fileFullName;
                    }
                    else
                    {
                        throw new Exception("Invalid arbitrageOrder file");
                    }
                    return(orderKey);
                }
                catch (Exception ex)
                {
                    throw new Exception("CreatArbitrageOrderKey failed,Error:" + ex.Message);
                }
            }