Williams' %R 定义
正如我在介绍中提到的,我们将详细了解 Williams' %R 指标。 Williams' %R (WPR) 是 Larry Williams 开发的动量指标。 我们可以说,WPR 是 Stochastic 振荡器的对手,因为它们之间的区别在于它们是如何缩放的,我们也可以说,WPR 也可以如同 Stochastic 那样使用。 如果您想了解更多关于随机指标的信息,可以阅读我以前的文章,学习如何基于 Stochastic 设计交易系统。 WPR 衡量收盘价和高低区间之间的关系。 WPR 指标也在 0 和 -100 之间振荡。 因为 WPR 是一个动量指标,它也可以用来衡量趋势的强度。 如果您需要了解更多关于趋势和趋势类型的信息,您可以阅读前一篇文章中的趋势定义主题,因为它可能有助于理解这一点。 通过观察 -80、-20 和中位 -50 的重要级别,该指标可能会有意义。
尝试将另一个技术工具与该指标相结合是很重要的,例如价格行动工具、图表形态、成交量、和移动平均线,就像我们在这篇关于策略主题的文章所做的那样,因为这样做非常有用,您能够厘清您所研究的工具中的更多层面,而这有助于做出适合的决策。
现在,我们需要知道如何计算 WPR 指标。 简单地说,我们可以按照以下步骤计算:
- 计算最高点的最高价 = 计算区间最高点的最高价。
- 计算最低点的最低价 = 计算区间最低点的最低价。
- WPR = (最高点的最高价 - 收盘价)/(最高点的最高价 - 最低点的最低价) * -100
为了更好地理解,我们需要举一个具有实际值的示例,应用它并计算 WPR,所以,如果我们有以下金融产品的数据。
周期 | 最高价 | 最低价 | 收盘价 |
---|---|---|---|
1 | 1.078 | 1.0678 | 1.0733 |
2 | 1.0788 | 1.0726 | 1.0777 |
3 | 1.0766 | 1.0697 | 1.0727 |
4 | 1.0733 | 1.0662 | 1.0724 |
5 | 1.074 | 1.0642 | 1.068 |
6 | 1.0749 | 1.0661 | 1.0734 |
7 | 1.0698 | 1.0558 | 1.0689 |
8 | 1.0599 | 1.0532 | 1.056 |
9 | 1.0608 | 1.046 | 1.0586 |
10 | 1.0565 | 1.046 | 1.0466 |
11 | 1.0556 | 1.0429 | 1.0547 |
12 | 1.0444 | 1.0388 | 1.0431 |
13 | 1.0421 | 1.035 | 1.0411 |
14 | 1.053 | 1.0353 | 1.0379 |
15 | 1.0577 | 1.0502 | 1.0511 |
16 | 1.0586 | 1.0525 | 1.0527 |
17 | 1.0594 | 1.0495 | 1.0555 |
18 | 1.0601 | 1.0482 | 1.0551 |
19 | 1.0642 | 1.0493 | 1.054 |
20 | 1.0632 | 1.0505 | 1.0621 |
21 | 1.0579 | 1.0491 | 1.052 |
22 | 1.0567 | 1.0491 | 1.051 |
23 | 1.0602 | 1.0381 | 1.0547 |
24 | 1.0509 | 1.0359 | 1.0443 |
25 | 1.0486 | 1.0396 | 1.0414 |
26 | 1.052 | 1.04 | 1.0408 |
27 | 1.0644 | 1.0505 | 1.0515 |
28 | 1.0775 | 1.0611 | 1.0614 |
29 | 1.0749 | 1.0671 | 1.0714 |
30 | 1.0715 | 1.0652 | 1.0699 |
现在,我们通过计算步骤得到的 WPR 与下面的相同。 请注意,我们所采用的周期默认设置为 14。
1- 获取最高点的最高价。
2- 获取最低点的最低价。
3- 得到 WPR。
现在,我们已计算出 WPR 值。 它应是一条在 0 和 -100 之间振荡的曲线,用来衡量动量,就像我们提到的一样。 如今,我们不需要手工计算它,因为我们可以在 MetaTrader 5 交易终端中找到它,我们所需要做的就是在可用指标中选择它,步骤如下所示。
之后,我们将找到其窗口,以确定其参数,如下所示:
1- 设置期望的周期。
2- 确定 WPR 指示线的颜色。
3- 确定 WPR 指示线的样式。
4- 确定 WPR 指示线的宽度。
我们还可以通过 “Levels” 选项卡控制指标的级别,如下所示:
我们在前面的图片中看到,我们有两个级别 -80 和 -20,这两个级别是记录高位读数和低位读数的重要级别。 此外,我们还可以根据我们发现的其它有用级别,视情况添加,譬如,添加 -50 级别,按 “Add”,然后确定要在图表指标窗口上示意的级别。
确定所有所需参数,并按下“确定”后,指标将按如下所示加载到图表上。
正如我们在前一张图片中所见,图表下部窗口中的黑线在 0 和 -100 之间摇摆,可衡量动量。 此外,中位 -50 是一个重要的级别,它对价格走势有着重要的洞察力,因为当 WPR 高于 -50 级别时,这意味着价格在计算周期处于高低区间的上半部分,反之亦然,当 WPR 低于 -50 级别,这意味着价格在计算周期处于高低区间的下半部分。 否则,当我们看到指标读数低于 -80 区域时,这意味着低读数,表明价格接近其低点;但当我们看到指标读数高于 -20 区域,这意味着高读数,表示价格接近其高点。 -80 和 -20 的级别是非常重要的区域,因而它们表明价格达到超买和超卖的区域,这与我们稍后将看到的情况相同。
Williams' %R 策略
在这一部分中,我们将学习如何基于指标的主要概念在简单策略里运用 Williams' %R。 我们将根据 Williams %R 指标背后的思路学习三种不同的策略。 第一种策略,我们称之为 Williams %R - OB 和 OS(超买和超卖);第二种策略,可以称之为 Williams %R - 交叉;第三种策略我们将称之为 Williams %R - 均线。 在以下几行中,我们将辨别如何运用这些策略。
- 策略一: Williams %R - OB 和 OS:
根据这一策略,我们需要根据具体情况在金融产品处于超买或超卖区域时得到通知。 当 Williams %R 值低于 -80 级别时,这将是超卖信号。 当 Williams %R 值高于 -20 级别时,这将是超买信号。
这一策略将有助于在价格达到超买或超卖区域时通知我们,而解读动量状态,能帮助我们预期即将到来的走势。
WPR 值 < -80 --> 超卖
WPR 值 > - 20 --> 超买
- 策略二: Williams %R - 交叉。
根据这一策略,我们需要在当期 Williams %R、前期 Williams %R(WPR)、和 -50 级别之间出现交叉时产生并捕获买入或卖出信号。 若前期 WPR 低于 -50,而当期 WPR 大于 -50 时,这是买入信号。 若前期 WPR 高于 -50,而当期 WPR 低于 -50 时,这是卖出信号。
这一策略会非常有用,因为它根据交叉点生成买入和卖出信号,交叉点非常重要,即 -50,如果我们结合另一个技术工具来确认这些信号,将更加有效。
前期 WPR < -50 且当期 WPR > -50 --> 买入信号
前期 WPR > -50 且当期 WPR < -50 --> 卖出信号
- 策略三: Williams %R - MA:
根据这一策略,当生成买入或卖出信号时,我们也需要得到通知,但这将基于另一个条件,因为当要求大于移动平均值,且 Williams %R 值大于 -50 级别时,我们需要得到买入信号。 而当出价低于移动平均值,且 Williams %R 值低于移动平均时,我们需要获得卖出信号。
这一策略令我们能够根据其条件获得更明确的买入和卖出信号,因为在此处,我们结合了另一种技术工具,即移动平均线,来确认当前信号,并过滤假突破。
要价 > 均线值,且 WPR > -50 --> 买入信号
出价 < 均线值,且 WPR < -50 --> 卖出信号
Williams' %R 策略蓝图
在本主题中,我们将设计一个循序渐进的蓝图,为每个提到的策略创建一个交易系统。 我认为这一步在任何交易系统创建过程中都是非常重要的一步,因为它能帮助我们通过有组织的步骤了解我们需要做什么。
- 策略一: Williams %R - OB 和 OS:
基于这一策略,我们将设计一个循序渐进的蓝图,来创建一个交易系统,因为我们需要程序或智能系统在每次跳价时一次性检查三个值,并进行比较,从而判定其中一个值相对于其它值的位置,这三个值是当期 WPR、-80 和 -20 级别。 智能系统将在之前的比较后,决定当期 WPR 值是否低于 -80 级别,我们需要智能系统在图表上生成带有“超卖”的注释。 在另一个场景中,若当期 WPR 值大于 -20 级别时,我们需要智能系统在图表上生成一个不同的带有 “超买”的注释。
- 策略二: Williams %R - 交叉。
基于此策略,我们需要程序根据检查前一个 WPR、当期 WPR 和 -50 三个值来生成买入或卖出信号。 智能系统在每次跳价时检查这三个值,并根据比较生成信号,从而确定前期和当期 WPR 值在 -50 级别的位置。 根据我们提到的内容,如果前期 WPR 低于 -50,而当期 WPR 值大于 -50,我们将在图表上生成注释,包含生成的买入信号、当期和前期 Williams %R 值。 如果前期 WPR 大于 -50,且当期 WPR 低于 -50,则图表上的注释应包含卖出信号,当期和前期 Williams %R 值。
。
- 策略三: Williams %R 和 MA:
我们需要根据这一策略创建一个交易系统,并根据其它条件或其它度量生成买入或卖出信号。 因为我们需要创建一个简单的智能系统,它能够不断检查要价、出价、WPR 值、移动平均值、和 -50 级别,并据其生成信号。 当智能系统发现要价大于移动平均值,WPR 值大于 -50 级别时,我们需要智能系统生成买入信号、Williams %R 值、和指数移动平均值,作为图表上的注释。 另一种情况是,当出价低于移动平均值,且 WPR 低于 -50 级别时,生成卖出信号、Williams %R 值、和指数移动平均值,作为图表上的注释。
Williams' %R 交易系统
在这一部分中,我们将学习如何为每个提到的策略创建一个交易系统,这是本文最有趣的部分。 首先,我们将创建一个简单的交易系统,在图表上生成含有 Williams' %R 值的注释,以此作为所有策略的基础。
以下是编写的该交易系统的代码:
- 创建 “double” 类型数组,可表达分数值。
double WPArray[];
- 调用 “ArraySetAsSeries” 函数为数组设置排列顺序,该函数会返回布尔值 true 或 false。 此函数的参数是数组 [] 和 标志。
ArraySetAsSeries(WPArray,true);
- 创建保存 Williams %R 定义的整数型变量后,调用 “iWPR” 定义 Williams' %R 属性。 "iWPR" 函数返回 Larry Williams 百分比范围指标的句柄。 参数包括品种名称、周期和均化周期。
- 我们将采用(_Symbol)对应于当前所在品种,并采用(_Period)对应于当前所用的时间帧。
int WPDef = iWPR(_Symbol,_Period,14);
- 调用 “CopyBuffer” 函数复制价格数据到所创建的数组,返回复制的数据计数,如果有错误,则返回 -1。 参数包括指标句柄、指标缓冲时间、开始位置、要复制的数量、和要复制的目标数组。
CopyBuffer(WPDef,0,0,3,WPArray);
- 为当期 Williams' %R 值创建 WPValue 双精度变量后,调用 “NormalizeDouble” 函数获取当期 Williams%R 值。 “NormalizeDouble” 函数的参数是欲标准化的数字,和小数点后的位数。
double WPVal = NormalizeDouble(WPArray[0],2);
- 调用 “Comment” 函数在图表上生成 Williams' %R 值作为注释。
Comment("Williams' %R Value is",WPVal);
我们可以查看以下完整代码,了解之前的交易系统:
//+------------------------------------------------------------------+ //| Simple Williams%R.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double WPArray[]; } //+------------------------------------------------------------------+
编译此代码后,我们可在导航器窗口的 “expert Advisors” 文件夹文件中找到智能系统,如下图所示。