Нетривиальная задача по Пирсону

 
Категорически всех приветствую! Заинтересовался темой корреляции, дошел до Индикатора по Пирсону, в статье на этом сайте. Есть пару идей, но как реализовать не знаю. В индикаторе есть показатель Range. Как я понял это , грубо говоря, 1,2,3,4...20. По свечам от текущей. Как сделать, чтобы я мог менять набор цифр. например, я хочу сравнивать с 8,7,6,5,4...
Файлы:
 
Вспомнил про Клуб Телепатов
Клуб Телепатов
Клуб Телепатов
  • 2011.05.08
  • www.mql5.com
Клуб телепатов Вас послали сюда? Тогда давайте знакомиться! Как же такое могло случиться со мной...
 
Практическое применение корреляций в торговле
Практическое применение корреляций в торговле
  • www.mql5.com
В данной статье рассказывается о понятии корреляции величин, а также рассматривается методы расчета коэффициентов корреляции и их практическое применение в торговле. Корреляция — это статистическая взаимосвязь двух или нескольких случайных величин (либо величин, которые можно с некоторой допустимой степенью точности считать таковыми). При этом изменения значений одной или нескольких из этих величин сопутствуют систематическому изменению значений другой или других величин.
 

А теперь в качестве примера рассчитаем коэффициент корреляции Пирсона для данных, представленных на рис.1, чтобы уже количественно измерить зависимость цен закрытия с течением времени. Для этого занесем данные в таблицу:

Цена закрытия Номер свечи
1,23406 1
1,22856 2
1,22224 3
1,22285 4
1,21721 5
1,21891 6
1,21773 7
1,21500 8
1,21546 9
1,20995 10
Вот здесь номера свечей по порядку. Я хочу использовать другую последовательность
 
megaman324 #:

А теперь в качестве примера рассчитаем коэффициент корреляции Пирсона для данных, представленных на рис.1, чтобы уже количественно измерить зависимость цен закрытия с течением времени. Для этого занесем данные в таблицу:

Цена закрытия Номер свечи
1,23406 1
1,22856 2
1,22224 3
1,22285 4
1,21721 5
1,21891 6
1,21773 7
1,21500 8
1,21546 9
1,20995 10
Вот здесь номера свечей по порядку. Я хочу использовать другую последовательность
Не только я такого мнения: корреляция на Форексе не работает 
 
Vladislav Vidiukov #:
Не только я такого мнения: корреляция на Форексе не работает 
Все работает, на кросс-курсах особенно
 
megaman324:
Категорически всех приветствую! Заинтересовался темой корреляции, дошел до Индикатора по Пирсону, в статье на этом сайте. Есть пару идей, но как реализовать не знаю. В индикаторе есть показатель Range. Как я понял это , грубо говоря, 1,2,3,4...20. По свечам от текущей. Как сделать, чтобы я мог менять набор цифр. например, я хочу сравнивать с 8,7,6,5,4...

указывать ручками номера свечей, либо интервалом, допустим 10 свечей, через интервал 2 свечи (1-3-5-7-9-11-13-15-17-19)


в индикаторе rangeN - это количество свечей для расчета
а вот в цикле расчета цены можно указать необходимый интервал для выборки этих 10 свечей, либо нужные номера этих 10 свечей
либо через промежуточную функцию из массива выбирать нужные индексы

 
megaman324 #:
Все работает, на кросс-курсах особенно

Если работает, то можно и отслюнявить немного ;)

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2023.09.24
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5
 
Victor Golovkov #:

указывать ручками номера свечей, либо интервалом, допустим 10 свечей, через интервал 2 свечи (1-3-5-7-9-11-13-15-17-19)


в индикаторе rangeN - это количество свечей для расчета
а вот в цикле расчета цены можно указать необходимый интервал для выборки этих 10 свечей, либо нужные номера этих 10 свечей
либо через промежуточную функцию из массива выбирать нужные индексы

Вот в точку! Последовательность. А как ее сделать в этом индикаторе?
 
megaman324 #:
Вот в точку! Последовательность. А как ее сделать в этом индикаторе?

если интервальные значения, то в условие добавить значение интервала, например так:

input int interval=2; //

- - - -
и в цикл выборки цен вставить этот интервал:

   for(int i=0; i<=limit; i++)

     {

      for(int x=0, k=0; k<interval*rangeN; k=k+interval, x++)//вот сюда добавили интервал

      PriceInt[x]=price[k+i];

      ExtLineBuffer[i]=PearsonCalc(PriceInt,rangeN);

     }

таким образом для каждого индекса i будут браться значения в количестве  rangeN  через каждые interval свечей
- - -


интервал можно задать и формулой, можно рандомно с конкретными индексами, но выборка происходит всё равно в цикле "к"

(код подправил)

 
Victor Golovkov #:

если интервальные значения, то в условие добавить значение интервала, например так:

input int interval=2; //

- - - -
и в цикл выборки цен вставить этот интервал:

   for(int i=0; i<=limit; i++)

     {

      for(int k=0; k<interval*rangeN; k=k+interval) //вот сюда добавили интервал

         PriceInt[k]=price[k+i];

      ExtLineBuffer[i]=PearsonCalc(PriceInt,rangeN);

     }

таким образом для каждого индекса i будут браться значения в количестве  rangeN  через каждые interval свечей
- - -


интервал можно задать и формулой, можно рандомно с конкретными индексами, но выборка происходит всё равно в цикле "к"

Очень круто! А как мне сделать такую последовательность? В ней нет интервала. 1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1