public IQueryable <DailyPriceData> GetDailyOnlinePrices(out DateTime StartDate, out DateTime EndDate) { AlsiUtils.WebSettings.GetSettings(); var data = AlsiTrade_Backend.HiSat.HistData.GetHistoricalMINUTE_FromWEB(DateTime.Now.AddMonths(-3), DateTime.Now, 1, AlsiUtils.WebSettings.General.HISAT_INST); DateTime start; start = data.First().TimeStamp; EndDate = data.Last().TimeStamp; StartDate = start; return(from q in data.Where(z => z.TimeStamp >= start && z.TimeStamp <= DateTime.Now).AsQueryable() group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, D = q.TimeStamp.Day, } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.D select new DailyPriceData { Open = FGroup.First().TimeStamp, Close = FGroup.OrderByDescending(z => z.TimeStamp).First().TimeStamp, Count = FGroup.Count(), }); }
private static void GetDynamicStopLoss(List <Price> prices, double StopLossFactor, double TakeProfitFactor) { var fortnight = from q in prices group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, W = q.TimeStamp.Day <= 15 ? 1 : 2, //D=(DateTime)q.TimeStamp } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.W select new { Year = FGroup.Key.Y, Month = FGroup.Key.M, Week = FGroup.Key.W, AvPrice = Math.Round((double)FGroup.Average(t => t.Close), 3), }; foreach (var v in fortnight) { var d = new DateTime(v.Year, v.Month, v.Week == 1 ? 1 : 15); var tpst = new TP_SL() { Datum = d, AvgMarketPrice = v.AvPrice, StopLoss = (int)(v.AvPrice * StopLossFactor), TakeProfit = (int)(v.AvPrice * TakeProfitFactor), }; TPSL.Add(tpst); } }
public IEnumerable <FlightGroup> FlightsGroup([FromHeader] RFlight request) { if ((request.Back > 0 || request.Fwd > 0) && request.Date == null) { return(from flight in _context.FlightList where flight.Est_blocktime.Value > DateTime.UtcNow.AddHours(-request.Back) && flight.Est_blocktime < DateTime.UtcNow.AddHours(request.Fwd) group flight by flight.Aircraft_reg into FGroup orderby FGroup.Key ascending select new FlightGroup { GroupID = FGroup.Key, Flights = FGroup.OrderBy(f => f.Est_blocktime).ToList() }); } else if (request.Date != null && (request.Back == 0 && request.Fwd == 0)) { return(from flight in _context.FlightList where flight.Est_blocktime > request.Date && flight.Est_blocktime < request.Date.Value.AddDays(1) group flight by flight.Aircraft_reg into FGroup orderby FGroup.Key ascending select new FlightGroup { GroupID = FGroup.Key, Flights = FGroup.OrderBy(f => f.Est_blocktime).ToList() }); } else { return(from flight in _context.FlightList where flight.Est_blocktime > DateTime.UtcNow.AddDays(-2) group flight by flight.Aircraft_reg into FGroup orderby FGroup.Key ascending select new FlightGroup { GroupID = FGroup.Key, Flights = FGroup.OrderBy(f => f.Est_blocktime).ToList() }); } }
public IQueryable <DailyPriceData> GetDailyDatabasePrices(DateTime Start, DateTime End) { return(from q in dc.MasterMinutes.Where(z => z.Stamp >= Start && z.Stamp <= End).AsQueryable() group q by new { Y = q.Stamp.Year, M = q.Stamp.Month, D = q.Stamp.Day, } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.D select new DailyPriceData { Open = FGroup.First().Stamp, Close = FGroup.OrderByDescending(z => z.Stamp).First().Stamp, Count = FGroup.Count(), }); }
private void CreateDateGroups() { var weekly = from q in AlsiUtils.Data_Objects.GlobalObjects.Points group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, W = Math.Floor((decimal)q.TimeStamp.DayOfYear / 30) + 1, //D=(DateTime)q.TimeStamp } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.W select new { Year = FGroup.Key.Y, Month = FGroup.Key.M, Week = FGroup.Key.W, FirstTradeDate = FGroup.First().TimeStamp, LastTradeDate = FGroup.Last().TimeStamp, //AvPrice = (double)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) // .Average(t => t.RunningProfit), //SumPrice = (int)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) //.Sum(t => t.RunningProfit), //marketmovement = (FGroup.Last().CurrentPrice) - (FGroup.First().CurrentPrice), //Prices = FGroup.Select(z => z.CurrentPrice), }; foreach (var v in weekly) { Console.WriteLine("Year {0} Month {1} Week {2} Start {3} End {4}", v.Year, v.Month, v.Week, v.FirstTradeDate, v.LastTradeDate); var tp = new TradePeriod() { Start = v.FirstTradeDate, End = v.LastTradeDate, }; _Periods.Add(tp); } }
public override List <T> handleData <T>(DataSet dataSet) { List <CustomInfoSaveObject> customSaveInfoObjList = new List <CustomInfoSaveObject>(); for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { CustomInfoSaveObject customSaveInfoObj = new CustomInfoSaveObject(); Model model = new Model(); FCreateOrgId fcreateOrgID = new FCreateOrgId(); FGroup fGroup = new FGroup(); FSALGROUPID fsalGroupID = new FSALGROUPID(); FTRADINGCURRID ftradingCurrID = new FTRADINGCURRID(); FUseOrgId fUserOrgId = new FUseOrgId(); fcreateOrgID.FNumber = "9999"; //fGroup.fNumber = "KH001"; fsalGroupID.fNumber = "0"; ftradingCurrID.fNumber = "PRE001"; fUserOrgId.FNumber = "9999"; model.Fnumber = dataSet.Tables[0].Rows[i]["fnumber"].ToString(); model.FName = dataSet.Tables[0].Rows[i]["fname"].ToString(); if (model.Fnumber.Contains("-") || model.FName.Contains("未知")) { BussnessLog.WriteBussnessLog("", "中间数据库取数", "中间数据库取数错误,编码=" + model.Fnumber + ",客户名称=" + model.FName); continue; } model.FCreateOrgId = fcreateOrgID; //model.FGroup = fGroup; model.FsalGroupID = fsalGroupID; model.FtradingCurrID = ftradingCurrID; model.FUseOrgId = fUserOrgId; customSaveInfoObj.Model = model; customSaveInfoObjList.Add(customSaveInfoObj); } return((List <T>)(object) customSaveInfoObjList); throw new NotImplementedException(); }
public static List <SummaryStats> SummaryProfitLoss(List <Trade> Trades, Period Period) { var TradeList_Stats = new List <Trade>(); List <SummaryStats> statsList = new List <SummaryStats>(); if (TradeList_Stats.Count == 0) { foreach (Trade t in Trades) { if (t.RunningProfit != 0) { TradeList_Stats.Add(t); } } } try { #region Weekly if (Period == Period.Weekly) { var weekly = from q in TradeList_Stats group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, W = Math.Floor((decimal)q.TimeStamp.DayOfYear / 7) + 1, //D=(DateTime)q.TimeStamp } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.W select new { Year = FGroup.Key.Y, Month = FGroup.Key.M, Week = FGroup.Key.W, Count = FGroup.Count(z => z.Reason != Trade.Trigger.None), FirstTradeDate = FGroup.First().TimeStamp, LastTradeDate = FGroup.Last().TimeStamp, AvPrice = (double)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Average(t => t.RunningProfit), SumPrice = (int)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Sum(t => t.RunningProfit), marketmovement = (FGroup.Last().CurrentPrice) - (FGroup.First().CurrentPrice), Prices = FGroup.Select(z => z.CurrentPrice), }; foreach (var v in weekly) { SummaryStats stat = new SummaryStats(); stat.Detail = "Weekly Profit and Loss Summary"; stat.Period = Period; stat.Year = (int)v.Year; stat.Month = (int)v.Month; stat.Week = (int)v.Week; stat.Count = (int)v.Count; stat.Sum = (int)v.SumPrice; stat.Average = (double)v.AvPrice; stat.FirstTrade = v.FirstTradeDate; stat.LastTrade = v.LastTradeDate; stat.MarketMovement = v.marketmovement; stat.StandardDeviation = StandardDeviation(v.Prices.ToList()); statsList.Add(stat); // Debug.WriteLine(v.Year + " " + v.Month + " " + v.Week + " " + v.Count + " " + v.SumPrice + " " + v.AvPrice); } } #endregion #region Fortnight if (Period == Period.TwoWeekly) { var fortnight = from q in TradeList_Stats group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, W = q.TimeStamp.Day <= 15 ? 1 : 2, //D=(DateTime)q.TimeStamp } into FGroup orderby FGroup.Key.Y, FGroup.Key.M, FGroup.Key.W select new { Year = FGroup.Key.Y, Month = FGroup.Key.M, Week = FGroup.Key.W, Count = FGroup.Count(z => z.Reason != Trade.Trigger.None), FirstTradeDate = FGroup.First().TimeStamp, LastTradeDate = FGroup.Last().TimeStamp, AvPrice = (double)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Average(t => t.RunningProfit), SumPrice = (int)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Sum(t => t.RunningProfit), marketmovement = (FGroup.Last().CurrentPrice) - (FGroup.First().CurrentPrice), Prices = FGroup.Select(z => z.CurrentPrice), }; foreach (var v in fortnight) { SummaryStats stat = new SummaryStats(); stat.Detail = "Fortnightly Profit and Loss Summary"; stat.Period = Period; stat.Year = (int)v.Year; stat.Month = (int)v.Month; stat.Week = (int)v.Week; stat.Count = (int)v.Count; stat.Sum = (int)v.SumPrice; stat.Average = (double)v.AvPrice; stat.FirstTrade = v.FirstTradeDate; stat.LastTrade = v.LastTradeDate; stat.MarketMovement = v.marketmovement; stat.StandardDeviation = StandardDeviation(v.Prices.ToList()); statsList.Add(stat); // Debug.WriteLine(v.Year + " " + v.Month + " " + v.Week + " " + v.Count + " " + v.SumPrice + " " + v.AvPrice); } } #endregion #region Monthly if (Period == Period.Monthly) { var monthly = from q in TradeList_Stats group q by new { Y = q.TimeStamp.Year, M = q.TimeStamp.Month, //D=(DateTime)q.TimeStamp } into FGroup orderby FGroup.Key.Y, FGroup.Key.M select new { Year = FGroup.Key.Y, Month = FGroup.Key.M, FirstTradeDate = FGroup.First().TimeStamp, LastTradeDate = FGroup.Last().TimeStamp, Count = FGroup.Count(z => z.Reason != Trade.Trigger.None), AvPrice = (double)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Average(t => t.RunningProfit), SumPrice = (int)FGroup.Where(z => z.Reason == Trade.Trigger.CloseShort || z.Reason == Trade.Trigger.CloseLong) .Sum(t => t.RunningProfit), marketmovement = (FGroup.Last().CurrentPrice) - (FGroup.First().CurrentPrice), Prices = FGroup.Select(z => z.CurrentPrice), }; foreach (var v in monthly) { SummaryStats stat = new SummaryStats(); stat.Detail = "Monthly Profit and Loss Summary"; stat.Period = Period; stat.Year = (int)v.Year; stat.Month = (int)v.Month; stat.Week = 0; stat.Count = (int)v.Count; stat.Sum = (int)v.SumPrice; stat.Average = (double)v.AvPrice; stat.FirstTrade = v.FirstTradeDate; stat.LastTrade = v.LastTradeDate; stat.MarketMovement = v.marketmovement; stat.StandardDeviation = StandardDeviation(v.Prices.ToList()); statsList.Add(stat); // Debug.WriteLine(v.Year + " " + v.Month + " " + v.Count + " " + v.SumPrice + " " + v.AvPrice); } } #endregion } catch { return(statsList); } return(statsList); }