Example #1
0
        public bool AddStock(IStockData sd)
        {
            if (sd == null)
            {
                return(false);
            }

            prevStock_    = currentStock_;
            currentStock_ = sd;

            if ((prevStock_ == null) || (currentStock_ == null))
            {
                return(false);
            }

            double typicalPrice = CalcTypicalPrice(currentStock_);
            bool   isUp         = StockJudger.IsRise(currentStock_, prevStock_);

            AddTodayPrice(typicalPrice * currentStock_.Amount, isUp); // 直接保存Money Flow, 即Typical Price * Volume

            if (PriceUpDowns_.Count < MFICALCDAYS)
            {
                return(false);
            }

            CalculateMFI();
            return(true);
        }
Example #2
0
        public bool AddStock(IStockData sd)
        {
            if (sd == null)
            {
                return(false);
            }

            prevStock_    = currentStock_;
            currentStock_ = sd;

            if ((prevStock_ == null) || (currentStock_ == null))
            {
                return(false);
            }

            AddTodayPrice(sd.EndPrice, StockJudger.IsRise(sd, prevStock_));

            if (Prices_.Count < RSICALCDAYS)
            {
                return(false);
            }

            double rsi = CalculateRSI();

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