Advertisement
Guest User

Untitled

a guest
May 30th, 2015
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.56 KB | None | 0 0
  1.      private static double MeanValue(string[] arr, int x, int y) //расчет среднего значения
  2.         {
  3.             double sum = 0;
  4.             for (int i = x; i < y; i++)
  5.             {
  6.                 sum = sum + Math.Abs(Convert.ToDouble(arr[i]));
  7.             }
  8.             return sum / (y - x);
  9.         }
  10.  
  11.         private static double MeanValue(double[] arr, int x, int y) //расчет среднего значения
  12.         {
  13.             double sum = 0;
  14.             for (int i = x; i < y; i++)
  15.             {
  16.                 if (i >= arr.Length)
  17.                 {
  18.                     break;
  19.                 }
  20.                 sum = sum + arr[i];
  21.             }
  22.             return sum / (y - x);
  23.         }
  24.         private double Sk(double[] arr, int x, int y) //расчет среднего квадратичного
  25.         {
  26.             double sum = 0;
  27.             for (int i = x; i < y; i++)
  28.             {
  29.                 sum = sum + Math.Pow(arr[i], 2);
  30.             }
  31.             return sum / (y - x);
  32.         }
  33.         private double Sko(double[] arr, int x, int y) //расчет СКО
  34.         {
  35.             double sum = 0;
  36.             for (int i = x; i < y; i++)
  37.             {
  38.                 sum = sum + Math.Pow(arr[i], 2);
  39.             }
  40.             return Math.Sqrt(sum / (y - x));
  41.         }
  42.         private double SD(double[] arr, int x, int y) //расчет стандартного отклонения
  43.         {
  44.             double mid = 0;
  45.             double result = 0;
  46.             for (int i = x; i < y; i++)
  47.             {
  48.                 mid = mid + arr[i];
  49.             }
  50.             mid = mid / (y - x);
  51.             for (int i = x; i < y; i++)
  52.             {
  53.                 result = result + Math.Pow(arr[i] - mid, 2);
  54.             }
  55.             return Math.Sqrt(result / (y - x));
  56.         }
  57.         private double Dispersion(double[] arr, int x, int y) //расчет дисперсии
  58.         {
  59.             double result;
  60.             result = Math.Round(SD(arr, x, y), 4);
  61.             return result * result;
  62.         }
  63.  
  64.         private void DrawSingleGraph(GraphPane pane, string str_name_1, int index, int option)// index - номер обрабатываемого текстового поля (1 или 2). отображаем значения. option = 1 - по закрытию, option = 3 - по суточному колебанию, option = 5 - по объему
  65.         {
  66.             pane.CurveList.Clear();
  67.             PointPairList list1 = new PointPairList();
  68.            
  69.             int flag = -1;
  70.  
  71.             double[] arr1 = new double[5];
  72.             double[] xvalues = new double[5];//массив для преобразования даты в double
  73.             int[] tempX = new int[5];//массив для заполнения структуры XDate
  74.             XDate[] dates = new XDate[5];//даты для оси Х
  75.  
  76.             flag = url_list.IndexOf(str_name_1);
  77.             if (str_name_1 == "EPU")
  78.             {
  79.                 flag = -2;
  80.                 arr1 = new double[EPUArr_Value.Length];
  81.                 for (int i = 0; i < arr1.Length; i++)
  82.                 {
  83.                     arr1[i] = Convert.ToDouble(EPUArr_Value[i]);//получаем нужную статистику акций
  84.  
  85.                     //xvalues[i] = tempX;
  86.                 }
  87.             }
  88.  
  89.             if (flag != -1) //обработчик для EPU
  90.             {
  91.                 xvalues = new double[EPUArr_Value.Length];
  92.                 dates = new XDate[EPUArr_Value.Length];
  93.                 for (int i = 0; i < EPUArr_Value.Length; i++)
  94.                 {
  95.                     string[] temparr = EPUArr_Date[i].Split('.');
  96.                     tempX = new int[temparr.Length];
  97.                     for (int j = 0; j < temparr.Length; j++)
  98.                     {
  99.                         tempX[j] = Convert.ToInt32(temparr[j]);
  100.                     }
  101.                     dates[i] = new XDate(tempX[2], tempX[1], tempX[0]);
  102.                     xvalues[i] = dates[i];
  103.                 }
  104.  
  105.                 if (flag != -2) //обработчик для эмитентов
  106.                 {
  107.  
  108.                     if (option == 3)
  109.                     {
  110.                         arr1 = MakeDayRangeArray(arr1, option, flag);
  111.                     }
  112.                     else
  113.                     {
  114.                         arr1 = new double[DataArray[flag].Length / n_stat];
  115.                         for (int i = 0; i < arr1.Length; i++)
  116.                         {
  117.                             arr1[i] = Convert.ToDouble(DataArray[flag][i, option]);//получаем нужную статистику акций
  118.                         }
  119.                     }
  120.                 }
  121.                 if (index == 1) //расчет основных статистик
  122.                 {
  123.                     stat1.Text = Convert.ToString(Math.Round(MeanValue(arr1, 0, arr1.Length), 4));
  124.                     stat2.Text = Convert.ToString(Math.Round(Sk(arr1, 0, arr1.Length), 4));
  125.                     stat3.Text = Convert.ToString(Math.Round(Sko(arr1, 0, arr1.Length), 4));
  126.                     stat4.Text = Convert.ToString(Math.Round(SD(arr1, 0, arr1.Length), 4));
  127.                     stat5.Text = Convert.ToString(Math.Round(Dispersion(arr1, 0, arr1.Length), 4));
  128.                     lCorr1.Text = Convert.ToString(Math.Round(LinCorr(arr1, EPUArr_Value, 0, EPUArr_Value.Length), 4));
  129.                 }
  130.                 else
  131.                 {
  132.                     stat6.Text = Convert.ToString(Math.Round(MeanValue(arr1, 0, arr1.Length), 4));
  133.                     stat7.Text = Convert.ToString(Math.Round(Sk(arr1, 0, arr1.Length), 4));
  134.                     stat8.Text = Convert.ToString(Math.Round(Sko(arr1, 0, arr1.Length), 4));
  135.                     stat9.Text = Convert.ToString(Math.Round(SD(arr1, 0, arr1.Length), 4));
  136.                     stat10.Text = Convert.ToString(Math.Round(Dispersion(arr1, 0, arr1.Length), 4));
  137.                     lCorr2.Text = Convert.ToString(Math.Round(LinCorr(arr1, EPUArr_Value, 0, EPUArr_Value.Length), 4));
  138.                 }
  139.  
  140.                 for (int l = 0; l < arr1.Length; l++)
  141.                     list1.Add(l, arr1[l]);
  142.                 pane.YAxisList.Clear();
  143.                 int axis1 = pane.AddYAxis(str_name_1);
  144.  
  145.                 LineItem myCurve1 = pane.AddCurve(str_name_1, xvalues, arr1, Color.Blue, SymbolType.None);
  146.                 pane.XAxis.Type = AxisType.Date;
  147.                 pane.XAxis.Scale.Format = "dd.MM.yyyy";
  148.  
  149.                 myCurve1.YAxisIndex = axis1;
  150.             }
  151.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement