public ActionResult MonteCarloSimulationModal(int id) { MonteCarloSimulationDto model = new MonteCarloSimulationDto(); if (id == 0) { TradingAccountDto tradingAccount = this._tradingAccountAppService.GetActive(); List <Market> markets = this._marketRepository.GetAll().Where(x => x.Active).ToList(); model.TimeStamp = DateTime.Now; model.TradingAccountId = tradingAccount.Id; model.NumberOfTradesInSample = this._tradeRepository.GetAll().Count(x => x.TradingAccountId == model.TradingAccountId && x.ExitReason != TradeExitReasons.None); model.NumberOfTradesPerIteration = 30; model.NumberOfIterations = 1000; model.CumulativeProfitK = .95m; model.ConsecutiveLossesK = 1m; model.MaxDrawdownK = .99m; model.AccountSize = tradingAccount.CurrentCapital; model.RuinPoint = markets.Average(x => x.InitialMargin) + 10m; model.MaxDrawdownMultiple = 2m; } else { MonteCarloSimulation monteCarloSimulation = this._repository.Single(x => x.Id == id); monteCarloSimulation.MapTo(model); } return(PartialView("Modals/_MonteCarloSimulationModal", model)); }
public void RunSimulation(MonteCarloSimulationDto dto) { MonteCarloSimulation sim = _repository.Get(dto.Id); sim.MapTo(dto); List <Trade> sample = this._tradeRepository.GetAll().Where(x => x.TradingAccountId == dto.TradingAccountId && x.ExitReason != TradeExitReasons.None).ToList(); List <Market> markets = this._marketRepository.GetAll().Where(x => x.Active).ToList(); dto.Simulate(sample, markets, this._consoleHubProxy); dto.MapTo(sim); }
public void Save(MonteCarloSimulationDto dto) { if (dto.IsNew) { MonteCarloSimulation monteCarloSimulation = dto.MapTo <MonteCarloSimulation>(); int id = this._repository.InsertAndGetId(monteCarloSimulation); this.RunSimulationEnqueue(new MonteCarloSimulationDto() { Id = id }); } else { MonteCarloSimulation monteCarloSimulation = this._repository.Get(dto.Id); dto.MapTo(monteCarloSimulation); } }
public ActionResult MonteCarloSimulation_Destroy([DataSourceRequest] DataSourceRequest request, MonteCarloSimulationDto model) { if (model != null) { this._repository.Delete(model.Id); } return(Json(new[] { model }.ToDataSourceResult(request, ModelState))); }
public ActionResult MonteCarloSimulation_Update([DataSourceRequest] DataSourceRequest request, MonteCarloSimulationDto model) { if (model != null && ModelState.IsValid) { this._monteCarloSimulationAppService.Save(model); } return(Json(new[] { model }.ToDataSourceResult(request, ModelState))); }
public void RunSimulationEnqueue(MonteCarloSimulationDto dto) { _backgroundJobManager.Enqueue <RunMonteCarloSimulationBackgroundJob, MonteCarloSimulationDto>(dto); }