作者:gpwr
霍德里克-普雷斯科特(HP)滤波器的独特之处在于它不会造成滞后。该滤波器通过最小化目标函数来进行计算:
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文件):

如果霍德里克-普雷斯科特滤波器能够“预见未来”,那么它建议的未来值是什么呢?为了回答这个问题,我们需要找到一个数字低通滤波器,其频率参数与霍德里克-普雷斯科特滤波器类似,但其值是直接使用“孪生滤波器”的过去值计算的,也就是:
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滤波器
最好选择具有频率无关延迟Tdel(恒定群延迟)的“孪生滤波器”。IIR滤波器不适用。对于FIR滤波器,频率无关延迟的条件如下:
a[i] = +/-a[nx-1-i], i = 0..nx-1
最简单的FIR滤波器是简单移动平均(SMA):
y[i] = Sum(x[i-k],k=0..nx-1)/nx
如果nx是奇数,则Tdel = (nx-1)/2。如果我们将SMA滤波器的值向过去偏移Tdel个柱子,SMA的值将与霍德里克-普雷斯科特滤波器的值重合。由于这两种滤波器的频率参数差异显著,无法实现完全的数学一致性(请参见下图):

为了实现滤波器值之间的最接近匹配,我建议它们的通道宽度要相似(例如,-6dB)。霍德里克-普雷斯科特滤波器的-6dB通道宽度计算如下:
wc = 2*arcsin(0.5/lambda^0.25).
SMA滤波器的-6dB通道宽度通过以下方程进行数值计算:
|H(w)| = sin(nx*wc/2)/sin(wc/2)/nx = 0.5
下图比较了两个通道宽度相似的滤波器的值:红色 - 霍德里克-普雷斯科特滤波器(FiltPer = 25),蓝色 - SMA(周期 = 15,偏移 = -7)。请注意,最后7个柱子的SMA数据缺失,因为其需要知道未来价格。相反,霍德里克-普雷斯科特滤波器(红色)显示出一些值。如果偏移的SMA在未来价格出现后重现霍德里克-普雷斯科特滤波器的最后7个柱子的值,那么这些值可能是什么呢?

预测算法:
该指标具有两种预测方法:
方法1:
- 1. 设置SMA长度为3,并向过去偏移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价格。
方法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 - 预测未来值的数量
该指标用红色突出显示预测值。以下示例中使用方法1:

方法2:

第二种方法更为准确,但通常在第一个预测价格上会出现较大的波动。所描述的预测方法可以通过寻找与霍德里克-普雷斯科特滤波器频率参数更接近的FIR滤波器进行改进。例如,可以尝试使用汉宁、布莱克曼、凯瑟等具有恒定延迟的滤波器,而不是SMA。
作者感谢用户Korey在以下论坛部分发布的原始霍德里克-普雷斯科特滤波器指标(俄文):