Ejemplo n.º 1
0
 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;
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }