Расчёт PPZ - помогите доработать

 

Всем привет. 

Написал индикатор для автоматического расчёта PPZ по трём фракталам.  Основная идея: берём окно в N баров и определяем уровни, на которых 3 фрактала расположены на наименьшем расстоянии. Индикатор строит сразу 4 таких уровня. Проблема в быстродействии. В индикаторе используется тупой перебор, просто ничего не приходит в голову. Сейчас, когда окно баров 100-300, это в принципе не проблема. Но вот я задумал добавить 4-й фрактал и понял, что надо менять алгоритм расчёта.  У кого какие мысли? Имхо, инструмент уже сейчас строит интересные уровни. Прилагаю код, и картинку с пояснениями.


Файлы:
 

Доработал индикатор, теперь уровни ищутся по 4-м фракталам.

На 150 барах расчёт идёт до 30 секунд, не пугайтесь. Категорически не рекомендуется ставить больше 200 баров.

При этом уровни получаются намного более сильными и правильными. Похоже, эта штука реально работает!.


Файлы:
 

Евробакс на днях:


 

Отличный индикатор.

Только у меня ошибка вылезает :

2010.02.22 15:46:17 Dsergf-wPA_v2.0 EURUSD,M15: invalid integer number as parameter 1 for SetIndexEmptyValue function


PS

Было бы очень хорошо задавать таймфрейм, с которого строить уровни.

 

Перезалил индикаторы.

Странно, что у меня работал, ошибка конечно была

 

Евробакс М15

No comments.


 

Нет вроде работает, просто сообщение об ошибке немного смущает.

 

Ошибку я исправил.

Таймфрейм задать не проблема - завтра сделаю, сейчас времени нет.

Плохо то, что так медленно, хочется окно задать пошире, но тут надо алгоритм серьёзно оптимизировать, а я пока не придумал, как. :-(

 
Оптимизировал алгоритм, смело можно ставить баров 300
Файлы:
 

По моему в коде маленькая ошибка :



if (k!=j && k!=j && MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars) {


надо одну j исправить на i


 

Ага, ошибка. На результат не влияет, но исправить надо.

Перезалил индикатор версии 2.3

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