예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #3
0
 void AddNewResult_Raw(SimCaseResultOverview experimentData, IPnLResult result)
 {
     _result.Add(result);
     UpdateDataGridView(experimentData);
 }
예제 #4
0
 public void HandleResult(SimCaseResultOverview experimentData, IPnLResult result)
 {
     this.Invoke(new AddNewResult(AddNewResult_Raw), new object[] { experimentData, result });
     //this.Invoke(new AddNewResult(AddNewResult_Raw), result);
 }
예제 #5
0
        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");
            }
        }
예제 #6
0
 void UpdateOverview(SimCaseResultOverview overview)
 {
     textBox1.Text = overview.ToString();
 }
예제 #7
0
 void AddNewResult_Raw(SimCaseResultOverview overview, ProfitAndLossResult result)
 {
     _result.Add(result);
        // UpdateDataGridView(experimentData);
     UpdateOverview(overview);
 }