MQL4 - automated forex trading   /  

Форум

расчёт веса в ЕМА

К списку тем  | 1 2 3 4 5 6 7 8 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
646
eddy 18.04.2010 18:07 
1.ЕМА определяется путём добавления к ЕМА[1] определенной доли Close[0] - какой доли конкретно? (вопрос решён)
2.как найти вес клозов в текущем значении ема?

Бесплатная Groupware для групп разработчиков

Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение.


avatar
Модератор
12485
Mathemat 18.04.2010 18:09 
http://ta.mql4.com/ru/indicators/trends/moving_average
Долю выбираешь сам, как тебе хочется.

avatar
646
eddy 18.04.2010 18:11 
каким образом?

avatar
Модератор
12485
Mathemat 18.04.2010 18:20 
Загляни в индюкатор, поставляемый стандартно - Moving Average. Там будет понятнее.
Грубо говоря, твоя доля получится исходя из сравнения с периодом индюкатора примерно с таким же сглаживанием.
Вот код для ЕМА (pr - твоя доля):
//+------------------------------------------------------------------+
//| Exponential Moving Average                                       |
//+------------------------------------------------------------------+
void ema()
  {
   double pr=2.0/(MA_Period+1);
   int    pos=Bars-2;
   if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1;
//---- main calculation loop
   while(pos>=0)
     {
      if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1];
      ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);
           pos--;
     }
  }
А вообще почаще заглядывай в документацию, размещенную на сайте, а также в сами коды.

avatar
5883
Svinozavr 18.04.2010 18:20 
ema[i]=k*Close[i] + (1-k)*ema[i+1];
где k - доля 0...1. Часто вместо доли используют период, из которого рассчитывают эту долю: k=2.0/(1+period). Т.е. EMA долей 0.5 будет соотв. период 3.

avatar
646
eddy 18.04.2010 18:21 
залез в исходник ЕМА
void ema()
  {
   double pr=2.0/(MA_Period+1); // что значит период МА + 1? зачем?
   int    pos=Bars-2;
   if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1;
//---- main calculation loop
   while(pos>=0)
     {
      if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1];
      ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr); // Buffer[i]=Close[i]*2% + Buffer[i+1]*(1-2)
                                                                     непонятно: зачем ЕМА[i+1] умножается на 1-2?
           pos--;
     }
  }


avatar
5883
Svinozavr 18.04.2010 18:22 
Mathemat >>:
Загляни в индюкатор, поставляемый стандартно - Moving Average. Там будет понятнее.
Грубо говоря, твоя доля получится исходя из сравнения с периодом индюкатора примерно с таким же сглаживанием.
Вот код для ЕМА (pr - твоя доля):
А вообще почаще заглядывай в документацию, размещенную на сайте, а также в сами коды.

Совсем народ обленился. Неужели наше косноязычие им милее выверенных формулировок в доке? )))


avatar
646
eddy 18.04.2010 18:25 
непонятно с чего вы взяли что я не смотрел документацию, я спросил о том чего там нет
и в описании темы написал формулу, она - единственное что есть в доках

avatar
5883
Svinozavr 18.04.2010 18:29 
Да ладно. Все там есть. И вычисление доли из периода тоже.
ок. Теперь-то разобрались с "долей"?

avatar
646
eddy 18.04.2010 18:32 
"Часто вместо доли используют период, из которого рассчитывают эту долю: k=2.0/(1+period)." а 2.0 это тогда что, если не доля? ведь по твоим словам вместо доли используется период

avatar
Модератор
12485
Mathemat 18.04.2010 18:36 
Это формула Эйлерса, если не ошибаюсь. Но уже не помню, как она была выведена.
К списку тем   | 1 2 3 4 5 6 7 8  

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