/// <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); }
/// <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); } }