Example #1
0
        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);
        }
Example #2
0
 // 依时间次序的连续三天,判断是否满足相反的条件
 // Day1最前,Day2晚一些.
 public bool ReverseFulFil(IStockData day1, IStockData day2, IStockData day3)
 {
     // 连续三天下跌条件
     return(!StockJudger.IsUp(day1) && !StockJudger.IsUp(day2) && !StockJudger.IsUp(day3));
 }
Example #3
0
 // 依时间次序的连续三天,判断是否满足条件
 // Day1最前,Day2晚一些.
 public bool FulFil(IStockData day1, IStockData day2, IStockData day3)
 {
     // 连续三天上涨条件
     return(StockJudger.IsUp(day1) && StockJudger.IsUp(day2) && StockJudger.IsUp(day3) && IsWin(day3));
 }