public void Run() { // Data를 준비한다. _strategy.ReadyData(); ExperimentData experimentData = new ExperimentData(_strategy.GetInput()); experimentData.TotalCaseCount = (int)_strategy.GetPossibleCase(); for (int i = 0; i < _strategy.GetPossibleCase(); ++i) { // 실행한다. AssetWeightLog 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(ExperimentData experimentData, ProfitAndLossResult result) { _result.Add(result); UpdateDataGridView(experimentData); }
public void HandleResult(ExperimentData experimentData, ProfitAndLossResult result) { this.Invoke(new AddNewResult(AddNewResult_Raw), new object[] { experimentData, result }); //this.Invoke(new AddNewResult(AddNewResult_Raw), result); }
void UpdateDataGridView(ExperimentData experimentData) { textBox1.Text = experimentData.ToString(); dataGridView1.Rows.Clear(); foreach (ProfitAndLossResult row in _result) { double yearPnLPerMDD = row.PPM; if (double.IsNaN(yearPnLPerMDD)) { continue; } int index = dataGridView1.Rows.Add(); dataGridView1.Rows[index].Cells[0].Value = row.Key; dataGridView1.Rows[index].Cells[1].Value = yearPnLPerMDD.ToString("n3"); double roi = row.AvgPnLPerYear; dataGridView1.Rows[index].Cells[2].Value = roi.ToString("n0"); } }