阅读 13664

小散量化炒股记|只用一分钟选出底部放量跳空上扬的强势股

欢迎大家订阅《Python数据分析实战:构建股票量化交易系统》小册子,学完小册上的知识点后,一定要学以致用的方式来辅助我们分析股票!

前言

最近A股市场行情火爆,对股民们来说,选到一只强势股是梦寐以求的事情,因为只有强势股才能让自己的收益跑赢大盘,不然只能眼巴巴看着指数不断上涨,而手上的股票却不动声色,懊恼不已!

相信大家都听说了量化交易这个东西了吧!不过目前国内外介绍量化的书籍、课程之类的,大多是金融背景的人编写的,所以他们的角度和我们普通股民会有些不同。偏研究分析的模型算法可能我们看不懂、用不到,有些量化系统针对于机构操盘搭建的,也不适合小资金的普通股民。

那么,什么才是普通股民所适合的量化交易打开方式呢?本文就用一个接地气的选股场景来和大家分享一下,普通股民如何去使用量化交易!

什么是跳空缺口

K线形态中有一种威力很大的形态——跳空缺口。跳空缺口指相邻的两根K线之间出现了没有交易的空白区间,当今日最低价与昨日最高价之间没有重合部分,称为向上缺口,当今日最高价与昨日最低价之间没有重叠部分,称为向下缺口。

股价留下缺口,不仅仅是当日投资者激烈情绪的反映,在很多情况下,这种缺口对于判断后市是具有一定意义的。

于是我们结合量化交易这个工具来过滤下近期出现向上跳空缺口的股票,因为这类股票相对来说后市的走势会更强劲。

如何实现

第一步,我们要获取A市场中目标板块的个股数据,我们以证券、地产、水泥、银行、医疗保健、保险、半导体、元器件这几个板块为分析标的。

获取股票数据的方式有很多,比如Baostock、Tushare、聚宽、通达信……都可以。此处我们以Tushare为例,先获取股票清单,代码如下所示:

df_basic = pro.stock_basic(exchange='', list_status='L')
# 剔除2017年以后上市的新股次新股
df_basic = df_basic[df_basic['list_date'].apply(int).values < 20170101]

# 剔除st股
df_basic = df_basic[df_basic['name'].apply(lambda x: x.find('*ST') < 0)]

df_basic = df_basic[(df_basic["industry"] == u"证券") | (df_basic["industry"] == u"全国地产")
                    | (df_basic["industry"] == u"银行") | (df_basic["industry"] == u"水泥")
                    | (df_basic["industry"] == u"保险") | (df_basic["industry"] == u"医疗保健")
                    | (df_basic["industry"] == u"半导体") | (df_basic["industry"] == u"元器件")]
get_codes = dict(zip(df_basic.ts_code.values, df_basic.industry.values]))                   
复制代码

然后就通过一个循环,用pro.daily(ts_code=code_val, start_date=start_val, end_date=end_val) 这个接口获取个股近一个月的数据。

到这一步,我们的数据环节就解决了。

第二步,我们应该设计一个策略去判断跳空缺口,这里我们的算法思路如下:

  • 如果今日是上涨趋势,今日的最低价大于昨日的最高价,并且达到设定的阈值时为向上跳空缺口;

  • 如果今日是下跌趋势,昨天最低价大于今日最高价,并且达到设定的阈值时为向下跳空缺口。

我们以此为目的编写一个策略,关键代码如下所示:

for kl_index in np.arange(0, self.stock_dat.shape[0]):
    today = self.stock_dat.iloc[kl_index]  # 若版本提示已经弃用 可使用loc或iloc替换
    today = today.copy()
    if (today['changeRatio'] > 0) and ((today.Low - today.preClose) > jump_threshold):
        # 向上跳空 (今最低-昨收)/阈值
        today['jump_power'] = (today.Low - today.preClose) / jump_threshold
        self.jump_pd = self.jump_pd.append(today)
    elif (today['changeRatio'] < 0) and ((today.preClose - today.High) > jump_threshold):
        # 向下跳空 (昨收-今最高)/阈值
        today['jump_power'] = (today.High - today.preClose) / jump_threshold
        self.jump_pd = self.jump_pd.append(today)
复制代码

光是跳空幅度大于阈值还不够,我们可以结合成交量去叠加判断,毕竟底部出现放量跳空上涨时,说明该股更加强势。

说了这么多,最后让我们结合数据去进行分析,运行下程序看看能不能选出强势股。

我们摘取其中的一些日志来分析下看看!

changeRatio表示涨跌幅;preClose表示昨日收盘价;jump_power表示跳空能量。

叠加的选择条件是:成交量大于近期平均值*0.5;涨幅大于2%。

比如检测000783时,我们发现了6月15日和7月6日分别出现了符合条件的跳空缺口。尤其是6月15日出现跳空缺口后出现了几个交易的调整,为下一次拉升蓄势。如果我们在6月15的时候能够关注到这个跳空缺口,是很有指导意义的!

总结

通过这个简单而又实用的股票量化场景,希望能够给广大朋友对于量化交易有一个直观的感受。

然后,我们应该升级自己的炒股方式了,把自己以前炒股的那套方法,抽象成策略模型,用量化的方法去全市场回测评估,然后让程序帮助我们监测行情的走势。这个才是普通股民所适合的量化交易打开方式!

————————————————————————————————————————————————

大家如果想对涉及到的知识点进行更全面、更体系的从0-1方式的介绍,这里推荐给大家我的书籍《Python股票量化交易从入门到实践》!天猫、京东、当当全面开售!

同时也欢迎大家关注我的微信公众号【元宵大师带你用Python量化交易】了解更多Python量化交易相关内容

文章分类
人工智能