暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

技术指标代码学习二-WVAD

量化分析之路 2020-03-27
2588

上一节我们讲解了MACD  MACD主要是判断股价的中长期趋势和反转

 

今天要讲的WVAD主要是判断买方和卖方谁比较强势 只是 我自己的理解

 

WVAD(William's Variable Accumulation Distribution),中文名称:威廉变异离散量  其主要的理论精髓,在于重视一天中开盘到收盘之间的价位,而将此区域之上的价位视为压力,区域之下的价位视为支撑,求取此区域占当天总波动的百分比,以便测量当天的成交量中,有多少属于此区域。成为实际有意义的交易量。

第一步  A =开盘价 -收盘价

第二步  B= 最高价-最低价

第三步  C= (A/B*成交量

WVAD=  N ΣC 求和

WVAD5 = (C1+C2+C3+C4+C5)/5



应用法则

 

1.WVAD是测量股价由开盘至收盘期间,多空双方的战斗力均衡

2.WVAD为正值时,代表多方占优。当WVAD由负值变成正值的一刹那,为买入点。

3.WVAD为负值时,代表空方占优。当WVAD由正值变成负值的一刹那,为卖出点。

4.当趋向指标中ADX低于PDI、MDI时,本指标失效。

5.WVAD指标可与EMV指标搭配使用。


回测代码如下

第一部分 准备工作

import numpy as np
import pandas as pd


start = '2017-01-01' # 回测起始时间
end = '2018-01-01' # 回测结束时间
universe = DynamicUniverse('ZZ500') # 证券池,支持股票、基金、期货、指数四种资产
benchmark = 'ZZ500' # 策略参考标准
freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 1 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟

# 配置账户信息,支持多资产多账户
accounts = {
'fantasy_account': AccountConfig(account_type='security', capital_base=10000000)
}


##买入卖出阈值
buy_threshold = 0
sell_threshold = 0

def initialize(context):
wvad = Signal('WVAD') #默认24天
context.signal_generator = SignalGenerator(wvad)


def handle_data(context):
timing(context)

第二部分  买入策略及仓位控制

选择出当天刚WVAD>0的股票 均仓买入 每只股票的仓位不超过10万。


选择出当天WVAD<0的股票 如果有持仓 则全部卖出

def timing(context):
return timing_Basic_WVAD(context)
def timing_Basic_WVAD(context):
##在WVAD>0的时候买入 在WVAD<0的时候卖出(策略)
##基于仓位管理的需要 每只股票的最大投资为100000元(风控)
account = context.get_account('fantasy_account')
current_universe = context.get_universe( exclude_halt=True)
security_position = account.get_positions()
cash = account.cash

buy_list = []

for sec in current_universe:
if context.signal_result['WVAD'][sec] > buy_threshold and sec not in security_position:
buy_list.append(sec)
elif context.signal_result['WVAD'][sec]<sell_threshold and sec in security_position:
account.order_pct_to(sec,0)
cash += security_position[sec].amount *context.current_price(sec)

d = min(len(buy_list),int(cash)//100000)
for sec in buy_list:
account.order(sec,100000/context.current_price(sec))


跑了一下 回测结果也比较一般。



缺点改进

以WVAD是否穿越零轴线,作为买卖标准时有很严重的延误性,往往股价已冲高许多时,才会出现买入信号,反之亦然。也有使用WVAD和WVAD的6日平均线做比较进行研判,但误差率较高,特别是在卖出信号的研判上。改进方案:

首先,将计算公式中的成交量改为成交额,使用成交量或使用成交额对于个股的研判并没有太大的区别,但对基金和大盘的研判效果却大相径庭。其次,针对WVAD设置两条平均线,分别计算WVAD的5天和21天移动平均线,放弃原来单一使用WVAD的研判方法。改进后的WVAD计算公式:

WVAD=当日收盘价-当日开盘价÷当日最高价-当日最低价×成交额

WVAD5=当日收盘价-当日开盘价÷当日最高价-当日最低价×成交额的5日累加÷5

WVAD21=当日收盘价-当日开盘价÷当日最高价-当日最低价×成交额的21日累加÷21

改进WVAD的应用原则:当WVAD的5天线上穿WVAD的21天线时,为买入信号。当WVAD的5天线下穿WVAD的21天线时,为卖出信号。

如:600345长江通信于本月16日发出买入信号,当天股价仅微涨2分钱,其后的两天,该股又平静地拉出两根小阳线,直到上周三下午近2点时该股突然发力上冲,至上周末与发出信号时相比,绝对涨幅已接近3元。该股历史上与此相同的突破有5次,最终都未能演变成大黑马,仅给投资者带来短线利润。不过,这次的情况和以前有很大的不同,其最终的涨幅可能尚不止于此。改进WVAD的应用技巧:

1、5天线位于21天线之下的时间越长,效果越好。如果在5天线位于21天线下之前两者有一段粘合在一起的时间更好。

2、5天线位于21天线之下时,5天线距离21天线越远越好,但有个前提,对于前期暴涨过的股无效。

3、5天线上穿21天线的瞬间,上穿力度越大越好,上穿角度越陡越好。

4、当5天线和21天线粘合在一起,处于纠合缠绕状态时,该指标失效。

5、对于刚上市的新股,由于该指标波动过大,无法应用。

6、以上应用技巧对于卖出信号的研判同样有效,只要相反应用就可以,不再复述。




文章转载自量化分析之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论