MQL4 - automated forex trading   /  

Code Base

Code Base  Индикаторы  Коэффициент ранговой корреляции Спирмена - Spearman's Rank Correlation Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот скрипт для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
Коэффициент ранговой корреляции Спирмена - Spearman's Rank Correlation [ en ]
Автор: Rosh (16.02.2007 18:15)
Скачано: 5720
Скачать:
 SpearmanRankCorr.mq4 (4.8 Kb) View
Коэффициент ранговой корреляции Спирмена - это непараметрический метод, который используется с целью статистического изучения связи между явлениями. В этом случае определяется фактическая степень параллелизма между двумя количественными рядами чисел.

Практический расчет коэффициента ранговой корреляции Спирмена включает следующие этапы:

1) Сопоставать каждому из признаков их порядковый номер (ранг) по возрастанию (или убыванию);
2) Определить разности рангов каждой пары сопоставляемых значений;
3) Возвести в квадрат каждую разность и суммировать полученные результаты;
4) Вычислить коэффициент корреляции рангов по формуле:

где - сумма квадратов разностей рангов, а - число парных наблюдений.

При использовании коэффициента ранговой корреляции условно оценивают тесноту связи между признаками, считая значения коэффициента равные 0,3 и менее, показателями слабой тесноты связи; значения более 0,4, но менее 0,7 - показателями умеренной тесноты связи, а значения 0,7 и более - показателями высокой тесноты связи.

Мощность коэффициента ранговой корреляции Спирмена несколько уступает мощности параметрического коэффициента корреляции.


Коэффицент ранговой корреляции целесообразно применять при наличии небольшого количества наблюдений. Данный метод может быть использован не только для количественно выраженных данных, но также и в случаях, когда регистрируемые значения определяются описательными признаками различной интенсивности. Описание взято здесь.

Коэффициент ранговой корреляции Спирмена - Spearman's Rank Correlation


Данный индикатор является одним из вариантов осцилляторов, но по сравнению со стохастиком, является более гладким, не имея при этом запаздывания в точках разворота.


Единственный внешний параметр, который влияет на алгоритм расчета, это - rangeN, он задает количество баров, для которых мы ищем закономерность. Если rangeN = 14, то мы берем последовательность цен закрытия Close[i], Close[i+1], ... Close[i+rangeN-1] и строим для них последовательность рангов, то есть на каком месте находится каждая цена закрытия, если отсортировать эту последовательность. В данном случае получается, что сравнивается один реальный график с неким монотонно возрастающим.

Параметр direction означает сортировку по убыванию (true) или возрастанию (false). Значение параметра true дает более привычную картинку, false дает зеркальное изображение. Параметр CalculatedBars введен для ограничения количества баров, для которых производится расчет, для экономии ресурсов процессора (но правда не понадобилось), значение равное нулю означает расчет по всей доступной истории. Параметром Maxrange = 30 задается максимальный период расчета, тоже был введен в целях экономии ресурсов, может кому-то и понадобится.

13 комментариев: 1 2   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий

Кто-нибудь разукрасьте его! Имею ввиду вверх зеленый, вниз красный, одинаковое значение желтый, все по сравнению с предыдущим. Что писал я:

if(ExtMapBuffer1[i]>ExtMapBuffer1[i+1])
   ExtMapBuffer_U[i]=ExtMapBuffer1[i];
if(ExtMapBuffer1[i]<ExtMapBuffer1[i+1])
   ExtMapBuffer_D[i]=ExtMapBuffer1[i];
if(ExtMapBuffer1[i]==ExtMapBuffer1[i+1])
   ExtMapBuffer_N[i]=ExtMapBuffer1[i];

У меня не получается... Не знаю что не так, но линия получается прерывистая....

Честное слово. Меня иногда удивляет код.... и что в ним может быть не так...
PS у индикатора количество буфферов изменил, цвета прописал, массивы объявил. Рисует, но прерывисто, в окне данных распределение по массивам идет правильное, но вот не отображается правильно хоть ты тресни... 

08.07.2009 01:54 KING

По ссылке (Описание взято здесь.) В примерах Результат: r=0.62, p<0,05 помимо r выводиться еще  и p. Кто знает что это и как расчитывается ?. Спасибо.

25.05.2008 15:22 Prival
Класс! Однако хочу сказать вот что: попробуйте поставить рядом стохастик (5,ХХ,7). Сам такими параметрами пользуюсь уже больше 2 лет. Получится картинка с названием "найди 10 отличий"

Нив коем случае не ругаю, просто у меня 1 терминал для тестирования всего подряд. И когда установил Спирмена - возникло дежавю :).

Rosh - молодец!
22.02.2007 09:18 mincha
Респект
18.02.2007 02:23 GeorgeU
Рош - респект.
18.02.2007 02:22 GeorgeU
Была такая попытка , не так уж и давно - http://forum.alpari-idc.ru/thread19405-13.html ; :)
17.02.2007 21:19 Rosh

