Скачать MetaTrader 5

Экспоненциальный мувинг. Хочется ясности.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Владимир Тезис
4266
Владимир Тезис  

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

1. Из справки терминала:

Формула не даёт ясности, так как отсутствует формула вычисления загадочной переменной Р (долей использования значений цен), как и не разъяснено что такое эта самая доля.

2. Из кода пользовательского (метаквотесовского) индикатора МА:

Этот код сбивает с толку. В справке терминала в формуле ЕМА стоит " 100 - P ", тогда как в индикаторе метаквотесов употребляется подчёркнутое красным (1-pr). Непонятно почему вычитается из еденицы, а не из стоки.

Путешествия по интернету результатов не дали - в одних формулах вычитание ведётся из сотки, как и в справке терминала, в других - из единицы. И к тому же не удаётся найти вразумительное объяснения, как вычислить загадочную переменную Р и почему именно так, а не иначе.

Возникает естественный вопрос, так как же всё-таки в коде правильно усреднить при помощи ЕМА набор значений из индикаторного буффера, или вообще, любой другой набор значений произвольного одномерного массива?

P.S.

Вариант присоединения скользящей к индикатору с указанием параметра "First Indicator's Data" не подходит, ибо его впоследствии не запросишь через iCustom(). Или может я просто не знаю как это сделать?

Vladimir Gomonov
8307
Vladimir Gomonov  

Афтар. Хочешь ясности - разберись сам. У тебя код перед глазами.

В хелпе формулы неформальные. 100 означает 100%, что равно в точности 1.0

Олег avtomat
5671
Олег avtomat  
Sceptic Philozoff
Модератор
17842
Sceptic Philozoff  

Загадочная переменная P (или pr в коде - который все правильно считает) соответствует параметру затухания ЕМА, при котором она примерно соответствует МА с периодом MA_period. Соответствующие рассуждения можно найти у Эйлерса в одной из его статей - но я сейчас это не смогу найти.

А вообще экспоненциальная средняя на нулевом баре считается так:

EMA[0] = pr * Sum( Close[i]*(1-pr)^i; i = 0..infinity )

Потому и зовется экспоненциальной. Обрати внимание, что сумма всех коэффициентов равна ровно 1, как и положено.

Но при вычислениях удобнее пользоваться рекуррентной формулой, как в коде. И именно из формулы выше и вытекает эта рекуррентная формула.

Rustamzhan Salidzhanov
7803
Rustamzhan Salidzhanov  

Вариант присоединения скользящей к индикатору с указанием параметра "First Indicator's Data" не подходит, ибо его впоследствии не запросишь через iCustom(). Или может я просто не знаю как это сделать?

https://docs.mql4.com/ru/indicators/iMAOnArray

Владимир Тезис
4266
Владимир Тезис  

Ай спасибки! :) Ни когда не приходилось пользоваться этой функцией языка, поэтому и из внимания вылетела.

Mathemat:

Загадочная переменная P (или pr в коде - который все правильно считает) соответствует параметру затухания ЕМА, при котором она примерно соответствует МА с периодом MA_period. Соответствующие рассуждения можно найти у Эйлерса в одной из его статей - но я сейчас это не смогу найти.

А вообще экспоненциальная средняя на нулевом баре считается так:

EMA[0] = pr * Sum( Close[i]*(1-pr)^i; i = 0..infinity )

Потому и зовется экспоненциальной. Обрати внимание, что сумма всех коэффициентов равна ровно 1, как и положено.

Но при вычислениях удобнее пользоваться рекуррентной формулой, как в коде. И именно из формулы выше и вытекает эта рекуррентная формула.

Сумма всех коэффициентов равна 1. Ладно, пусть так. Но как найти величину коэффициента для текущей итерации цикла?


MetaDriver:

Афтар. Хочешь ясности - разберись сам. У тебя код перед глазами.

В хелпе формулы неформальные. 100 означает 100%, что равно в точности 1.0


Спасибо. Это объясняет использование то сотки, то единицы. А по поводу "разберись сам - у тя код перед глазами" - не выходит. Код не даёт ясности в понимании алгоритма и обоснования причин почему всё именно так, а не иначе.

avtomat:

Опять же нет чёткой формулы вычисления переменной "а"
Олег avtomat
5671
Олег avtomat  

а -- это параметр

поэкспериментируй с различными значениями -- прояснится.

Sceptic Philozoff
Модератор
17842
Sceptic Philozoff  
drknn: Но как найти величину коэффициента для текущей итерации цикла?
Какого коэффициента? pr?
Владимир Тезис
4266
Владимир Тезис  
Ага, pr. В коде стоит "два, умножить на увеличенный на единицу период усреднения". Не понял откуда взялась эта формула, почему именно на два умножается, почему период усреднения увеличен на единицу?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий