搭建自己的量化系统
股票量化交易系统QTYX是一个即可以用于学习,也可以用于实战炒股分析的系统。
分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统。因此我们提供源码,可以根据自己的风格二次开发。
关于QTYX的使用攻略可以查看链接:QTYX使用攻略
QTYX一直迭代更新,当前版本V3.0.1。后续升级版本会同步更新文档内容。
选股框架说明
QTYX的选股框架流程像是一个漏斗,把A股全市场的5000只股票的数据输入到“漏斗”中,经过逐级的过滤筛选,最终输出几只精挑细选的强势股买入。
目前QTYX提供“数据驱动层”、“形态驱动层”、“组合对比分析层”多层级组合过滤。掌握了这个框架流程后大家可以把自己的思路叠加进去,让QTYX变成和自己风格100%匹配的系统。
本篇文章,我们介绍下如何在“形态驱动层”通过“主升浪”、“底部突破”、“单针探底”这些形态来选股。
场景介绍
主升浪形态应用场景。
当前不断扩容的市场下,从资金的使用效率上来看,一定要聚焦主升浪的强势股。当个股出现均线多头排列形态,同时不断创出近期高点,说明该股正处于主升浪阶段。针对“飞龙在天”战法,获取“数据驱动层”的“涨停明细数据”、“热门题材跟踪”形成股票池,再用主升浪形态选股效果更佳。
底部突破形态应用场景。
通过底部形态可以过滤出符合大牛股上涨初期特征的股票,适合做底部高安全边际票。
单针探底回升形态应用场景。
当市场底部出现的时候,会有很多好股票的廉价筹码,这个时候手上有资金,买入安全系数巨高。
单针探底常出现在下跌行情中,是一根实体较短带着长下影的K线(阴线或者阳线都可以)。
单针探底预示着空头力竭,失去市场主动权,市场底部已基本探明,多头将展开反攻,是一个止跌反转的信号。单针探底形态形成后,若第二日K线为较长的阳线实体,而且其收盘价超过了单针探底形态的最高价,那么投资者可以考虑适量的买入,反之,第二日K线为较长的阴线,则投资者空仓观望。
快速入门
接下来我们以“主升浪启动”为例,说说怎么进行“形态选股”吧!
“策略导航”中的选股模型选择“主升浪启动”。
我们配置下形态选股通用参数。介绍下关键几个选项的作用:
选股日期:选取形态分析的日期(支持选取历史日期用于回测)
上市时间:根据上市时间滤除次新股(工具会过滤掉设置时间之后的次新股)。新股上市后处于暴涨暴跌的态势,走势并不稳定,也没有足够的数据进行回测。选股时候应该提前把这类股票给剔除掉的
剔除ST/*ST:对于ST股来说,面临着极高的退市风险,股民们应该避之不及,选股时候应该提前把这类股票给剔除掉的
同步最新行情:勾选后无需提前下载行情数据,选股时候会自动更新最新行情数据
发送邮件使能:选股完成后会把选股结果发送到手机邮箱上,用于盘中触发选股。邮箱信息在sys_para.json中mailbox中填写
叠加分析数据:目前支持“季度利润报表”和“每日基本面指标”,勾选后会在生成的股票清单中叠加对应数据
股票池:选择扫描的股票池,全市场股票池、自选股票池、概念板块池、行业板块池、ETF基金池
触发时间:可以选择盘后选股和盘中定时触发选股
关于“概念板块池”和“行业板块池”的使用。
很多时候我们更关注当前热门板块的股票。因此,QTYX系统增加了概念板块和行业板块的分类选择。这样一来,可以针对性地选取自己关注板块的个股,同时选股也变得非常快速。
比如选择“概念股票池”后,出现列表对话框。左边是未选择的概念板块,右边是已经选择的。点击左边列表的板块会加入到右边选股列表中,点击右边选股列表的板块则取消,会返回到左边。“行业股票池”同理。关闭板块选取对话框后,股票池生效。
关于盘中定时选股的使用。
前一天盘后生成自选股池,缩小选股范围,提高盘中选股效率。触发时间可以根据自己的喜好定义,勾选“发送邮件使能”后生成的选股结果会发到手机邮箱上。
关于选择ETF基金作为股票池。
在“股票池”选择“ETF基金”选项。ETF兼具股票和指数基金的特色,既能获得股票一样的超额收益,也具备指数稳定的特点。买ETF相当于购买了一篮子股票,能分散投资并降低投资风险。
因此QTYX加入了ETF数据源,可以用形态选股策略选出符合的ETF标的!ETF基金代码存储在/ConfigFiles/etf_fund_info.csv路径下。使用ETF形态策略时,无需提前下载行情数据。
接下来,点击“确认”后配置形态选股参数。勾选“使能”框可以让“均线多头排列”和“突破前高检测”这两个模型可以叠加使用,或者单独使用。“均线多头排列”和“突破前期高点”形态关键参数会在下文中单独介绍。
同样的,通过使能开关也能把“箱体形态突破”和“双底形态突破”两个模型叠加使用。
我们根据自己的交易风格,配置好参数后,点击“确认”就开始选股了,左上角的日志栏会自动切换到【选股日志】显示有符合特征的股票。
符合“主升浪”形态条件的股票清单如下所示。
符合“主升浪”形态条件的ETF清单如下所示,操作和选股的步骤是一致的。
符合“底部突破”形态条件的股票清单如下所示。粉色框图的股票是符合双底形态的,红色框图的股票是符合箱体形态的,如果个股同时符合两种形态,相应的数据列上会标识数据。
如果是盘中选股,当到达触发时间后,就会自动运行选股策略!
手机邮箱也会收到选股结果,类似以下的格式!人工确认下就可以下单。如果对策略有把握了可以增加自动交易功能,直接自动下单!
如果开始选股后,想要取消的话,可以任意点击一个形态选股策略即可恢复到“就绪状态”。
选股完成后会把选股结果保存在“ConfigFiles/全市场选股结果”路径下。接下来就可以展开其他选股流程
均线多头排列算法
有些大牛股启动后会以迅雷不及掩耳之势的风格,开启一轮势不可挡的上涨。
QTYX的“均线多头排列”选股功能,用来支持筛选这种快速暴力上涨的股票。
比如在22年11月25日使用QTYX“均线多头排列” 筛选出“中油资本”,第二天买入持股到12月3日收盘获利有30%多。
我们来看下“中油资本”这只票上涨的形态特征,它是非常典型的“均线多头排列”形态,它的均线系统以多头排列姿态快速发散,K线的实体一直沿着短期均线上涨。在出现这种形态的初期买入的话,上涨效应非常强。
我们来看下“均线多头排列”形态识别算法的参数。
第一条、第二条、第三条、第四条均线是指短期到长期的均线。接下来重点说明下“持续发散的天数”和“发散开口幅度(倍)”的用途。
以实战中的场景为例:
为了更早地发现均线多头排列的强势股,我在12月12日把选股参数里面“持续发散天数”设置为5日,“发散开口幅度(倍)”参数为1.1。 但是这个时候发现选出的股票数量有130只,很多牛股就淹没在里面。 比如“如意集团”和“人人乐”。于是,我对“均线多头排列”的算法做了改进,增加了发散的幅度判断,也就是“发散开口幅度(倍)”这个参数。
当“发散开口幅度(倍)”参数为2.5时,从130只瞬间精选到了13只股票,然后对这13只股票重点分析了成交量和对应板块的轮换,从后续的可持续性上最后聚焦在了“人人乐”和“如意集团”这两只股票。
第二天买入后持股3日涨幅超10%以上。
突破前期高点算法
23年第一第二季度的主线板块毫无疑问是TMT上下游产业链+中特估,这无疑是最受到资金青睐。这种赚钱效应会从其他板块中虹吸大量的资金,导致其他板块下跌。
比如中科曙光、中国科传这些票,不断新高回踩再新高的走势。
随着市场不断地轮动,热门板块中又有一批批个股陆陆续续往上突破前期的高点,开启一轮上涨。
这个时候可以使用“突破前期高点”选股策略,快速过滤出即将突破的、刚突破不久前期高点的个股。
我们来看下“突破前期高点”形态识别算法的参数。
“突破高点幅度下限”和“突破高点幅度上限”用于限定当前股价与前期高位的位置关系。
“突破近N日内高点”表示最近N内的高点,比如距离当前交易日120日内的高点。
“近期上涨趋势检测天数”可以和当前整体市场的上涨相联系起来。
确认后开始自动选股。选股结果如下所示:
接下去可以通过条件表达式根据
“距离前高比例”排序,排序后的选股结果如下所示:
操作上,有两种方式。一种是关注“距离前高比例”为0.95-0.99左右的,有不少个股会大阳线突破,另一种是关注已经突破前高的,如果缩量回踩可以介入。
双底形态突破算法
双底形态是由市场力量形成的,我们只需顺势而为即可,特别是大周期、多K线形成的双底形态,它的效果更好!
双重底也称“W底”,是指股票的价格经过一段下跌后,形成一个低点后展开反弹,随后再次回落,在上一个低点附近形成新的低点,此后股价再次往上运行,这样就形成了两个底部,成为双重底。
两个跌至最低点的连线称为“支撑线”。
两个低点之间的高点价格称为“颈线”价格。
通常放量突破颈线时是一个不错的买点。用供需关系去理解其内在逻辑的话,可以看作在颈线压力位置有大量的需求涌入吸收了供应的筹码,同时出现了供不应求的情况,这使得股价上涨突破了颈线压力,后续持续上涨的概率较大。
突破后会有两种形态:第一种是突破后直接快速拉升;第二种是突破之后缩量回踩颈线位置附近,确认突破有效后再快速拉升。
如上图所示,我们以个股的收盘价时间序列为分析数据。当前交易日期为终点,往前从历史交易日中选择两个连续区间。
这两个区间先按完全相等的范围设定,然后增加一个区间叠加变量,这个变量的作用是可以进一步去过滤像头肩底或者V型底的形态。
当然也可以动态去划分,划分的规则可以根据市场的整体走势来设定。
然后按以下步骤分析:
找区间1的极小值,为左底
找区间2的极小值,为右底
找左底与右底之间区域的极大值
比较左底与右底的涨幅,是否相差<3%(参数可调)
当前日期收盘价是否突破颈线位>3%(参数可调)
当前交易日是否为首次突破颈线位
当前交易日突破时的涨幅是否大于>3%(参数可调)
当前交易日突破时伴随的成交量是否大于近期平均成交量的20%(参数可调)
识
别形态的源代码存放在StrategyGath/PattenGath.py中,感兴趣的朋友可以研究下。
选股数据对话框上点击“确认”,会出现形态识别算法相关参数的配置界面。
总共开放了这些参数:选取K线范围、选取中间区域误差、双底低点之间误差、有效突破确认的幅度、有效突破当天涨跌幅、有效突破成交量阈值。
选股结果保存可以根据需要选择保存的股票。比如“满足突破幅度即保存”表示只要出现双底形态,并且满足突破幅度,无论是否首次突破都会保存。“满足首次突破才保存”表示出现双底形态,同时要满足首次突破才会保存,条件更苛刻点。
大部分参数的含义可以结合算法原理去理解。部分特殊参数的含义说明如下:
“是否为首次突破的判断”。比如我们今天使用工具QTYX去全市场寻找符合形态条件的股票,发现了以下这只股票。这只股票符合双底形态,但是已经突破好几天了(注:如果每天都使用工具筛选一遍是可以发掘到首次突破当天的),现在买入位置并不是非常合适。
我们更倾向于选择那些首次突破颈线的个股,这个时候买入的时机恰到好处。
比如像华数传媒,离突破当天已经有5个交易日了,属于非首次突破!
比如像通程控股,由于我们设置了有效突破的幅度是大于颈线3%以上,因此今天属于首次突破的日子!
此外我们还结合成交量及当日涨跌幅去叠加判断,毕竟底部出现放量跳空上涨时,说明该股更加强势,使双底形态突破后的上涨成功率更大。
(1)比如双底形态突破时结合成交量是否放大,来判断是否为有效突破。有效突破成交量阈值表明,在突破当天的成交量要高于“选取K线范围”内成交量均值的百分之X以上。
(2)比如在双底形态识别的同时判断该股近期是否有向上跳空缺口配合出现,如果有的话可以侧面说明该股的强势。
“双底形态”选股结果包括:股票名称;股票代码;形态识别结果;出现左底的日期和价格;出现右底的日期和价格;出现中间顶部日期和价格;是否满足突破幅度,如果满足突破幅度时当前收盘价格和颈线价格分别是多少;是否满足放量突破,如果满足放量突破时当前成交量和平均成交量分别是多少。
前期建议大家先放宽要求,只要符合双底形态的都先加到csv中,并且人工二次确认。后续等到参数调节非常稳定了,就可以把条件设置严格一些,完全交给工具自动完成。
箱底形态突破算法
大牛股在上涨初期往往会有一些特征信号,根据这些特点过滤出可能成为牛股的标的,然后重点跟踪它们,这无疑是非常有效的选股方式。
我们来看下欢瑞世纪这只票上涨初期的特征。股价在区间内上下波动,20日、30日、60日、120日均线逐步收敛,当一根长阳创近期新高后,均线开始快速发散,从而开启一轮势不可挡的上涨。
通常我们称具有这种牛股初期的特征——“底部均线粘合,长阳突破”为箱体突破形态。
在“选股策略”选择“底部突破(箱体形态&双底形态)”,
可以看到针对箱体形态突破的专用配置界面。
选择箱体形态特征相应的参数。此处参数表示股价在40日均线上下波动不超过15%,20日、30日、60日均线收敛幅度小于5%,当日涨幅超过5%且股价创40日新高。
单针探底形态算法
当市场上绝大部分个股出现“单针探底”形态,然后开启V型反转走势,这类行情非常适合用“单针探底”来应战
!
配置“单针探底”专用的算法参数,对应的参数意义已经在图中标注,配完后点击“确认”开始生效。
从识别的原理上,我们可以通过调节“单针探底的幅度”和“探底后回升的幅度”这两个参数,可以把圆弧底、V型底的形态也一同过滤出来。
形态选股回测
买入符合形态的股票后,到底是亏损还是盈利呢,在持有的时间内如何从盈亏比角度去设计我们的交易系统呢?我们增加了回测功能就能一目了然。比如在持有的时间内,盈利可以超过10%,而亏损只有3%,那么就能从盈亏比角度去设计我们的策略。
回测功能在原理上是统计自从识别出符合形态的股票后(符合形态条件时买入),持有到最新交易日这段时间内,出现盈利和回撤的情况。
于是取两段数据,一段数据用于识别形态(符合形态条件时买入),另一段数据用于计算买入该股后盈亏的情况。
比如我们
选出股票的时间是
2
023年08月14日
,
当前日期是2022年08月25日
,那么会评估从2023年08月14日至2023年08月25日,该股的盈亏情况。
注意:最新的日期取决于更新股票行情数据最新日期。
接下来,我们就来介绍下具体如何使用回测功能。
启动QTYX之后,在页面的左侧有一个“选股结果”索引表,加载了“ConfigFiles/全市场选股结果”中选股结果文件。(形态选股完成后会把选股结果保存在这个路径下,比如“均线多头排列分析结果_2023-08-14_高速版.csv”,这个文件是在2023-08-14选出的符合均线多头排列形态的个股)。
然后只需要点击文件名称就能把选股结果显示在“选股流程”的表格页面中。
同时会询问是否需要对本次选股结果进行回测。选择“Yes”后开始回测,统计出个股从选出日期(比如2023-08-14)至最近交易日(比如2023-11-14)的盈亏情况。
其中包含了持有时间段中最高价格、最低价格、最高时间、最低时间、到达最高天数(新增)、到达最低天数(新增)、最大收益比例%、最大回撤比例%、当前收益%。
其中到达最高天数、到达
match
最低天数、最大收益比例%、最大回撤比例%这四列,
我们可以用来客观地评估选股策略的效用,从而设计出盈亏比用于止盈止损。
到达最高天数,指的是买入股票后该股到达最高收益时所持有的天数。
到达最低天数,指的是买入股票后该股回撤到最大亏损时所持有的天数。
另外,QTYX界面左上角还提供了“回测评估报告”,比如本次选股回测结果如下:
平均最大收益:6.75%
盈利平均持股天数 3.1天
平均最大回撤 -10.59%
放任下跌平均天数 8.04天
注意:通过这份评估报告可知,选股策略选出的股票适合做短线操作,并且一定要结合止损策略。
如果执行了选股流程,新生成了选股结果csv文件,只需要点击“选股结果”列表的主节点就能完成新文件的刷新,不需要重新启动系统,提高大家操作的效率!
回测评估的盈亏明细同时另存在本地,供后续全面地复盘分析,存储路径为/QTYX/ConfigFiles/全市场选股结果,可以通过“离线自定义数据”途径导入QTYX中查看,也可以用Excel打开查看。
如果要对历史的选股结果进行回测评估,可以在生成选股结果时,把“选股日期”调节到历史日期即可。
在
股票交易中,不少交易者容易走入胜率的误区,总觉得策略的胜率要很高才能盈利,其实不然。当一个策略只有普通胜率时,如果能够利用好赔率,也是可以长期盈利的。
比如QTYX的选股框架,目的是抓住大牛股,每次赚的时候赚很多,而亏的时候因为设置好了止损点,只亏一点就止损,这样长期下来仍然可以让利润奔跑。
条件选股分析
形态选股完成后,可以用条件表达式继续选股。点击
“开始条件选股”即可。
比如根据业绩数据选择基本面良好的个股(需要叠加“季度利润报表”)。
也可以根据行业板块轮动思路选择属于近期热门板块的个股(需要叠加“每日基本面指标”)。
双击股票名称或代码也可以使用QTYX其他高级分析功能:
如果想要重新筛选的话,可以通过“离线自定义数据导入”方式把选股结果从存
放的本地位置(ConfigFiles/全市场选股结果)再次导入到QTYX系统中。
加入组合分析池对比分析
形态选股完成后,我们也可以逐个点击股票代码,添加到“组合分析池”。
比如使用“投资组合分析”的走势叠加分析功能,来寻找“华为”相关板块个股中谁更强势。
在“择时参数”页面,我们选择“走势叠加分析”,此时会把“组合分析池”中的个股叠加起来对比分析它们的强弱。在选择日期范围时,可以往前多选择一些交易日,查看在涨停前它们走势的强弱。
这里我们通过批量涨停日(10月12日)前2个月的走势来对比分析一下。
通过对比,我们一目了然知道谁是板块中最强个股,应该关注哪个(赛xx、圣xxx、欧xx)。接下来就可以在实盘中结合市场反馈,择机操作。我们也看到次日(10月13日)这几只股的反馈相当不错。
总结
经过多级筛选后,出来的股票大概率符合近期的强势股范畴,然后可以导入到同花顺的自选股池中。
股票量化分析工具QTYX使用攻略——打通同花顺查阅选股结果(更新2.6.3)
在使用上,我们识别出来的股票池,是一个“大概率”会产生牛股的股票池。
然后再叠加自己其他维度的分析因子,进一步缩小到几只股票作为自己交易目标。
以个人的使用经验来看,追击龙头是收益和风险并存的策略,在集合竞价开始的时候观察选出来的题材是否依然延续强势。大家在追击的同时一定要设置好止损点,有时候高赔率比高胜率更重要!
单针探底策略不同于主升浪形态策略,比较适合耐心等待、潜伏出击的操作风格,对于有点恐高的人,可以考虑这类操作。
底部形态的核心玩法是设置好止盈止损的点位,保证整体的盈亏比,亏的时候亏一点就止损,赚的时候赚个盆满钵满。
交易其实很简单,有时候亏钱是我们把它
想得太复杂了!
说明
想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!
知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览