Расчет корреляции валютных пар (формула) - страница 2

 
Andrey916:

Про "халяву" - обидно. Базар фильтруйте. Я все всегда делаю сам, а вот информацию для работы надо находить. Я, к сожалению, не математик и формул придумать не могу, а посылать искать иголку в стоге сена каждый "умный" человек может, если не знает конкретного ответа. Я задал вполне конкретный вопрос и уверен, что здесь достаточно адекватных людей способных дать конкретный ответ.

Спасибо! 


В ж говорите, что формулу нашли, но не можете в нее воткнуть, так и напишите ее здесь.
 
Andrey916:

Про "халяву" - обидно. Базар фильтруйте. Я все всегда делаю сам, а вот информацию для работы надо находить. Я, к сожалению, не математик и формул придумать не могу, а посылать искать иголку в стоге сена каждый "умный" человек может, если не знает конкретного ответа. Я задал вполне конкретный вопрос и уверен, что здесь достаточно адекватных людей способных дать конкретный ответ.

Спасибо! 


согласен, базар разводить не надо.

 

Методов корреляции много. Вот моя реализация Спирмена:

//+------------------------------------------------------------------+
//| Ранжирование массива по Cпирмену                                 |
//+------------------------------------------------------------------+
 
void SpearmenRange(double x[], double &xp[])
{
   int xpi;
   int arraySize = ArraySize(x);
   double xlevelmin = -1000000.0;
   for (int pass = 0; pass < arraySize; pass++)
   {
      int ixmin = -1;
      double xmin = -1000000.0;
      for (int ix = 0; ix < arraySize; ix++)
      {
         if (x[ix] <= xlevelmin)
         {
            continue;
         }
      
         if (ixmin == -1)
         {
            ixmin = ix;
            xmin = x[ix];
         }
         else
         {
            if (x[ix] < xmin)
            {
               ixmin = ix;
               xmin = x[ix];
            }
         }
      }
      
      xpi++;
      xp[ixmin] = xpi;
      xlevelmin = xmin;
   }
}
 
//+------------------------------------------------------------------+
//| Корреляция массивов по Cпирмену                                  |
//+------------------------------------------------------------------+
 
double SpearmenCorrelation(double xp[], double yp[])
{
   int arraySize = ArraySize(xp);
   double k = 0.0;
   for (int indexBar = 0; indexBar < arraySize; indexBar++)
   {
      k += (xp[indexBar] - yp[indexBar]) * (xp[indexBar] - yp[indexBar]);
   }
   
   k = (1.0 - ((6.0 * k) / ((arraySize * arraySize * arraySize) - arraySize))) * 100.0;
   return (k);
}
Массив цен сначала ранжируется (первая функция), и ранжированные массивы сравниваются (вторая функция). Результат: 1 - полное совпадение, -1 полное несовпадение. Масштабы графиков цен не имеют значения.
 

Размещаю индикатор, который рассчитывает корреляцию двух валютных пар.

На индикаторе отображаются три линии: Max и Min корреляции за указанный период, а также текущая корреляция.

Файлы:
 

А это формула с примером для рассчета корреляции. Правда она для химических веществ, но суть таже. Можно использовать для рассчета корреляции валютных пар.

Причина обращения: