HP Extrapolator

0
(0)
Name:
HP Extrapolator [ ru ]
Author: gpwr (2009.01.15 10:15)
Rating: 10
Downloaded: 3716
Download:
HP Extrapolator 1
 HP.mq4 (2.1 Kb) View
HP Extrapolator 1 HP Extrapolator.mq4 (4.8 Kb) View

Автор: gpwr

Описание:

Отличительное качество фильтра Ходрика-Прескота в том что он не имеет задержки. Рассчитывается он путём минимизации целевой функции

F = Sum((y[i] - x[i])^2,i=0..n-1) + lambda*Sum((y[i+1]+y[i-1]-2*y[i])^2,i=1..n-2)

где x[] - цены, y[] - значения фильтра. Вот пример поведения этого фильтра (см приложенный файл HP.mq4)

HP Extrapolator 3

Если фильтр Ходрика-Прескота заглядывает в будущее, то какие будущие значения он предполагает? Чтобы ответить на этот вопрос, нужно найти цифровой НЧ фильтр, частотная характеристика которого похожа на ту фильтра Ходрика-Прескота, но значения которого рассчитываются напрямую используя прошлые значения цены и прошлые значения самого "фильтра-близнеца", т.е.

y[i] = Sum(a[k]*x[i-k],k=0..nx-1) - FIR фильтр

или

y[i] = Sum(a[k]*x[i-k],k=0..nx-1) + Sum(b[k]*y[i-k],k=1..ny) - IIR фильтр

Предпочтительно выбрать такой "фильтр-близнец", который имел бы частотно-независимую задержку Тзад (constant group delay). IIR фильтры в таком случае не подходят. Для FIR фильтров, условием частотно-независимой задержки является

a[i] = +/-a[nx-1-i], i = 0..nx-1

Простейшим FIR фильтром с постоянной задержкой является Simple Moving Average (SMA):

y[i] = Sum(x[i-k],k=0..nx-1)/nx

При нечётном nx, задержка такого фильтра равна Тзад = (nx-1)/2. Если сдвинуть значения этого SMA фильтра в прошлое на количество баров равному задержке Тзад, то SMA значения совпадут со значениями фильтра Ходрика-Прескота. Точного совпадения достичь невозможно из-за существенной разницы в частотных характеристик двух фильтров проиллюстрированной на этом графике

HP Extrapolator 4

Чтобы достичь наиболее близкого совпадения между значениями обоих фильтров, желательно выбрать их ширину пропускания (например, на уровне -6dB) одинаковой. Ширина пропускания на уровне -6dB фильтра Ходрика-Прескота расчитывается по формуле

wc = 2*arcsin(0.5/lambda^0.25).

Ширина пропускания на уровне -6dB для SMA фильтра находится численными методами из уравнения

|H(w)| = sin(nx*wc/2)/sin(wc/2)/nx = 0.5

График внизу сравнивает значения двух фильтров при одинаковой полосе пропускания: красный цвет - фильтр Ходрика-Прескота (FiltPer = 25), синий цвет - SMA (Period = 15, Shift = -7). Заметьте что SMA (синий) для последних 7 баров не существует, т.к. ему нужно знать будущие цены. Фильтр Ходрика-Прескота (красный), с другой стороны, показывает какие-то значения. Если предположить что при появлении будущих цен, сдвинутый SMA будет повторять значения фильтра Ходрика-Прескота на последних 7 барах, то какие эти будущие значения должны быть?

HP Extrapolator 5

Алгоритмы предсказания:

В индикаторе встроены два метода предсказания:

Metod 1:

1. Задаём длинну SMA равную 3 и сдвигаем SMA в прошлое на 1 бар. При такой длинне, сдвинутый SMA не существует только для последнего бара (Bar = 0), т.к. ему нужно значение следующей будущей цены Close[-1].

2. Рассчитываем частоту пропускания SMA. Приравниваем эту частоту к частоте пропускания фильтра Ходрика-Прескота. Находим lambda.

3. Рассчитываем значение фильтра Ходрика-Прескота на последнем баре HP[0] и предполагаем что SMA[0] с неизвестной Close[-1] даёт такое же значение.

4. Находим Close[-1] = 3*HP[0] - Close[0] - Close[1]

5. Увеличиваем длинну SMA до 5. Повторяем все вычисления и находим Close[-2] = 5*HP[0] - Close[-1] - Close[0] - Close[1] - Close[2]. И так далее пока не рассчитано заданное количество будущих цен FutBars.

Metod 2:

1. Задаём длинну SMA равную 2*FutBars+1 и сдвигаем SMA в прошлое на FutBars

2. Рассчитываем частоту пропускания SMA. Приравниваем эту частоту к частоте пропускания фильтра Ходрика-Прескота. Находим lambda.

3. Рассчитываем значения фильтра Ходрика-Прескота на последних FutBars барах и предполагаем что SMA поведёт себя таким же образом при появлении новых цен.

4. Находим Close[-1] = (2*FutBars+1)*HP[FutBars-1] - Sum(Close[i],i=0..2*FutBars-1), Close[-2] = (2*FutBars+1)*HP[FutBars-2] - Sum(Close[i],i=-1..2*FutBars-2), и т.д.

В индикаторе следующие входные данные:

Method - метод предсказания

LastBar - номер последнего бара для проверки предсказания на существуящих ценах (LastBar >= 0)

PastBars - количество прошлых баров для которых будет рассчитываться фильтр Ходрика-Прескотта (чем больше тем лучше или, по крайней мере, PastBars>2*FutBars)

FutBars - количество предсказанных будущих значений

Индикатор красным цветом строит предсказанные значения. В следующем примере используется Metod 1:

HP Extrapolator 6

Metod 2:

HP Extrapolator 7

Второй метод имеет тенденцию более точного предсказания, но часто имеет большие выбросы первой предсказанной цены. Описанный метод предсказания может улучшен путём нахождения FIR фильтра с частотной характеристикой более близкой к той фильтра Ходрика-Прескота. Например, вместо SMA, можно попробовать Hanning, Blackman, Kaiser и другие фильтры с постоянной задержкой.

Автор благодарен Korey за публикацию оригинального индикатора построения фильтра Ходрика-Прескота в следующей ветке форума:

http://forum.mql4.com/ru/18404/page2

5 comments  To post a new comment, please log in or register

Comment in PORTUGUESE. Indicador HP cruzando (crossover) com média móvel de 7 períodos (preço de fechamento) se revelou fácil e excelente. Simples. Experimente. Parabéns ! jmailto:[email protected]

26.08.2010 20:37 jrportobr

Comment in PORTUGUESE. Indicador HP cruzando (crossover) com média móvel de 7 períodos (preço de fechamento) se revelou fácil e excelente. Simples. Experimente. Parabéns ! jmailto:[email protected]

26.08.2010 20:36 jrportobr

You don't even know what you've created!

Contact me directly and I'll show you.

Forget the prediction. This is dead end.

But the Hodrick-Prescott Filter implementation - this is what I'm about 🙂

ALX

02.10.2009 14:13 alxalx

Would you please in english ? Rgds

18.01.2009 03:19 jskchan

i dont understand,difficult!

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?



Author: Forex Wiki Team
We are a team of highly experienced Forex Traders [2000-2023] who are dedicated to living life on our own terms. Our primary objective is to attain financial independence and freedom, and we have pursued self-education and gained extensive experience in the Forex market as our means to achieve a self-sustainable lifestyle.