DC2008:
А зачем такая точность числа ПИ?
Вы уверены что формула правильная ? Сравните пожалуйста с этими http://dspsystem.narod.ru/add/win/win.html
Скользящая средняя на основе цифрового фильтра. В данном примере используется Hann Window. Для изменения коэффициентов фильтра, редактируйте следующие строки в OnInit():
По поводу терминологии извините вы меняете не коэффициенты фильтра, а коэффициенты окна. Это разные вещи. В вашем примере цифровой фильтр (ЦФ) это скользящая средняя (СС), и использоваться она (СС) может с любым окном (небольшая их часть приведена по ссылке выше). Каждое из окон, а их много, служит для определенных целей. Обычно оно улучшает, какое либо свойство ЦФ, но за это приходиться платить, просто так ничего не дается, в выходной спектр вносятся искажения.
По поводу точности числа Пи, точность никогда не бывает лишней. Загрубить результат мы всегда успеем. Вот тут есть простой способ его задания https://www.mql5.com/ru/code/8309
Очень красивое решение.
pi = 4*MathArctan(1);
По поводу точности числа Пи, точность никогда не бывает лишней. Загрубить результат мы всегда успеем. Вот тут есть простой способ его задания https://www.mql5.com/ru/code/8309
Определять пи как переменную не стоит. Пускай будет константой лучше.
Но и лишние знаки тоже не нужны. Для double известно количество знаков, которые могут храниться.
Определять пи как переменную не стоит. Пускай будет константой лучше.
Но и лишние знаки тоже не нужны. Для double известно количество знаков, которые могут храниться.
Вы уверены что формула правильная ? Сравните пожалуйста с этими http://dspsystem.narod.ru/add/win/win.html
По поводу терминологии извините вы меняете не коэффициенты фильтра, а коэффициенты окна. Это разные вещи. В вашем примере цифровой фильтр (ЦФ) это скользящая средняя (СС), и использоваться она (СС) может с любым окном (небольшая их часть приведена по ссылке выше). Каждое из окон, а их много, служит для определенных целей. Обычно оно улучшает, какое либо свойство ЦФ, но за это приходиться платить, просто так ничего не дается, в выходной спектр вносятся искажения.
Существуют разные формулы для окна Ханна и других подобных окон. Они все идентичны если вдуматься. Формула в Вашей ссылке имеет один большой недостаток: нулевые значения окна при n=0 и n=N-1. Так как смысла умножать цены на нули нет, то получается что окно только существует для цен с n=1...n=N-2. Теперь давайти обозначим количество цен для которых окно не равно нулю через Per, как у меня, тогда получим N-2=Per или N=Per+2. Подставьте этот N в формулу Ханна в Вашей ссылке и получите такую же формулу как у меня.
Насчёт имени индикатора. Имя правильно выбрано. По определению, то что я сконструировал является цифровым фильтром с конечной импульсной характеристикой
The difference equation that defines the output of an FIR filter in terms of its input is:
y[n]=b_0 x[n] + b_1 x[n-1] + ... + b_N x[n-N]
where:
- x[n] is the input signal,
- y[n] is the output signal,
- bi are the filter coefficients, and
- N is the filter order
Смотрите здесь http://en.wikipedia.org/wiki/Finite_impulse_response
Я по электронике уже 21 год работаю. Знаю эти вещи. Хотя всегда спасибо за замечания. Приятно поговорить со знающими людьми.
Существуют разные формулы для окна Ханна и других подобных окон. Они все идентичны если вдуматься. Формула в Вашей ссылке имеет один большой недостаток: нулевые значения окна при n=0 и n=N-1. Так как смысла умножать цены на нули нет, то получается что окно только существует для цен с n=1...n=N-2. Теперь давайти обозначим количество цен для которых окно не равно нулю через Per, как у меня, тогда получим N-2=Per или N=Per+2. Подставьте этот N в формулу Ханна в Вашей ссылке и получите такую же формулу как у меня.
....
Спасибо за ссылку в википедию. Попробую показать с помощью формул, что Вы сделали.
Для вашего случая точнее эту формулу будет записать так
y[n]=а_0*b_0* x[n] +а_1* b_1* x[n-1] + ... + а_N*b_N* x[n-N]
x[n] is the input signal,
y[n] is the output signal,
bi are the filter coefficients, and
а[i] – коэффициенты окна,
N is the filter order
Т.е. вы произвели свертку коэффициентов ЦФ (b) и коэффициентов Окна (a).
Да вы правы, что есть разные формулы записи оконных функций. Но это различие порождено тем в какой области производиться свертка, в частотной или временной. И эти формулы жестко связаны между собой преобразованием Фурье http://ru.wikipedia.org/wiki/Оконное_преобразование_Фурье
Хотя формулы и похожи, никогда нельзя путать в какой области производится свертка, иначе аброкодабра получается.
Теперь по поводу n. В формуле действительно важно определить с чего начинается с 0 или 1 (“…окно только существует для цен с n=1...n=N), если смещаете на 1, то смещается все и N-1, становиться N, а не N-2
Точная формула окна Ханна выглядит вот так
p(t) = 0.5[1+cos(pi*t/tаu)]
Для тех, кто хочет чуть глубже изучить эту тему прилагаю файл с лекцией.
Для трейдеров
Постараюсь пояснить, про что мы тут говорим, на известном Вам всем примере.
https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma
Всем известно:
а) простое скользящее среднее (Simple Moving Average, SMA).
У него окно прямоугольное, т.е. каждое значение цены имеет одинаковый вес a[i]= 1, независимо от глубины истории.
б) линейно-взвешенное скользящее среднее (Linear Weighted Moving Average, LWMA)
Во взвешенном скользящем среднем последним данным присваивается больший вес, а более ранним — меньший.
т.е. коэффициенты окна а[1]=1, a[2]=1/2,a[3]=1/3 …. a[n]=1/n
З.Ы. gpwr тоже рад общению, радиоинженер всегда найдет общий язык с электронщиком, тем более, если оба не новички в этом деле и говорят на универсальном языке – языке математики.
есть только 3 индикатора - цена, цена закрытия, и простая скользящая средняя
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
FIR_filter:
Скользящая средняя на основе цифрового фильтра. В данном примере используется окно Ханна (Hann Window).
Автор: Vladimir