Нюансы принципа работы SimpleMAOnBuffer. Возвращает inf.

 

Здравствуйте, уважаемые форумчане.

Экспериментирую с MQL5. На текущий момент взял стандартный индикатор MACD и задумал прикрутить к нему выбор типа скользящих средних для гистограммы, +выбор типа скользящей сигнальной средней.

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

Однако при попытке разнообразить количество доступных "машек" для гистограммы столкнулся с проблемой.

Если в индикаторе выбрать что-то отличное от EMA, то SimpleMaOnBuffer (весь код стандартный, без изменений), начинает заполнять целевой массив inf-ами.

Как следствие, график приобретает вид, как на первой картинке (сверху стандартный MACD, для сверки, снизу - мое поделие).

Если вернуть EMA (к которой можно применять 4 стандартных типа сглаживания) - все восстанавливается должным образом.

Подскажите, это я что-то не то делаю, или SMOB - в принципе не предназначена для работы со средними, отличными от экспоненциальной?

Исходник MACD тоже вложил.

Заранее спасибо.

Весь интернет перерыл - все без толку.

Файлы:
MultiMACD.mq5  26 kb
MACD1.png  5 kb
MACD2.png  4 kb
 
AltAndGen:

Здравствуйте, уважаемые форумчане.

Экспериментирую с MQL5. На текущий момент взял стандартный индикатор MACD и задумал прикрутить к нему выбор типа скользящих средних для гистограммы, +выбор типа скользящей сигнальной средней.

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

Однако при попытке разнообразить количество доступных "машек" для гистограммы столкнулся с проблемой.

Если в индикаторе выбрать что-то отличное от EMA, то SimpleMaOnBuffer (весь код стандартный, без изменений), начинает заполнять целевой массив inf-ами.

Как следствие, график приобретает вид, как на первой картинке (сверху стандартный MACD, для сверки, снизу - мое поделие).

Если вернуть EMA (к которой можно применять 4 стандартных типа сглаживания) - все восстанавливается должным образом.

Подскажите, это я что-то не то делаю, или SMOB - в принципе не предназначена для работы со средними, отличными от экспоненциальной?

Исходник MACD тоже вложил.

Заранее спасибо.

Весь интернет перерыл - все без толку.

Посмотрите алгоритмы расчётов разных скользящих средних. Только EMA считает от начала данных. Остальные считают от начала плюс период усреднения.

MACD - от начала плюс два периода усреднения (короткий и длинный)