public void FillTable(double[,] finalArray) { double[] average = CalculationClass.AverageProfitability(finalArray); for (int i = 0; i < selectedAssets.Length; i++) { for (int j = 0; j < i + 1; j++) { double result = Math.Round(CalculationClass.Cor(finalArray, average, i, j), 4); dataGridView[j + 1, i].Value = result; if (result == 1) { dataGridView[j + 1, i].Style.BackColor = Color.IndianRed; } else { if (result < 0) { dataGridView[j + 1, i].Style.BackColor = Color.LightGreen; } else { dataGridView[j + 1, i].Style.BackColor = Color.Coral; } } } } }
private void CorrelationPortfolio(Asset[] allAssets, int count, int period) { ParallelOptions parOpts = new ParallelOptions(); parOpts.CancellationToken = cancelToken.Token; try { parOpts.CancellationToken.ThrowIfCancellationRequested(); double[,] finalArray = ClassAssistant.ReadDataForCorrelation(allAssets, Program.path + "\\data.txt", period); //ClassAssistant.ReadData(allAssets, path); parOpts.CancellationToken.ThrowIfCancellationRequested(); double[] average = CalculationClass.AverageProfitability(finalArray); parOpts.CancellationToken.ThrowIfCancellationRequested(); for (int i = count; i < allAssets.Length; i++) { double sum = 0; for (int j = 0; j < count; j++) { sum += CalculationClass.Cor(finalArray, average, i, j); } allAssets[i].Correlation = Math.Round(sum / count, 2); parOpts.CancellationToken.ThrowIfCancellationRequested(); } } catch (IOException ex) { string[] exception = ex.Message.Split(' '); // DialogResult dr = MessageBox.Show("Ошибка при считывании файла " + exception[exception.Length - 1] + ". Замените этот актив или попробуйте еще раз.\nПовторить попытку?", // "Ошибка!", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); // MessageBox.Show(ex.Message); counter++; if (counter == 3) { MessageBox.Show("Ошибка при расчете корреляции!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); counter = 0; } else { CorrelationPortfolio(allAssets, count, period); } } catch (OperationCanceledException ex) { throw ex; } 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) { CorrelationPortfolio(allAssets, count, period); } } }