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 свечи
 
Ну конкретно для вашей формулы будет так:

    [TABLE][TR][TD]66730[/TD][TD]66730[/TD][/TR][TR][TD]66719[/TD][TD]66708[/TD][/TR][TR][TD]66744[/TD][TD]66780[/TD][/TR][/TABLE]слева входные, справа расчетные.
Но это не ЕМА, просто потому что приведенная выше формула 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) будут такие цифры
     [TABLE][TR][TD]66730[/TD][TD]66730[/TD][/TR][TR][TD]66719[/TD][TD]66724.5[/TD][/TR][TR][TD]66744[/TD][TD]66734.25[/TD][/TR][TR][TD]66752[/TD][TD]66743.125
[/TD][/TR][/TABLE]Я взял с графика дополнительное значение 66752 (примерно), и получил значение ema 66743, которое, как я вижу по графику (опять же примерно) соответствует ожидаемому.
 
ААААА!!! таблицы разъехались :(
ну я думаю разберетесь
Страницы: 1
Читают тему (гостей: 1)
Наверх