Обсуждение статьи "Оценка индекса фрактальности, показателя Херста и возможность предсказания финансовых временных рядов" - страница 4

 

Добрый день.

Запустил индикатор, таймфрейм 1 час, символ EURUSD, котировки метаквотов, настройки дефолтные.

Через несколько секунд работы, выдаёт ошибку  array out of range in 'CFractalSeriesSet.mqh' (108,17)

Стр.108 у меня эта

MuIndexes[ii] = IndexCalculater.Mu;

Сделал распринтовку. 

16:01:59.441    Fractal Index (EURUSD,H1)       ii = 539
16:01:59.441    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
16:01:59.441    Fractal Index (EURUSD,H1)       ii = 538
16:01:59.441    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
16:01:59.441    Fractal Index (EURUSD,H1)       ii = 537
16:01:59.441    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
16:02:10.682    Fractal Index (EURUSD,H1)       ii = 1610
16:02:10.682    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
16:02:10.685    Fractal Index (EURUSD,H1)       array out of range in 'CFractalSeriesSet.mqh' (108,17)

Не могу понять почему происходит выход за пределы массива. Размер массива 1074, индекс 1610, где выход за пределы?

И как то странно то, что индексы идут по убывающей,и не дойдя до нуля становится 1610, до этого было всё логично.

15:49:38.445    Fractal Index (EURUSD,H1)       ii = 1
15:49:38.445    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
15:49:38.445    Fractal Index (EURUSD,H1)       ii = 0
15:49:38.445    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
15:49:47.403    Fractal Index (EURUSD,H1)       ii = 1073
15:49:47.403    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074
15:49:47.403    Fractal Index (EURUSD,H1)       ii = 1072
15:49:47.403    Fractal Index (EURUSD,H1)       MuIndexes.Size() = 1074

Можете подсказать в чём может крыться причина этого?

Как исправить?

 
Aleksandr Slavskii #:

Не могу понять почему происходит выход за пределы массива. Размер массива 1074, индекс 1610, где выход за пределы?

Вы же сами ответили

 
Rashid Umarov #:

Вы же сами ответили

Упс. Теперь вижу)

Почему то цифру 1610, мозг воспринимал как 1061 и я такой в непонятках, где выход за пределы.

 

Не уверен, что это правильно (уверен, что не правильно), но добавил в код строку.

В файле CFractalSeriesSet.mqh перед строкой 

ii = (CircleCount - 1 - i) + IndexCount; // СВЕЖИЕ ОЦЕНКИ ХРАНЯТСЯ В КОНЦЕ МАССИВОВ

написал

IndexCount = IndexCount >= (int)MuIndexes.Size() ? 0 : IndexCount;

Теперь за пределы массива не уходит. Но хз как это отразится на вычислениях индикатора.