前言
在量化分析工具QTYX上,我们新增了双底形态的识别功能,不少星球小伙伴结合这个方式选出了上涨初期的个股,同时根据实战应用中的一些经验反馈给我了不少需求,大家一起来优化这个策略体系,不断完善这个体系的同时也能帮助大家一起赚钱,一举两得!
目前这个选股思路在实战中效果整体不错,我打算沿着这个策略逐步深入优化。这个过程中是一种持续迭代的过程,我们会不断地调整策略算法的细节,因此我们先提供单独的版本供大家学习和调试,降低大家的运行的难度,提高大家二次更改的灵活度,等这个策略稳定后会更新到量化分析工具QTYX中。
使用小技巧
首先建议大家尽量把参数设置得苛刻一点,宁缺毋滥一点。
比如【有效突破当天涨跌幅%】【有效突破偏差】设置得低一点,会出现很多以下走势的个股,虽然也是双底突破,但是非常弱。
比如【有效突破当天涨跌幅%】【有效突破偏差】设置得高一点,可以过滤掉很多假突破真诱多的股票,选出来的强势股概览会大幅提高。
主要原因是出现双底走势是强势股的必要条件,而不是充分条件,所以尽量利用苛刻的参数去由形态反向搜索强势股,这样选中的概率更高。
另外也要配合一定的仓位管理和止损策略,当出现判断失误的时候一定要果断止损。
叠加跳空缺口
这次我们优化功能是在双底形态识别的同时判断该股近期是否有向上跳空缺口配合出现,如果有的话可以侧面说明该股的强势。
跳空缺口是K线形态中一种威力很大的形态,它是指相邻的两根K线之间出现了没有交易的空白区间,当今日最低价与昨日最高价之间没有重合部分,称为向上缺口,当今日最高价与昨日最低价之间没有重叠部分,称为向下缺口。
股价留下缺口,不仅仅是当日投资者激烈情绪的反映,在很多情况下,这种缺口对于判断后市是具有一定意义的。
我们设计了一个策略去判断跳空缺口,这里我们的算法思路如下:
如果今日是上涨趋势,今日的最低价大于昨日的最高价,并且达到设定的阈值时为向上跳空缺口;
如果今日是下跌趋势,昨天最低价大于今日最高价,并且达到设定的阈值时为向下跳空缺口。
光是跳空幅度大于阈值还不够,我们还结合成交量及当日涨跌幅去叠加判断,毕竟底部出现放量跳空上涨时,说明该股更加强势。
比如以下参数设置的叠加条件是:成交量大于近期平均值*1.1;涨幅大于2%。
# 定义跳空缺口识别参数
DEF_JUMP_THR = 0.01 # 跳空阈值 收盘价中位数*0.01
DEF_CHANGE_RAT = 2 # 当日上涨幅度 %
DEF_VOLUME_RAT = 1.1 # 成交量均值比例
什么是双底形态
双重底也称“W底”,是指股票的价格经过一段下跌后,形成一个低点后展开反弹,随后再次回落,在上一个低点附近形成新的低点,此后股价再次往上运行,这样就形成了两个底部,成为双重底。
两个跌至最低点的连线称为“支撑线”。
两个低点之间的高点价格称为“颈线”价格。
通常放量突破颈线时是一个不错的买点。
突破后会有两种形态:第一种是突破后直接快速拉升;第二种是突破之后缩量回踩颈线位置附近,确认突破有效后再快速拉升。
识别形态的算法分析
如上图所示,我们以个股的收盘价时间序列为分析数据。当前交易日期为终点,往前从历史交易日中选择两个连续区间。
这两个区间先按完全相等的范围设定,然后增加一个区间叠加变量,这个变量的作用是可以进一步去过滤像头肩底或者V型底的形态。
当然也可以动态去划分,划分的规则可以根据市场的整体走势来设定。
然后按以下步骤分析:
找区间1的极小值,为左底
找区间2的极小值,为右底
找左底与右底之间区域的极大值
比较左底与右底的涨幅,是否相差<3%(参数可调)
当前交易日收盘价是否突破颈线位>3%(参数可调)
当前交易日是否为首次突破颈线位
当前交易日突破时的涨幅是否大于>3%(参数可调)
当前交易日突破时伴随的成交量是否大于近期平均成交量的20%(参数可调)
如何使用形态识别功能
代码中总共开放了8个参数:选取K线范围、选取中间区域误差、双底低点之间误差、有效突破确认的幅度、有效突破当天涨跌幅、有效突破成交量阈值
、检测双底突破是否带跳空缺口。
DOUBOT_DETECT_DATES_RANGE = 60, # 往前寻找的范围
DOUBOT_DETECT_DATES_MID=30, # 区间划分中间点
DOUBOT_DETECT_DATES_VAR = 5, # 可变区间
DOUBOT_MIN_DIFF_FACTOR = 0.03, # 最小值误差
DOUBOT_BREAK_PCTCHG_VAR = 0.01, # 有效突破当天涨跌幅
DOUBOT_BREAK_RATIO_FACTOR = 0.03, # 有效突破偏差
DOUBOT_BREAK_VOLUME_THR = 0.03 # 放量突破比例 默认超过平均的30%
DETECT_JUMP_GAP_ENABEL = True # 检测双底突破是否带跳空缺口 True为检测
比如有效突破成交量阈值表明,在突破当天的成交量要高于“选取K线范围”内成交量均值的百分之X以上。
点击确认后,开始自动识别,当前分析产生的结果有以下几种:
形态无效: 滤除股票 东方生物,代码 sh.688298
形态有效: 股票中红医疗, 代码sz.300981 分析结果如下:
a) 双底形态判断有效:左底 2021-06-22/102.6元; 右底 2021-07-26/101.63元; 中顶 2021-07-15/116.18元;
b) 未形成有效突破幅度!
形态有效: 股票辉煌科技, 代码sz.002296 分析结果如下:
a) 双底形态判断有效:左底 2021-07-01/6.72元; 右底 2021-07-28/6.62元; 中顶 2021-07-22/7.16元;
b) 双底形态突破幅度有效:当前收盘价 7.39元; 颈线价格 7.16元;
c) 双底形态突破放量有效:当前成交量 87619.64手; 平均成交量 62783.05307692308手;
形态有效: 股票民生控股, 代码sz.000416 分析结果如下:
a) 双底形态判断有效:左底 2021-07-28/3.5元; 右底 2021-10-20/3.53元; 中顶 2021-09-13/4.04元;
b) 双底形态突破幅度有效:当前收盘价 4.27元; 颈线价格 4.04元;
c) 当日为首次突破!!!--双底形态突破涨幅有效:当前涨幅 0.1005%;
d) 双底形态突破放量有效:当前成交量 174243手; 平均成交量 51667.8813559322手;
e) 检测[sz.000416 民生控股]近期向上跳空缺口
f) 检测到2021-10-22出现向上跳空缺口, 跳空能量为4.23!
分析结果会自动存入txt格式的日志中和csv格式的表格文件中。
为了保险起见,大家筛选出来的股票尽量人工确认一番,然后结合其他角度的分析去决定是否购买。
量化机器人远程提醒
由于筛选全市场4000多只股票耗时比较长,通常我是让服务器自动运行的,运行完成后,以邮件方式通知到我手机微信上(只需要在微信上开启QQ邮箱提醒功能即可),让我去看运行的结果。
具体介绍可以看这篇文章:
适合加班族的量化选股场景——还没到家就收到量化机器人的选股报告
10月25日至11月1日加入星球者,可以免费体验这个场景服务,我用我搭建的云服务器,每天20点远程推送双底形态识别结果到你的手机QQ邮箱,限10人先到先得。
说明
1. 我们会把完整的源码上传到知识星球《玩转股票量化交易》中,帮助小伙伴们更好地掌握这个方法。
2. 想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利,名额有限先到先得!
元宵大师的量化交易书籍开售!!
京东、当当、天猫有售!!