Помогите с формулой MA

 

Здравствуйте, пишу техническое задание для отображения на графике различных MA

С простой - все понятно.

По взвешенной - вопрос такой:

Если мы нумеруем как в таймсерии (0 - текущий бар, 1 - предыдущий и т.д.), то при периоде 5 формула для взвешенной скользящей будет такой?

LWMA=Close(5)*5+Close(4)*4+Close(3)*3+Close(2)*2+Close(1)*1)/(Close(5)+Close(4)+Close(3)+Close(2)+Close(1))

или такой?

LWMA=Close(1)*5+Close(2)*4+Close(3)*3+Close(4)*2+Close(5)*1)/(Close(5)+Close(4)+Close(3)+Close(2)+Close(1))

По экспоненциальной - такой вопрос:

Из формулы, которая на офф сайте доступна:

EMA = (CLOSE (i) * P) + (EMA (i - 1) * (1 - P))

С коэффициентом я P я разобрался. А где взять значение EMA предыдущей свечи, если для него необходимо вычислить значение предпредыдущей, а для него и т.д.???

Подскажите, пожалуйста, буду очень признателен 

 
Эдуард Климуш:

Здравствуйте, пишу техническое задание для отображения на графике различных MA

С простой - все понятно.

По взвешенной - вопрос такой:

Если мы нумеруем как в таймсерии (0 - текущий бар, 1 - предыдущий и т.д.), то при периоде 5 формула для взвешенной скользящей будет такой?

LWMA=Close(5)*5+Close(4)*4+Close(3)*3+Close(2)*2+Close(1)*1)/(Close(5)+Close(4)+Close(3)+Close(2)+Close(1))

или такой?

LWMA=Close(1)*5+Close(2)*4+Close(3)*3+Close(4)*2+Close(5)*1)/(Close(5)+Close(4)+Close(3)+Close(2)+Close(1))

По экспоненциальной - такой вопрос:

Из формулы, которая на офф сайте доступна:

EMA = (CLOSE (i) * P) + (EMA (i - 1) * (1 - P))

С коэффициентом я P я разобрался. А где взять значение EMA предыдущей свечи, если для него необходимо вычислить значение предпредыдущей, а для него и т.д.???

Подскажите, пожалуйста, буду очень признателен 

взвешенные МА (SMA,LWMA,EMA - они именно такие) можно считать по вектору коэффициентов.
Длина вектора = период МА, сумма коэфф=1.0;
для SMA все коэфф. равны, для LWMA равномерно растут, для EMA экспонентно растут

MA[i]=sum(0..n-1,Price[i-n]*K[n])
 
Эдуард Климуш:

Здравствуйте, пишу техническое задание для отображения на графике различных MA

...

Подскажите, пожалуйста, буду очень признателен 

 

Так в МТ5 уже есть файл с написанными прогами для различных МА (\Include\MovingAverages.mqh) ...

Просто недавно его смотрел. 

Файлы:
 

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

Стохастический Осцилятор имеет настройки по умолчанию в МТ4:  К% (быстрая линия )= 5 ; Д% ( медленная )= 3 ; замедление =3 ; цены - макс/ мин ; метод МА -Simpl ( простая ) .

Приводятся понятные формулы : К% = ( клоз 0- лоу Н) / (хай Н -лоу Н ) *100 ( соотношение разниц между текущей , максимальной ценой за 5 периодов и минимальной за 5 периодов , включая текущий ) ; Д% =( Сумма К% за 3 периода) / 3 ,  ( это простое усреднение , так же как и в МА ) . Значения получаемые по этим формулам , соответствуют "замедление =1 " . А теперь главный вопрос : как получили из этих значений , значения при замедлении =3 ?  В источниках говориться о том что применяется метод усреднения как и в МА , но тогда К% (1) должен равняться Д% (3) , а это не так не совпадают циферки . Подсказывайте ребята . 

 
vitek2010:

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

Стохастический Осцилятор имеет настройки по умолчанию в МТ4:  К% (быстрая линия )= 5 ; Д% ( медленная )= 3 ; замедление =3 ; цены - макс/ мин ; метод МА -Simpl ( простая ) .

Приводятся понятные формулы : К% = ( клоз 0- лоу Н) / (хай Н -лоу Н ) *100 ( соотношение разниц между текущей , максимальной ценой за 5 периодов и минимальной за 5 периодов , включая текущий ) ; Д% =( Сумма К% за 3 периода) / 3 ,  ( это простое усреднение , так же как и в МА ) . Значения получаемые по этим формулам , соответствуют "замедление =1 " . А теперь главный вопрос : как получили из этих значений , значения при замедлении =3 ?  В источниках говориться о том что применяется метод усреднения как и в МА , но тогда К% (1) должен равняться Д% (3) , а это не так не совпадают циферки . Подсказывайте ребята . 

если память не изменяет, то это довесок к оригиналу и с ним при замедлении 3 при расчёте K% берётся не просто Low а минимальный Low за 3 бара, аналогично вместо просто High - максимум High за 3 бара
 
Maxim Kuznetsov:
если память не изменяет, то это довесок к оригиналу и с ним при замедлении 3 при расчёте K% берётся не просто Low а минимальный Low за 3 бара, аналогично вместо просто High - максимум High за 3 бара
просто добавление: замедление больше 2-х имеет хоть какой-то смысл только для H4 и H1. Оно не для сглаживания или борьбы с шумом - просто компенсирует сдвиги часовых поясов и неопределённость к какому из баров отнести например High рядом с границей.
 