Ув. Rosh , я нигде не встречал индикатора построенного на касательной к функции, если в каждой точке этого индикатора провести касательную - она отлично будет показывать будущее направление движения цены. А угол наклона касательной - отличный показатель для входа в рынок.

17.02.2007 16:48 FION
Интересные дела , просто скопировал представление индикатора из вашего советника и мой советник заработал. СТРАННО ЭТО.Спасибо, Rosh.
17.02.2007 15:43 FION
С параметром CalculatedBars=100 тоже работает:

15:21:43 2007.01.26 22:00 SpearmanRankCorr EURUSD,H1: removed
15:23:07 CheckSpearman inputs: rangeN=14; CalculatedBars=100; Maxrange=30;
15:23:07 2006.12.29 00:00 SpearmanRankCorr EURUSD,H1: loaded successfully
15:23:07 2006.12.29 00:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.0165
15:23:07 2006.12.29 01:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.278
15:23:07 2006.12.29 02:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.6484
15:23:07 2006.12.29 03:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7363
15:23:07 2006.12.29 04:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.578
15:23:07 2006.12.29 05:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.3418
15:23:07 2006.12.29 06:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.0099
15:23:07 2006.12.29 07:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.0253
15:23:07 2006.12.29 08:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.2769
15:23:07 2006.12.29 09:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.6154
15:23:07 2006.12.29 10:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7879
15:23:07 2006.12.29 11:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.8363
15:23:07 2006.12.29 12:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.833
15:23:07 2006.12.29 13:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.8769
15:23:07 2006.12.29 14:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.8505
15:23:07 2006.12.29 15:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7967
15:23:07 2006.12.29 16:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7967
15:23:07 2006.12.29 17:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7967
15:23:07 2006.12.29 18:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7967
15:23:07 2006.12.29 19:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7923
15:23:07 2006.12.29 20:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.7912


17.02.2007 15:25 Rosh
Я сделал для проверки совтеник

//+------------------------------------------------------------------+
//|                                                CheckSpearman.mq4 |
//|                                                             Rosh |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "http://www.metaquotes.net"
 
//---- input parameters
extern int       rangeN=14;
extern int       CalculatedBars=0;
extern int       Maxrange=30;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Value;
   Value=iCustom(NULL,0,"SpearmanRankCorr",rangeN,CalculatedBars,Maxrange,0,1);
   Print("SpearmanRankCorr=",Value);
//----
   return(0);
  }
//+------------------------------------------------------------------+


Прогнална интервале с начальной датой 01 января 2005 на EURUSD H1



15:15:32 CheckSpearman inputs: rangeN=14; CalculatedBars=300; Maxrange=30;
15:15:32 2005.01.03 00:00 SpearmanRankCorr EURUSD,H1: loaded successfully
15:15:32 2005.01.03 00:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.5571
15:15:32 2005.01.03 01:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7286
15:15:32 2005.01.03 02:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7802
15:15:32 2005.01.03 03:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8505
15:15:32 2005.01.03 04:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8945
15:15:32 2005.01.03 05:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.9121
15:15:32 2005.01.03 06:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.9077
15:15:32 2005.01.03 07:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8989
15:15:32 2005.01.03 08:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8725
15:15:32 2005.01.03 09:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8066
15:15:32 2005.01.03 10:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7143
15:15:32 2005.01.03 11:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.5615
15:15:32 2005.01.03 12:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.5033
15:15:32 2005.01.03 13:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.3626
15:15:32 2005.01.03 14:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.1868
15:15:32 2005.01.03 15:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.0681
15:15:32 2005.01.03 16:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.1033
15:15:32 2005.01.03 17:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.2484
15:15:32 2005.01.03 18:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.2132
15:15:32 2005.01.03 19:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.0022
15:15:32 2005.01.03 20:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.3187
15:15:32 2005.01.03 21:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.5945
15:15:32 2005.01.03 22:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8055
15:15:32 2005.01.03 23:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.8055
15:15:32 2005.01.04 00:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7879
15:15:32 2005.01.04 01:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7396
15:15:32 2005.01.04 02:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.7396
15:15:32 2005.01.04 03:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.644
15:15:32 2005.01.04 04:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.2967
15:15:32 2005.01.04 05:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.0297
15:15:32 2005.01.04 06:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.3396
15:15:32 2005.01.04 07:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.3791
15:15:32 2005.01.04 08:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.1769
15:15:32 2005.01.04 09:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=0.1429
15:15:32 2005.01.04 10:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.0374
15:15:32 2005.01.04 11:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.1956
15:15:32 2005.01.04 12:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.3363
15:15:32 2005.01.04 13:00 CheckSpearman EURUSD,H1: SpearmanRankCorr=-0.5121


17.02.2007 15:20 Rosh