public override ICollection <StockOper> GetOper(DateTime day, IAccount account) { IStockData curProp = stockHistory.GetStock(day); IStockData stockYesterdayProp = stockHistory.GetPrevDayStock(day); DateTime prevDate = stockHistory.GetPreviousDay(day); IStockData stockprevProp = stockHistory.GetPrevDayStock(prevDate); DateTime prevNextDate = stockHistory.GetPreviousDay(prevDate); if (!CheckStock(curProp, day) || !CheckStock(stockYesterdayProp, prevDate) || !CheckStock(stockprevProp, prevNextDate)) { return(null); } ICollection <StockOper> opers = new List <StockOper>(); // IsRise? Condition questionable. if ( StockJudger.IsRise(stockYesterdayProp, stockprevProp) && StockJudger.IsUp(stockYesterdayProp) && StockJudger.IsUp(stockprevProp)) { if (stockHolder.HasStock()) { StockOper oper = new StockOper(curProp.StartPrice, stockHolder.StockCount(), OperType.Sell); opers.Add(oper); return(opers); } } else if ( !StockJudger.IsRise(stockYesterdayProp, stockprevProp) && !StockJudger.IsUp(stockYesterdayProp) && !StockJudger.IsUp(stockprevProp)) { int stockCount = Transaction.GetCanBuyStockCount(account.BankRoll, curProp.StartPrice); if (stockCount > 0) { StockOper oper = new StockOper(curProp.StartPrice, stockCount, OperType.Buy); opers.Add(oper); return(opers); } } return(null); }
// 依时间次序的连续三天,判断是否满足相反的条件 // Day1最前,Day2晚一些. public bool ReverseFulFil(IStockData day1, IStockData day2, IStockData day3) { // 连续三天下跌条件 return(!StockJudger.IsUp(day1) && !StockJudger.IsUp(day2) && !StockJudger.IsUp(day3)); }
// 依时间次序的连续三天,判断是否满足条件 // Day1最前,Day2晚一些. public bool FulFil(IStockData day1, IStockData day2, IStockData day3) { // 连续三天上涨条件 return(StockJudger.IsUp(day1) && StockJudger.IsUp(day2) && StockJudger.IsUp(day3) && IsWin(day3)); }