public void HandleResult(SimCaseResultOverview experimentData, ProfitAndLossResult result) { String fileName = String.Format("pnl_{0}.csv", result.Key); CsvUtil.CsvOut(fileName, result); DrawDown mdd = MathUtil.GetMaxDrawDown(result); double pnLRateTotal = MathUtil.GetPnLRateTotal(result); double pnlRatePerYear = MathUtil.GetPnLRatePerYear(result); double ppm = MathUtil.GetPPM(result); }
public void Run() { // Data를 준비한다. _strategy.ReadyData(); SimCaseResultOverview experimentData = new SimCaseResultOverview(_strategy.GetInput(), 0, (int)_strategy.GetPossibleCase()); for (int i = 0; i < _strategy.GetPossibleCase(); ++i) { // 실행한다. AssetRateDataLog log = _strategy.Execute(i); // 결과를 보여준다. ProfitAndLossResult result = _strategy.GetResult(log); experimentData.CurCaseCount = i + 1; foreach (IResultHandler handler in _resultHandlers) { handler.HandleResult(experimentData, result); } } _strategy.InternalLogToCsv(); }
void AddNewResult_Raw(SimCaseResultOverview experimentData, IPnLResult result) { _result.Add(result); UpdateDataGridView(experimentData); }
public void HandleResult(SimCaseResultOverview experimentData, IPnLResult result) { this.Invoke(new AddNewResult(AddNewResult_Raw), new object[] { experimentData, result }); //this.Invoke(new AddNewResult(AddNewResult_Raw), result); }
void UpdateDataGridView(SimCaseResultOverview experimentData) { textBox0.Text = experimentData.ToString(); dataGridView1.Rows.Clear(); foreach (IPnLResult row in _result) { double yearPnLPerMDD = row.PPM; if (double.IsNaN(yearPnLPerMDD)) { continue; } int index = dataGridView1.Rows.Add(); dataGridView1.Rows[index].Cells[0].Value = row.Name; dataGridView1.Rows[index].Cells[1].Value = yearPnLPerMDD.ToString("n4"); double avgInvest = row.AvgInvest; double maxInvest = row.MaxInvest; double roi = row.AvgPnLPerYear; dataGridView1.Rows[index].Cells[2].Value = roi.ToString("n0"); dataGridView1.Rows[index].Cells[3].Value = avgInvest.ToString("n0"); dataGridView1.Rows[index].Cells[4].Value = maxInvest.ToString("n0"); } }
void UpdateOverview(SimCaseResultOverview overview) { textBox1.Text = overview.ToString(); }
void AddNewResult_Raw(SimCaseResultOverview overview, ProfitAndLossResult result) { _result.Add(result); // UpdateDataGridView(experimentData); UpdateOverview(overview); }