[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 202

 
hoz:


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

 

Может не быть тика в эту секунду и даже минуту, поэтому лучше без секунд и Minute() < 5 и ограничить открытие: if(OrdersTotal < 1) или сколько нужно!
 

 Я смотрю код стандартного индикатора Moving Average.

 Дошёл я до функции:

//+------------------------------------------------------------------+
//| 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--;
     }
  }

 Переменная pr это всего лишь коэффициент взятый от балды? Почему именно 2.0 /(MA_Period+1) ?

Дальше я вижу что расчёт происходит только, если непросчитано 2 бара.. опять же логика где?

 Ну и тут:

ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);

 Сумма значение 2 последних цен закрытия, домноженных на коэффициенты. Почему так? В чём тут логика? Последнюю цену домножили на pr, а предпоследнюю цену на (1-pr).

 Что это даёт? Хочу понять принцип действия построения машки досканально,

 
hoz:

 Я смотрю код стандартного индикатора Moving Average.

 Дошёл я до функции:

 Переменная pr это всего лишь коэффициент взятый от балды? Почему именно 2.0 /(MA_Period+1) ?

Дальше я вижу что расчёт происходит только, если непросчитано 2 бара.. опять же логика где?

 Ну и тут:

 Сумма значение 2 последних цен закрытия, домноженных на коэффициенты. Почему так? В чём тут логика? Последнюю цену домножили на pr, а предпоследнюю цену на (1-pr).

 Что это даёт? Хочу понять принцип действия построения машки досканально,

Виктор, поэкспериментируй, подставив цифровое значение для pr. Скажем, если период МА = 19, то 2.0 /(MA_Period+1) = 0.1, а (1-pr) = 0.9. Отсюда и пляши!
 
borilunad:
Виктор, поэкспериментируй, подставив цифровое значение для pr. Скажем, если период МА = 19, то 2.0 /(MA_Period+1) = 0.1, а (1-pr) = 0.9. Отсюда и пляши!

 Борис, так я уже даже на листе бумаги пару буферов расписал. Что-то выходит странно. Но я заметил, что таким образом машки прижата к прошлому. Т.е. она имеет ниже значение, ежели текущая цена закрытия. Это если цены повышаются постоянно. А если наоборот, то в другую сторону быстрее двигается. Вот это по ходу и есть логика.
 
hoz:

 Борис, так я уже даже на листе бумаги пару буферов расписал. Что-то выходит странно. Но я заметил, что таким образом машки прижата к прошлому. Т.е. она имеет ниже значение, ежели текущая цена закрытия. Это если цены повышаются постоянно. А если наоборот, то в другую сторону быстрее двигается. Вот это по ходу и есть логика.

 Сумма значение 2 последних цен закрытия....  неправильно - к усредненному значению прибавляется клоз
 
YOUNGA:

 Сумма значение 2 последних цен закрытия....  неправильно - к усредненному значению прибавляется клоз
а вообще нормально найти в инете экспонициальеое сглаживание -описание
 
YOUNGA:

 Сумма значение 2 последних цен закрытия....  неправильно - к усредненному значению прибавляется клоз


Да, я это и имел ввиду. Но именно распределение pr между последними значениями т.е. последней ценой закрытия и усреднённым значенемю т.е. последним полученным буфером не совсем ясно.

 
YOUNGA:


щас поясню если открыть по одному лоту на каждой паре EURJPY и USDJPY то должен получится лот EURUSD те на 1пункт изменения цене евродоллара чтото должно произойти с синтетическим"евродолларом"( EURJPY/ USDJPY ) так как они коррелированы


В том-то и дело, что по одному лоту на EURJPY и USDJPY - это не равнозначные позиции. А потому происходить с ними будет вот что (считаю, что открылись в разные стороны, да?):  100000 EUR - 100000 USD = 100000 USD * (EUR/USD -1). То есть результат сделки, выраженный в долларах, будет прямо пропорционален курсу пары EURUSD за вычетом 1.
 
YOUNGA:
а вообще нормально найти в инете экспонициальеое сглаживание -описание

 Кстати, да. Благодарю за новодку :) Совсем уже замудохался я, в последнее время. Читаю описание " экспоненциального сглаживания " и начинаю понимать..
 
hoz:

 Что это даёт? Хочу понять принцип действия построения машки досканально,


Досконально так (разворачиваем рекурсивное уравнение в явное):

EMA (i) = C (i)*pr + EMA (i+1)* (1-pr) = C (i)*pr + (1-pr)* (C (i+1)*pr + EMA (i+2)*(1-pr)) = C (i)*pr + C (i+1)*pr* (1-pr) + EMA (i+2)*(1-pr)^2 = C (i)*pr + C (i+1)*pr* (1-pr) + (C (i+2)*pr + EMA (i+3)* (1-pr))*(1-pr)^2 =

= C (i)*pr + C (i+1)*pr* (1-pr) + C (i+2)*pr*(1-pr)^2 + EMA (i+3)* (1-pr)^3 = ... повторяем, повторяем... = Сумма {k = от i до беск.; C(k)*pr* (1-pr)^ (k-1)}

Другими словами, это ряд, коэффициенты при котором являют собой геометрическую прогрессию со знаменателем (1-pr)<1, то есть убывающую. Из курса школьной алгебры знаем, что такая прогрессия являет собой убывающую экспоненту. Откуда, собствено, и название МА.

Почему взяли именно такую формулу? Не вдаваясь в подробности, скажу, что при таком выборе формулы средняя групповая задержка входной котировки на выходе машки будет такая же, как у SMA c таким же периодом. Другими словами, выбрали чтоб EMA и SMA  с одинаковым параметром period давали примерно одинаковую задержку. (Но только примерно! - SMA - фильтр линейно-фазовый, а EMA - нет)

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