Эдуард Климуш:
 

По экспоненциальной - такой вопрос:

Из формулы, которая на офф сайте доступна:

EMA = (CLOSE (i) * P) + (EMA (i - 1) * (1 - P))

С коэффициентом я P я разобрался. А где взять значение EMA предыдущей свечи, если для него необходимо вычислить значение предпредыдущей, а для него и т.д.???

Имейте в виду, что коэффициент P в MT5, судя по MovingAverages.mqh, используется не так, как в формуле на сайте:

   double pr=2.0/(period+1.0);
   result=price[position]*pr+prev_value*(1-pr

Так же и в MT4. Предполагаю, это сделано для выравнивания положения центра масс весовых коэффициентов между SMA и EMA, чтобы их отставание от курса при одинаковых периодах не сильно различалось.

К сожалению, ответа на вопрос, где начать учет свечей для EMA, MovingAverages.mqh не дает. В функцию ExponentialMAOnBuffer приходит внешний параметр (номер свечи) int begin, и значения курса из всех предыдущих свечей назначаются нулям. Чтобы назначить эту границу N, надо, во-первых, вспомнить сумму формулу для суммы части геометрической прогрессии со знаменателем (1-P) от 1 до N, во вторых, решить, какого размера скачки курса Вы будете учитывать. Тогда остаток суммы весов (после  N), умноженный на величину наибольшего скачка, даст наибольшую ошибку в значении EMA. Задавайте ее как Вам надо.

 
Maxim Kuznetsov:
если память не изменяет, то это довесок к оригиналу и с ним при замедлении 3 при расчёте K% берётся не просто Low а минимальный Low за 3 бара, аналогично вместо просто High - максимум High за 3 бара

То есть Вы хотите сказать , что при замедлении =3 ,  К% = ( Close "текущая"- минимальный Low за 3 бара ) / (максимум High за 3 бара -  минимальный Low за 3 бара ) * 100 ; 

 ‌Думаю это не так , иначе зачем нужно было бы это "замедление " если можно в  К% (быстрая линия )= 5  поставить "3" ? 

Проверяю : МТ4 ,инста ,Евро/Дол, недельки , последняя закрытая свеча , показания Стоха (5. 3. 3 ) , К%=34.0864

Т‌еперь посмотрим что даст подсчёт по 3-м барам -  Close "текущая"= 1.0561 , максимум High за 3 бара = 1.0791 , минимальный Low за 3 бара= 1.0493 

К‌% = (68 / 298) * 100= 22. 8188  

 ‌Вывод - не правильный подход . 

 ‌На второй пост отвечу - вопрос не касается целесообразности этого значения , главное понять , как математически получается значение К% с замедлением больше "1" 

 
vitek2010:

То есть Вы хотите сказать , что при замедлении =3 ,  К% = ( Close "текущая"- минимальный Low за 3 бара ) / (максимум High за 3 бара -  минимальный Low за 3 бара ) * 100 ; 

 ‌Думаю это не так , иначе зачем нужно было бы это "замедление " если можно в  К% (быстрая линия )= 5  поставить "3" ? 

Проверяю : МТ4 ,инста ,Евро/Дол, недельки , последняя закрытая свеча , показания Стоха (5. 3. 3 ) , К%=34.0864

Т‌еперь посмотрим что даст подсчёт по 3-м барам -  Close "текущая"= 1.0561 , максимум High за 3 бара = 1.0791 , минимальный Low за 3 бара= 1.0493 

К‌% = (68 / 298) * 100= 22. 8188  

 ‌Вывод - не правильный подход . 

 ‌На второй пост отвечу - вопрос не касается целесообразности этого значения , главное понять , как математически получается значение К% с замедлением больше "1" 

Стохастик показывает положение Close между Low и High. Просто в процентах. Из правильных соображений, что при движении вверх закрытия обычно ближе к High, в обратку наоборот. Но цена сильно дрожит и медленная линия нужна чтобы эти дрожания убрать, и заодно сравнивать текущее положение быстрой линии с её-же средними.

Замедление 2 как-бы сливает два бара в один и смотрится уже положение Close внутри такого "спаянного бара".

 
Maxim Kuznetsov:

Стохастик показывает положение Close между Low и High. Просто в процентах. Из правильных соображений, что при движении вверх закрытия обычно ближе к High, в обратку наоборот. Но цена сильно дрожит и медленная линия нужна чтобы эти дрожания убрать, и заодно сравнивать текущее положение быстрой линии с её-же средними.

Замедление 2 как-бы сливает два бара в один и смотрится уже положение Close внутри такого "спаянного бара".


Это всего лишь общие слова , не могли бы Вы на реальном примере ( в цифрах , вставив их в формулы ), показать как это происходит , не важно какой ДЦ ( у меня терминалов много ) , чтобы было понятно  . Ведь  любой индикатор (информационные и новостные не беру ) это всего лишь прога берущая из графика  цифровые значения , обрабатывающая их по формулам или алгоритмам и выдающая результат в виде графических или звуковых отображений , а эта прога не понимает слов " как-бы сливает два бара" . у меня есть открытый код стохастика но что то не могу понять как высчитываеться это " замедление".
 

В кодабазе есть открытый код стохастика - самый реальный пример, реальней не бывает. Если код не понятен, постите его сюда, задавайте конкретные вопросы по коду.   

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