Показатель Херста. Помощь по формулЕ. - страница 2

 
Evgeniy Chumakov:


Скорее сумма отклонений.  

Как я вчера сам понял - нужно считать сумму отклонений по выборке и взять размах макс. значения суммы и минимального. 

Не суммы, а разности. Пока считается сумма, нужно параллельно найти минимальную разность (минимальный размах) и максимальную разность (максимальный размах):

double arrfX[] = {27.4, 80.3, ..., 45.5};
double fXAverage = GetAverage(arrfX);

double fMinSwing = DBL_MAX, fMaxSwing = 0.0;    // Минимальный и максимальный размахи
double fSwingSum = 0.0;                         // Накопленное отклонение ряда
for (int i = ArraySize(arrfX) - 1; i >= 0; --i)
{
   double fSwing = arrfX[i] - fXAverage;        // Тут, скорее всего, нужен fabs. Ведь речь об отклонении. Хотя в формулах не нашел точного указания на абсолютное значение
   fMinSwing = fmin(fMinSwing, fSwing);
   fMaxSwing = fmax(fMaxSwing, fSwing);
   fSwingSum += fSwing;
}
 
Ihor Herasko:

Не суммы, а разности. Пока считается сумма, нужно параллельно найти минимальную разность (минимальный размах) и максимальную разность (максимальный размах):

возьмите ценовой ряд

пока не вижу аналогии с формулами, никакой

на каждом баре делаем расчет Zu

и затем находим макс и мин Zu

затем размах

 
Ihor Herasko:

Не суммы, а разности. Пока считается сумма, нужно параллельно найти минимальную разность (минимальный размах) и максимальную разность (максимальный размах):


Что то вообще ничего не понял. Судя по коду то что я и сказал.  Считаем сумму разности значения от средней и берём максимальное и минимальное значение суммы за выборку.

 
Renat Akhtyamov:

возьмите ценовой ряд

пока не вижу аналогии с формулами, никакой

на каждом баре делаем расчет Zu

и затем находим макс и мин Zu

затем размах

Кстати, тоже вариант. Но тогда нельзя считать суммы по ряду справа налево, как в моем коде. Потребуется расчет исключительно слева направо.

 
Evgeniy Chumakov:


Что то вообще ничего не понял. Судя по коду то что я и сказал.  Считаем сумму разности значения от средней и берём максимальное и минимальное значение суммы за выборку.

У меня в коде берутся максимальные и минимальные значения разностей, а не сумм. Но, возможно, как указал выше Ренат, нужно брать максимальное и минимальное значение именно суммы. То есть вот так:

double arrfX[] = {27.4, 80.3, ..., 45.5};
double fXAverage = GetAverage(arrfX);

double fMinSwing = DBL_MAX, fMaxSwing = -DBL_MAX;    // Минимальная и максимальная сумма размахов
double fSwingSum = 0.0;                         // Накопленное отклонение ряда
int nTotal = ArraySize(arrfX);
for (int i = 0; i < nTotal; ++i)
{
   double fSwing = arrfX[i] - fXAverage;        
   fSwingSum += fSwing;
   fMinSwing = fmin(fMinSwing, fSwingSum);
   fMaxSwing = fmax(fMaxSwing, fSwingSum);
}
 

счас смотрю, чо то не то я тут написал

счас сделаю функцию

самому интересно уже

;)

   sum=0;
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+cl;
   }
   X=sum/((double)(indBars+1));
   max=0;
   min=2.0*cl;
   sum=0;
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+(cl-X);
      if(sum>max)max=sum;
      if(sum<min)min=sum;
   }
   R=max-min;
 
Ihor Herasko:

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


Раз в формуле есть знак суммы, то нужно брать разность макс / мин суммы , а не максимум и минимум отклонения от средней. Я понимаю так. 

 
Renat Akhtyamov:

счас смотрю, чо то не то я тут написал

счас сделаю функцию

самому интересно уже

;)

   sum=0;
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+cl;
   }
   X=sum/((double)(indBars+1));
   max=0;
   min=2.0*cl;
   sum=0;
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+(cl-X);
      if(sum>max)max=sum;
      if(sum<min)min=sum;
   }
   R=max-min;


Да, логика такая.

 
ПОКАЗАТЕЛЬ ХЕРСТА КАК МЕРА ФРАКТАЛЬНОЙ СТРУКТУРЫ И ДОЛГОСРОЧНОЙ ПАМЯТИ ФИНАНСОВЫХ РЫНКОВ | Опубликовать статью ВАК, elibrary (НЭБ) | Международный научно-исследовательский журнал
ПОКАЗАТЕЛЬ ХЕРСТА КАК МЕРА ФРАКТАЛЬНОЙ СТРУКТУРЫ И ДОЛГОСРОЧНОЙ ПАМЯТИ ФИНАНСОВЫХ РЫНКОВ | Опубликовать статью ВАК, elibrary (НЭБ) | Международный научно-исследовательский журнал
  • research-journal.org
В данной статье обосновывается практическая значимость Гипотезы фрактального рынка на основе расчета показателя Херста. Основная цель данной статьи заключается в анализе методов прогнозирования будущих цен финансовых активов, основываясь на концепции фрактальной структуры рынка и долговременной памяти рыночных цен. Ключевые слова...
 

double cl,cl0,X,R,S,H,sum,sum2,max,min;
   sum=0;
   indBars=Bars-1;
   cl0=iClose(Symbol(),Period(),indBars);
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+(cl-cl0)/Point();
   }
   X=sum/((double)(indBars+1));
   max=0;
   min=2000000000000;
   sum2=sum=0;
   for(i=indBars; i>=0; i--)
   {
      cl=iClose(Symbol(),Period(),i);
      sum=sum+(cl-cl0)/Point()-X;
      sum2=sum2+((cl-cl0)/Point()-X)*((cl-cl0)/Point()-X);
      if(sum>max)max=sum;
      if(sum<min)min=sum;
   }
   S=sum2/((double)(indBars+1));
   R=max-min;
   H=MathLog(R/S)/MathLog(1.57*(double)(indBars+1));
   Print("H=",H);

2021.08.20 14:09:53.433   EURUSD,M1: H=0.4461942200231319

если 0 ≤ H < 0,5 – цены являются фракталами, подтверждается справедливость FMH, имеют место «тяжелые хвосты» в распределении переменных, антиперсистентные серии, т.е. отрицательная корреляция в изменении цен, розовый шум с частыми изменениями направления движения цен;

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