Ema lua

Страницы: 1
RSS
Ema lua
 
Здравствуйте, подскажите пожалуйста код функции EMA, или подробный алгоритм, в нэте туча подобных алгоритмов
EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

EM=Price(t)×k+EMA(y×(−k)

хоть они и разные и во всех их не могу одного понять!
EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

EM=Price(t)×k+EMA(y×(−k)

откуда мне знать чему будет равен EMA (t-1) и тд, если я его только хочу вычислить, просто для меня это звучит так, подходит ко мне человек с потерей памяти и спрашивает меня, сколько ему лет, а я ему говорю, ЛЕТ=(Лет-1) + 1 О_о так он же не знает сколько ему было лет, и сколько есть.
 
Цитата
Sergey написал:
Здравствуйте, подскажите пожалуйста код функции EMA, или подробный алгоритм, в нэте туча подобных алгоритмов
EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

EM=Price(t)×k+EMA(y×(−k)

хоть они и разные и во всех их не могу одного понять!
EMA (t) =   EMA (t-1)   + 2 *(P(t) –   EMA (t-1))  

EM=Price(t)×k+  EMA(y×(−k)
 
откуда мне знать чему будет равен EMA (t-1) и тд, если я его только хочу вычислить, просто для меня это звучит так, подходит ко мне человек с потерей памяти и спрашивает меня, сколько ему лет, а я ему говорю, ЛЕТ=(Лет-1) + 1 О_о так он же не знает сколько ему было лет, и сколько есть.
Кратко примерно так:
это простейший фильтр
EMA - это сигнал на его выходе
P - это сигнал на его входе
В начальный момент вы его включаете.
Как телевизор
EMA(t-1) - это то что было на его выходе до включения (как телевизор) - ничего т е ноль
ноль был и в момент t-миллион
-----------------
В программах любых фильтров делается блок инициализации, в котором вы должны задать начальные значения всех переменных
В простейшем случае они равны нулю
Но лучше задавать их равными сигналу в начальный момент это уменьшает переходной процесс в фильтре
примерно так
подробнее читайте в учебниках по теории цифровой фильтрации сигналов
 
Цитата
Sergey написал:
хоть они и разные и во всех их не могу одного понять! EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))EM=Price(t)×k+EMA(y×(−k)откуда мне знать чему будет равен EMA (t-1) и
Эти алгоритмы считаются итеративно. E(t-1) - это результат предыдущего расчета, а не предыдущий элемент например массива.
На первой (на самом деле нулевой :) ) итерации E(t-1) можно принять равным нулю либо цене расчета. По сути оба варианта равноправны, т.к. пользоваться значением индикатора имеет смысл после того только после (period+1) отсчета.

т.е. EMA (0) = 0 + 2 *(P(0) – 0) или EMA (0) = P(0) + 2 *(P(0) – P(0)).
следующая EMA (1) = EMA(0) + 2 *(P(1) – EMA (0))
каждая последующая EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

Таким образом, чтобы исключить влияние переходного процесса БИХ-фильтра, значения можно считать корректными, с момента когда через фильтр прошло число отсчетов не менее длины периода расчета фильтра.

Чисто графически имеет смысл начинать с Р(0), так будет лучше выглядеть на графике, хотя сути это не меняет.

Николай подсказывает абсолютно верно: -хорошо бы хотя бы краем глаза взглянуть на теорию :)
 
 
Цитата
Imersio Arrigo написал:
Цитата
Sergey написал:
хоть они и разные и во всех их не могу одного понять! EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))EM=Price(t)×k+EMA(y×(−k)откуда мне знать чему будет равен EMA (t-1) и
Эти алгоритмы считаются итеративно. E(t-1) - это результат предыдущего расчета, а не предыдущий элемент например массива.
На первой (на самом деле нулевой :) ) итерации E(t-1) можно принять равным нулю либо цене расчета. По сути оба варианта равноправны, т.к. пользоваться значением индикатора имеет смысл после того только после (period+1) отсчета.

т.е. EMA (0) = 0 + 2 *(P(0) – 0) или EMA (0) = P(0) + 2 *(P(0) – P(0)).
следующая EMA (1) = EMA(0) + 2 *(P(1) – EMA (0))
каждая последующая EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1))

Таким образом, чтобы исключить влияние переходного процесса БИХ-фильтра, значения можно считать корректными, с момента когда через фильтр прошло число отсчетов не менее длины периода расчета фильтра.

Чисто графически имеет смысл начинать с Р(0), так будет лучше выглядеть на графике, хотя сути это не меняет.

Николай подсказывает абсолютно верно: -хорошо бы хотя бы краем глаза взглянуть на теорию :)
Imersio Arrigo,
ну вот у меня есть EMA из 3 свечей и он равен 66731; ниже те самые 3 свечи.
int candle[3];
candle[0] = 66730;
candle[1] = 66719;
candle[2] = 66744;
опишите алгоритм пожалуйста.
 
