/// <summary> /// Check whether the price is within the range /// </summary> /// <param name="session"></param> /// <param name="checkPrice"></param> /// <returns></returns> public static bool CheckHistoricalPrice(IDalSession session, IHistoricalPrice checkPrice, out string errMessage) { bool success = true; errMessage = ""; if (checkPrice != null) { IList<IHistoricalPrice> previousPrices = GetHistoricalPrices(session, checkPrice.Instrument.Key, checkPrice.Date.AddDays(-5), checkPrice.Date.AddDays(-1)); if (previousPrices != null && previousPrices.Count > 0) { Price prevPrice = previousPrices.OrderByDescending(x => x.Date).FirstOrDefault().Price; if (prevPrice == null) prevPrice = checkPrice.Instrument.Get(e => e.CurrentPrice).Get(e => e.Price); if (prevPrice != null) { decimal diff = Math.Abs((prevPrice.Quantity - checkPrice.Price.Quantity) / prevPrice.Quantity); if (diff > 0.05M) { errMessage = string.Format("The new Price is {0}% different from the previous price.", (diff * 100).ToString("0.0")); success = false; } } } } return success; }
public static bool CheckNewPrice(IDalSession session, IHistoricalPrice newPrice, bool raiseErr, out string errMessage) { bool success = true; errMessage = ""; if (!HistoricalPriceMapper.CheckHistoricalPrice(session, newPrice, out errMessage) && !string.IsNullOrEmpty(errMessage)) { if (raiseErr) throw new ApplicationException(errMessage); else success = false; } return success; }
public static bool CheckNewPrice(IDalSession session, IHistoricalPrice newPrice) { string errMessage; return CheckNewPrice(session, newPrice, true, out errMessage); }
public static bool Update(IDalSession session, IHistoricalPrice historicalPrice) { session.InsertOrUpdate(historicalPrice); return true; }