подскажите как сделать лучше

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

Лучше не отматывать, а то слишком далеко придется отматывать. Можно сделать в индикаторе так, чтобы досчитывать только нулевой бар.

Для каждого бара вычисляем отклонение, если оно больше чем зафиксированное, то фиксируем новое. На баре пересечения цены и МА, если зафиксированное отклонение больше дельты, складируем его в отдельный буфер, обнуляем  максимальное отклонение, чтобы новое отслеживать. 

Для складирования максимальных отклонений используем  два буфера, в одном значения, в другом количество (типа указателя на последний занятый элемент).

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

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

Думаю вряд ли написанное будет понятно, но тем не менее сделать возможно и написано как.

 

Дмитрий, добрый день.

в советнике этого не сделать ?

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

думал еще лучше разделить на отклонения вверх и вниз

 

При большом желании можно сделать что угодно и как угодно, но будет или ненадежно или тормознуто. Не предназначены советники для таких расчетов. Нет в советниках индикаторных буферов, и нет контроля обновления данных типа функции IndicatorCounted().

 

мне конечно индикатор такой не написать самому,

вы можете сделать, если вам не сложно и время есть ?

 
Stells:

мне конечно индикатор такой не написать самому,

вы можете сделать, если вам не сложно и время есть ?

Конечно сделает, но не бесплатно.)
 
Бесплатно что ли сделать... :) Сейчас попробую.
 
Integer:
Бесплатно что ли сделать... :) Сейчас попробую.
было бы здорово
 

Уфф....

Здесь. При желании можно сократить количество буферов, но тогда код будет непонятней. Еще можно расчет средних ускороить, но и так очень приемлемо.

Файлы:
iaverdiv.mq4  10 kb
 
Среднее отклонение вверх сверху (со знаком +), среднее отклонение вниз снизу (со знаком - ), средне в обе стороны сверху (со знаком +).
 

))

дело мастера боится !!!

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