public void DoCreatePricePrediction(ref Resolver resolver, DateTime localDateTime, string fileName) { Utils.FileAppendThreadSafe(fileName, string.Format("1. DoCreateSystemPricePrediction--OpenBettingTime is {0}: {1}{2}", localDateTime, DateTime.Now, Environment.NewLine)); var newPricePredictionRecord = new PricePrediction { Coinbase = EnumCurrencyPair.BTCUSDT.ToString(), OpenBettingTime = localDateTime, CloseBettingTime = localDateTime.AddHours(PricePredictionGameIntervalInHour - PricePredictionHoldingIntervalInHour).AddMinutes(-PricePredictionCompareIntervalInMinute), ToBeComparedTime = localDateTime.AddHours(PricePredictionGameIntervalInHour).AddMinutes(-PricePredictionCompareIntervalInMinute), ResultTime = localDateTime.AddHours(PricePredictionGameIntervalInHour), PricePredictionCategoryId = (int)EnumPricePredictionCategory.SYSTEM, DividendRate = int.Parse(resolver.SettingService.Queryable().FirstOrDefault(x => x.Name == CPLConstant.PricePredictionTotalAwardPercentage).Value) }; resolver.PricePredictionService.Insert(newPricePredictionRecord); // udpate DB resolver.UnitOfWork.SaveChanges(); var langIds = resolver.LangService.Queryable().Select(x => x.Id).ToList(); var title = newPricePredictionRecord.CloseBettingTime.ToString("HH:mm") == "00:00" ? "24:00" : newPricePredictionRecord.CloseBettingTime.ToString("HH:mm"); foreach (var id in langIds) { resolver.PricePredictionDetailService.Insert(new PricePredictionDetail { LangId = id, Title = title, // title will be shown as tab name in priceprediction screen PricePredictionId = newPricePredictionRecord.Id, }); } // udpate DB resolver.UnitOfWork.SaveChanges(); }
public void DoCreatePricePrediction(ref Resolver resolver, DateTime localDateTime, string logFileName) { Utils.FileAppendThreadSafe(logFileName, string.Format("1. DoCreateAdminPricePrediction: {0}{1}", DateTime.Now, Environment.NewLine)); var activePricePredictionSettings = resolver.PricePredictionSettingService.Queryable().Where(x => x.Status == (int)EnumPricePredictionSettingStatus.ACTIVE && !x.IsDeleted).ToList(); IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; foreach (var activePricePredictionSetting in activePricePredictionSettings) { var openBettingTime = new DateTime(localDateTime.Year, localDateTime.Month, localDateTime.Day) + activePricePredictionSetting.OpenBettingTime; var closeBettingTime = new DateTime(localDateTime.Year, localDateTime.Month, localDateTime.Day) + activePricePredictionSetting.CloseBettingTime; var toBeComparedTime = closeBettingTime.AddHours((double)activePricePredictionSetting.HoldingTimeInterval); var resultTime = toBeComparedTime.AddMinutes((double)activePricePredictionSetting.ResultTimeInterval); var newPricePredictionRecord = new PricePrediction { Coinbase = EnumCurrencyPair.BTCUSDT.ToString(), OpenBettingTime = openBettingTime, CloseBettingTime = closeBettingTime, ToBeComparedTime = toBeComparedTime, ResultTime = resultTime, PricePredictionCategoryId = activePricePredictionSetting.PricePredictionCategoryId, DividendRate = activePricePredictionSetting.DividendRate }; resolver.PricePredictionService.Insert(newPricePredictionRecord); resolver.UnitOfWork.SaveChanges(); var LangIds = resolver.LangService.Queryable().Select(x => x.Id).ToList(); //var title = newPricePredictionRecord.CloseBettingTime.ToString("HH:mm") == "00:00" ? "24:00" : newPricePredictionRecord.CloseBettingTime.ToString("HH:mm"); var title = resolver.PricePredictionSettingDetailService.Queryable().FirstOrDefault(x => x.PricePredictionSettingId == activePricePredictionSetting.Id).Title; foreach (var id in LangIds) { resolver.PricePredictionDetailService.Insert(new PricePredictionDetail { LangId = id, Title = title, // title will be shown as named of tab in priceprediction screen PricePredictionId = newPricePredictionRecord.Id, }); } // udpate DB resolver.UnitOfWork.SaveChanges(); var jobData = new JobDataMap { ["Resolver"] = resolver, ["PricePredictionId"] = newPricePredictionRecord.Id }; IJobDetail job = JobBuilder.Create <AdminPricePredictionCheckResultJob>() .UsingJobData(jobData) .WithIdentity(new JobKey(string.Format("AdminPricePrediction{0}CheckResultJob", newPricePredictionRecord.Id.ToString()), "QuartzGroup")) .WithDescription("Job to check admin's PricePredictions result") .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(new TriggerKey(string.Format("AdminPricePrediction{0}CheckResultJob", newPricePredictionRecord.Id.ToString()), "QuartzGroup")) .WithDescription("Job to check admin's PricePredictions result") .WithDailyTimeIntervalSchedule(x => x.WithIntervalInHours(PredictionGameServiceConstant.DailyIntervalInHours) .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(resultTime.Hour, resultTime.Minute)) .WithRepeatCount(0)) .Build(); scheduler.ScheduleJob(job, trigger); } }
// For more info on consuming ML.NET models, visit https://aka.ms/mlnet-consume // Method for consuming model in your app public static PricePrediction Predict(PriceData input) { PricePrediction result = PredictionEngine.Value.Predict(input); return(result); }