威廉W%R是一种古老的技术指标,在1973年由Larry Williams首创,简称威廉指标或W%R,全称为威廉超买超卖指标。在其发表的《我如何赚得一百万》一书中进行了详细的阐述,这是一个振荡指标,主要是依据价格的摆动点,来判断市场是否处于超买或超卖现象。本篇文章我们就以威廉W%R为蓝本,在优宽量化交易平台(youquant.com)开发一个商品期货量化交易策略。
威廉指标在公式设计上与随机指标原理类似,它们都是从研究价格波动幅度为出发点,通过分析一段时间之内的最高价、最低价、收盘价的相互关系,以此判断市场市场买卖双方力量的强弱(超买超卖情况),从而预测价格中短期走势。如下图子图为威廉W%R指数:
其主要原理是利用震荡点,来反映市场的超买超卖行为,分析多空双方力量对比,提取出有效的信号,来判断市场中短期价格走势,与其他技术指标一样,威廉指标可以广泛应用于多个周期的行情,包括:日线、周线、月线、小时线、分钟线等各种数据周期。
在计算威廉指标之前,首先要确定数据周期,虽然威廉指标可以用于各种数据周期,但每个周期的值都有所区别,比如:在日线中威廉指标的值代表了当天收盘价,在过去一段时间内最高价减去当日收市价,再将其差价除以这段日子的全部价格范围,最后计算出当日的威廉指标。计算公式如下:
W%R = (Hn — C) ÷ (Hn — Ln) × 100
其中:
威廉指标的计算方法与随机指标类似,其计算后得出的数值是在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;
回测配置 回测绩效 资金曲线
(*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;template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6