Цитата
Sergey написал:
ну вот у меня есть EMA из 3 свечей и он равен 66731; ниже те самые 3 свечи.
А период сколько?
Расчет имеет смысл только тогда, если есть свечей хотя бы в два раза больше, чем период.
т.е. для наблюдения ЕМА с периодом 15, нужно 30 и более свечей.
Нельзя посчитать ЕМА(15) если есть всего три свечи :)
 
ну вот пример в Wealth-Lab закинул данные и поставил ema close 3 данные ema свечи я получил сразу же через 3 свечи
 
Ну конкретно для вашей формулы будет так:

   
6673066730
6671966708
6674466780
слева входные, справа расчетные.
Но это не ЕМА, просто потому что приведенная выше формула EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1)) не является экспоненциальной скользящей средней (если вы конечно имели ввиду ее, как я подумал по названию)

Вообще, формули ЕМА (из вики) выглядит так
EMA(t) = a * P(t) + (1 - a) * EMA(t-1)
где a = 2 / (n + 1), n - период расчета.
для случая ЕМА(3) будут такие цифры
     
6673066730
6671966724.5
6674466734.25
6675266743.125
Я взял с графика дополнительное значение 66752 (примерно), и получил значение ema 66743, которое, как я вижу по графику (опять же примерно) соответствует ожидаемому.
 
ААААА!!! таблицы разъехались :(
ну я думаю разберетесь
 
Цитата
Imersio Arrigo написал:
Ну конкретно для вашей формулы будет так:

   
6673066730
6671966708
6674466780
слева входные, справа расчетные.
Но это не ЕМА, просто потому что приведенная выше формула EMA (t) = EMA (t-1) + 2 *(P(t) – EMA (t-1)) не является экспоненциальной скользящей средней (если вы конечно имели ввиду ее, как я подумал по названию)

Вообще, формули ЕМА (из вики) выглядит так
EMA(t) = a * P(t) + (1 - a) * EMA(t-1)
где a = 2 / (n + 1), n - период расчета.
для случая ЕМА(3) будут такие цифры
   
6673066730
6671966724.5
6674466734.25
6675266743.125
Я взял с графика дополнительное значение 66752 (примерно), и получил значение ema 66743, которое, как я вижу по графику (опять же примерно) соответствует ожидаемому.
Спасибо за пример!Но вот что интересно, в Квике формула иная:


Exponential Moving Average (EMA)
EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1)


так какая на самом деле экспонента? :)
 
Цитата
Дмитрий Бланк написал:
Exponential Moving Average (EMA)EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1)так какая на самом деле экспонента? :)
https://en.wikipedia.org/wiki/Moving_average

An exponential moving average (EMA), also known as an exponentially weighted moving average (EWMA).


А в Квик совсем иной подход к этой экпоненте...
 
Цитата
Дмитрий Бланк написал:
Цитата
Дмитрий Бланк написал:
Exponential Moving Average (EMA)EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1)так какая на самом деле экспонента? :)
 https://en.wikipedia.org/wiki/Moving_average

An exponential moving average (EMA),  also  known as an exponentially  weighted  moving average (E W MA).


А в Квик совсем иной подход к этой экпоненте...
Вы правы,
в КВИК перепутаны либо формулы либо названия  (кому как удобнее).
--------------------------
На самом деле Exponential Moving Average   - они назвали Modified Moving Average (MMA) MMA = (MMAi-1*(n-1) + Pi) / n]]
-----------------------------
а под названием Exponential Moving Average  у них какой-то самопал  наверное это будет должно быть Modified Moving Average.
 
Цитата
nikolz написал:
На самом деле Exponential Moving Average   - они назвали Modified Moving Average (MMA) MMA = (MMAi-1*(n-1) + Pi) / n]]
Благодарю.Оставлю эту формулу себе под этим правильным названием, раз уж сравнивал их.
 
Цитата
Дмитрий Бланк написал:
Благодарю.Оставлю эту формулу себе под этим правильным названием, раз уж сравнивал их.
EMA и MMA (SMMA) вообще то разные функции.

EMA(i) = a * P(i) + (1 - a) * EMA(i-1)
или эквивалент
EMA = (P(i) - EMA(i-1)) * a + EMA(i-1)
где a = 2 / (N - 1)


SMMA (i) = (PREVSUM - SMMA (i - 1) + CLOSE (i)) / N
или эквивалент
SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
 
Всех приветствую, подскажите как можно дневные ЕМА установить на часовой график?
 
Цитата
Georgy написал:
Всех приветствую, подскажите как можно дневные ЕМА установить на часовой график?

Простого способа нет.
Сложный способ, по имеющимся данным часового графика, произвести расчет дневного.
Т.е. при каждом вызове OnCalculate, проверять какие свечки были за предыдущий сутки, и по ним производить расчет индикатора.
Сам по себе расчет, можно делать через функции из наших примеров
Страницы: 1
Читают тему (гостей: 1)
Наверх