一、摘要
威廉W%R是一种古老的技术指标,在1973年由Larry Williams首创,简称威廉指标或W%R,全称为威廉超买超卖指标。在其发表的《我如何赚得一百万》一书中进行了详细的阐述,这是一个振荡指标,主要是依据价格的摆动点,来判断市场是否处于超买或超卖现象。本篇文章我们就以威廉W%R为蓝本,在发明者量化交易平台(FMZ.CN)开发一个商品期货量化交易策略。
二、威廉W%R原理
威廉指标在公式设计上与随机指标原理类似,它们都是从研究价格波动幅度为出发点,通过分析一段时间之内的最高价、最低价、收盘价的相互关系,以此判断市场市场买卖双方力量的强弱(超买超卖情况),从而预测价格中短期走势。如下图子图为威廉W%R指数:
其主要原理是利用震荡点,来反映市场的超买超卖行为,分析多空双方力量对比,提取出有效的信号,来判断市场中短期价格走势,与其他技术指标一样,威廉指标可以广泛应用于多个周期的行情,包括:日线、周线、月线、小时线、分钟线等各种数据周期。
三、威廉W%R计算
在计算威廉指标之前,首先要确定数据周期,虽然威廉指标可以用于各种数据周期,但每个周期的值都有所区别,比如:在日线中威廉指标的值代表了当天收盘价,在过去一段时间内最高价减去当日收市价,再将其差价除以这段日子的全部价格范围,最后计算出当日的威廉指标。计算公式如下:
W%R = (Hn — C) ÷ (Hn — Ln) × 100
其中:
- C:当根K线收盘价
- Hn:N日内最高价,默认参数为14
- Ln:N日内最低价,默认参数为14
四、威廉W%R使用
威廉指标的计算方法与随机指标类似,其计算后得出的数值是在0——100之间,相反的是威廉指标的值越小,就越反映市场的买量越大;威廉指标的值越大,就越反映市场的卖量越大。通常情况下,威廉值在20——80之间上下波动。
1、当价格跌破80时,表明市场处于超卖状态,价格随时可能见底,如果威廉值长期处于80以下,当上穿80时,表明价格脱离底部区域,进入上升期。
2、当价格升破20时,表明市场处于超买状态,价格随时可能见顶,如果威廉值长期处于20以上,当下穿20时,表明价格脱离顶部区域,进入下降期。
五、策略实现
第1步:设置回测配置
(*backtest
start: 2015-02-22 00:00:00
end: 2021-05-19 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
args: [["ContractType","jm000",126961]]
*)
第2步:计算威廉指标
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
第3步:计算20日均线
MA20 : EMA2(C, 14);
第4步:计算多空条件
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
第5步:下单交易
C1, BPK;
C2, SPK;
六、策略回测
- 回测开始日期:2015-02-22
- 回测结束日期:2021-05-19
- 数据品种:焦煤指数
- 数据周期:日线
- 滑点:开平仓各2跳
回测配置 回测绩效 资金曲线
七、完整策略代码
(*backtest
start: 2015-02-22 00:00:00
end: 2021-05-19 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
args: [["ContractType","jm000",126961]]
*)
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
MA20 : EMA2(C, 14);
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
C1, BPK;
C2, SPK;
上面附上完整策略代码以及回测配置,也可以点击下方链接复制完整策略代码: https://www.fmz.cn/strategy/325936