private async void Test() { this.Cursor = Cursors.WaitCursor; if (comboBox_test.SelectedItem == null) { MessageBox.Show("Выберите значение", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { checkBox1_index.Checked = false; checkBox_sp.Checked = false; profitYear = new Dictionary <double, double>(); string text = comboBox_test.SelectedItem.ToString(); string[] t = text.Split(' '); t[1] = t[1].Remove(t[1].Length - 1); double prof = Convert.ToDouble(t[1]); double risk = Convert.ToDouble(t[2]); Portfolio result = null; foreach (var res in results) { if (Math.Abs(res.Profit - prof) < 0.001 && Math.Abs(res.Risk - risk) < 0.001) { result = res; int j = 0; foreach (DataGridViewRow a in Program.form.dataGridView2.Rows) { Asset asset = (Asset)a.Cells[0].Value; dataGridView[1, j].Value = res.ConvertPortfolio()[j] + "%"; j++; } dataGridView[1, j].Value = res.GetSum + "%"; // double st = ; label_stand.Text = res.StandDev.ToString() + "%"; label_profitV.Text = prof + "%"; label_riskV.Text = risk + "%"; // label_cost.Text = string.Format("{0:###,###.##} руб.", Math.Round(res.Cost)); } } await DownloadTask(selectedAssets, path, year + 1); try { finalArray = ClassAssistant.ReadData(selectedAssets, path); weeks = ClassAssistant.DateTimeArray(selectedAssets, path); checkBox1_index.Enabled = true; checkBox_sp.Enabled = true; DoGraphProfit(finalArray, result); } catch (Exception ex) { MessageBox.Show(ex.Message); }//button_test_Click(sender, e); } } this.Cursor = Cursors.Default; dataGridView.Cursor = Cursors.Default; }
private async void dataGridView_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { double sum = 0; double[] w = new double[dataGridView.Rows.Count - 1]; for (int i = 0; i < dataGridView.Rows.Count - 1; i++) { try { w[i] = Convert.ToDouble(dataGridView[1, i].Value.ToString()); sum += w[i]; } catch (FormatException) { MessageBox.Show("Неверный формат числа!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } dataGridView[1, dataGridView.Rows.Count - 1].Value = sum + "%"; if (dataGridView[1, dataGridView.Rows.Count - 1].Value.ToString() == "100%") { await DownloadTask(selectedAssets, path, year + 1); try { for (int i = 0; i < dataGridView.Rows.Count - 1; i++) { dataGridView[1, i].Value = dataGridView[1, i].Value.ToString() + "%"; } finalArray = ClassAssistant.ReadData(selectedAssets, path); weeks = ClassAssistant.DateTimeArray(selectedAssets, path); checkBox1_index.Enabled = true; checkBox_sp.Enabled = true; Portfolio p = new Portfolio(w, 0, 0); // p.Cost = CalculationClass.PortfolioCost(finalArray, p); // label_cost.Text = string.Format("{0:###,###.##} руб.", Math.Round(p.Cost)); profitYear = new Dictionary <double, double>(); DoGraphProfit(finalArray, p); dataGridView.Columns[1].ReadOnly = true; label2.Visible = false; } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("Сумма долей должна быть равна 100%!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private async void LoadForm() { this.Cursor = Cursors.WaitCursor; zGC.GraphPane.CurveList.Clear(); GraphPane pane = zGC.GraphPane; pane.Title.Text = "Граница эффективных портфелей"; zGC.GraphPane.YAxis.Title.Text = "Доходность (%)"; zGC.GraphPane.XAxis.Title.Text = "Риск (%)"; zGC.GraphPane.XAxis.Scale.Min = -0.1; label_step.Text = "0.1%"; selectedAssets = new Asset[Program.form.dataGridView2.Rows.Count]; constraints = new double[Program.form.dataGridView2.Rows.Count]; int j = 0; foreach (DataGridViewRow t in Program.form.dataGridView2.Rows) { Asset a = (Asset)t.Cells[0].Value; selectedAssets[j] = a; constraints[j] = Convert.ToDouble(t.Cells[1].Value.ToString().Replace('.', ',')); j++; } await DownloadTask(selectedAssets, Program.path, Program.form.trackBar_period.Value); // ClassAssistant.DownloadAllAssets(selectedAssets, Program.path, Program.form.trackBar_period.Value, false); try { finalArray = ClassAssistant.ReadData(selectedAssets, Program.path); sp = ClassAssistant.SinglePortfolio(finalArray); DoEffectiveLine(); if (results.Count != 0) { DoTable(results.Last()); } this.Cursor = Cursors.Default; dataGridView.Cursor = Cursors.Default; } catch (System.IO.IOException ex) { string[] exception = ex.Message.Split(' '); // DialogResult dr = MessageBox.Show("Ошибка при считывании файла " + exception[exception.Length - 1] + ". Замените этот актив или попробуйте еще раз.\nПовторить попытку?", // "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); // if (dr == System.Windows.Forms.DialogResult.Retry) LoadForm(); // else this.Close(); count++; if (count == 3) { // DialogResult dr = MessageBox.Show("Ошибка при считывании файла " + exception[exception.Length - 1] + ". Замените этот актив.", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); DialogResult dr = MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); count = 0; if (dr == System.Windows.Forms.DialogResult.OK) { this.Close(); } } else { LoadForm(); } } catch (Exception ex) { string[] exception = ex.Message.Split(' '); DialogResult dr = MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (dr == System.Windows.Forms.DialogResult.Retry) { LoadForm(); } else { this.Close(); } } }
public async void DoList() { this.Cursor = Cursors.WaitCursor; try { int j = 0; comboBox_test.Items.Clear(); //ClassAssistant.DownloadAllAssets(selectedAssets, path, year, false); await DownloadTask(selectedAssets, path, year); finalArray = ClassAssistant.ReadData(selectedAssets, path); double start = -0.02, finish = 1, step = 0.001; results = ClassAssistant.DoListPortfolio(finalArray, selectedAssets, start, finish, step, constraints); if (results.Count == 0) { MessageBox.Show("Решения не найдены", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } else { j = 1; foreach (var t in results) { comboBox_test.Items.Add(j + ": " + t.Profit.ToString() + "; " + t.Risk.ToString()); j++; } } dataGridView.Cursor = Cursors.Default; this.Cursor = Cursors.Default; } catch (System.IO.IOException ex) { string[] exception = ex.Message.Split(' '); count++; if (count == 3) { // DialogResult dr = MessageBox.Show("Нет данных для " + exception[exception.Length - 1] + ". Замените этот актив.", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); DialogResult dr = MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); count = 0; if (dr == System.Windows.Forms.DialogResult.OK) { this.Close(); } } else { DoList(); } } catch (Exception ex) { string[] exception = ex.Message.Split(' '); DialogResult dr = MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (dr == System.Windows.Forms.DialogResult.Retry) { DoList(); //Form4_test_Load(sender, e); } // else this.Close(); } }
private async void Correlation() { this.Cursor = Cursors.WaitCursor; selectedAssets = new Asset[Program.form.dataGridView2.Rows.Count]; int j = 0; foreach (DataGridViewRow t in Program.form.dataGridView2.Rows) { Asset a = (Asset)t.Cells[0].Value; selectedAssets[j] = a; j++; } string path = Program.path + "cor\\"; await DownloadTask(selectedAssets, path, Program.form.trackBar_period.Value); try { finalArray = ClassAssistant.ReadData(selectedAssets, path); dataGridView.Columns.Add("colName", "Актив"); for (int i = 0; i < selectedAssets.Length; i++) { dataGridView.Columns.Add(selectedAssets[i].Ticker, selectedAssets[i].Name); dataGridView.Rows.Add(selectedAssets[i].Name); } this.FillTable(finalArray); for (int i = 0; i < dataGridView.Columns.Count; i++) { dataGridView.Columns[i].Width = 60; } this.Cursor = Cursors.Default; } catch (System.IO.IOException ex) { //Form5_cor_Load(sender, e); string[] exception = ex.Message.Split(' '); /* DialogResult dr = MessageBox.Show("Ошибка при считывании файла " + exception[exception.Length - 1] + ". Замените этот актив или попробуйте еще раз.\nПовторить попытку?", * "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); * if (dr == System.Windows.Forms.DialogResult.Retry) Correlation(); * else this.Close(); */ count++; if (count == 3) { DialogResult dr = MessageBox.Show("Ошибка при считывании файла " + exception[exception.Length - 1] + ". Замените этот актив.", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); count = 0; if (dr == System.Windows.Forms.DialogResult.OK) { this.Close(); } } else { Correlation(); } } catch (Exception ex) { string[] exception = ex.Message.Split(' '); DialogResult dr = MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (dr == System.Windows.Forms.DialogResult.Retry) { Correlation(); } else { this.Close(); } } }